Community
Participate
Working Groups
Right now, if there is a failure at any one point of the rendering cycle, the entire application will not be brought up. We need to use ISafeRunnables and log failures so that one misbehaving part does not prevent the application from coming up.
We have failures on shutdown at the moment that is preventing the unrendering request from completing. At the moment, it is not clear why this NPE occurs but one element not being able to be unrendered properly should not prevent the workbench from shutting down. java.lang.NullPointerException at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.clearContext(PartRenderingEngine.java:557) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:544) at org.eclipse.e4.ui.workbench.renderers.swt.ElementReferenceRenderer.disposeWidget(ElementReferenceRenderer.java:108) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:532) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:528) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:528) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:528) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:528) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:528) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:528) at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1355) at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:1059) at org.eclipse.ui.internal.WorkbenchWindow.access$9(WorkbenchWindow.java:1038) at org.eclipse.ui.internal.WorkbenchWindow$6.run(WorkbenchWindow.java:1085) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:1083) at org.eclipse.ui.internal.Workbench$14.run(Workbench.java:1048) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:1042) at org.eclipse.ui.internal.Workbench.access$11(Workbench.java:956) at org.eclipse.ui.internal.Workbench$15.run(Workbench.java:1118) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.ui.internal.Workbench.close(Workbench.java:1116) at org.eclipse.ui.internal.Workbench.close(Workbench.java:1089) at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:1056) at org.eclipse.ui.internal.WorkbenchWindow.access$9(WorkbenchWindow.java:1038) at org.eclipse.ui.internal.WorkbenchWindow$6.run(WorkbenchWindow.java:1085) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:1083) at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:1099) at org.eclipse.ui.internal.WorkbenchWindow$4.close(WorkbenchWindow.java:427) at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer$8.shellClosed(WBWRenderer.java:421)
Delivered a change to PartRenderingEngine to wrap removeGui(MUIElement) in an ISafeRunnable due to bug 326699.
Created attachment 195516 [details] PartRenderingEngine patch v1 Change the engine to use the SafeRunner for both of its createGui(*) calls.
(In reply to comment #3) > Created attachment 195516 [details] > PartRenderingEngine patch v1 Patch released to CVS HEAD. Now the engine won't choke if an element could not be rendered.
Verified by source inspection with I20110516-1455.