Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 327701

Summary: NPE in rendering engine when closing perspective with uninstantiated editors
Product: [Eclipse Project] e4 Reporter: Remy Suen <remy.suen>
Component: UIAssignee: Remy Suen <remy.suen>
Status: VERIFIED FIXED QA Contact: Eric Moffatt <emoffatt>
Severity: normal    
Priority: P3    
Version: 1.0   
Target Milestone: 4.1 M3   
Hardware: All   
OS: All   
Whiteboard:
Attachments:
Description Flags
ElementReferenceRenderer patch v1 none

Description Remy Suen CLA 2010-10-13 14:39:04 EDT
1. Launch an inner.
2. Open two files.
3. Close the inner.
4. Restart the inner.
5. Open the 'Debug' perspective'.
6. Window > Close Perspective
7. An NPE occurs.

java.lang.NullPointerException
	at org.eclipse.e4.ui.workbench.renderers.swt.ElementReferenceRenderer.disposeWidget(ElementReferenceRenderer.java:127)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:588)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:584)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:584)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:584)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:584)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$1.handleEvent(PartRenderingEngine.java:130)
	at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:41)
	at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:188)
	at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:198)
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
	at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:139)
	at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)
	at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39)
	at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:73)
	at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:58)
	at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:380)
	at org.eclipse.e4.ui.model.application.ui.impl.UIElementImpl.setToBeRendered(UIElementImpl.java:288)
	at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.removePerspectiveModel(ModelServiceImpl.java:642)
	at org.eclipse.ui.internal.WorkbenchPage.closePerspective(WorkbenchPage.java:1137)
	at org.eclipse.ui.internal.WorkbenchPage.closePerspective(WorkbenchPage.java:1161)
	at org.eclipse.ui.internal.WorkbenchPage.closePerspective(WorkbenchPage.java:1148)
	at org.eclipse.ui.internal.handlers.ClosePerspectiveHandler.execute(ClosePerspectiveHandler.java:39)
Comment 1 Remy Suen CLA 2010-10-13 15:02:13 EDT
Created attachment 180814 [details]
ElementReferenceRenderer patch v1

Reparenting contexts certainly is valid but not all MContexts may be rendered due to our lazy loading policy.
Comment 2 Remy Suen CLA 2010-10-13 15:04:08 EDT
(In reply to comment #1)
> Created an attachment (id=180814) [details]
> ElementReferenceRenderer patch v1

Patch released to CVS HEAD with an additional inlined comment.
Comment 3 Remy Suen CLA 2010-10-26 10:25:23 EDT
Verified on Windows XP with I20101025-1602.