Community
Participate
Working Groups
Build Identifier: M3 4.1 running my 3.6 based app on e4 I get an Exception on shutdown of the workbench. Remy said it may be related to https://bugs.eclipse.org/bugs/show_bug.cgi?id=308492 org.eclipse.e4.core.di.InjectionException: org.eclipse.swt.SWTException: Widget is disposed at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:59) at org.eclipse.e4.core.internal.contexts.ContextObjectSupplier$ContextInjectionListener.update(ContextObjectSupplier.java:75) at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:90) at org.eclipse.e4.core.internal.contexts.EclipseContext.processScheduled(EclipseContext.java:326) at org.eclipse.e4.core.internal.contexts.EclipseContext.set(EclipseContext.java:343) at org.eclipse.e4.core.internal.contexts.EclipseContext.activate(EclipseContext.java:596) at org.eclipse.e4.core.internal.contexts.EclipseContext.activateBranch(EclipseContext.java:601) at org.eclipse.e4.ui.internal.workbench.PartActivationHistory.activate(PartActivationHistory.java:52) at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.activate(PartServiceImpl.java:484) at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.activate(PartServiceImpl.java:457) at org.eclipse.e4.ui.internal.workbench.swt.AbstractPartRenderer.activate(AbstractPartRenderer.java:105) at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer$3.handleEvent(ContributedPartRenderer.java:171) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1058) at org.eclipse.swt.widgets.Shell.setActiveControl(Shell.java:1447) at org.eclipse.swt.widgets.Control.sendFocusEvent(Control.java:2642) at org.eclipse.swt.widgets.Widget.wmSetFocus(Widget.java:2402) at org.eclipse.swt.widgets.Control.WM_SETFOCUS(Control.java:4797) at org.eclipse.swt.widgets.Canvas.WM_SETFOCUS(Canvas.java:448) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4234) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4891) at org.eclipse.swt.internal.win32.OS.DestroyWindow(Native Method) at org.eclipse.swt.widgets.Control.destroyWidget(Control.java:684) at org.eclipse.swt.widgets.Widget.release(Widget.java:818) at org.eclipse.swt.widgets.Widget.dispose(Widget.java:446) at org.eclipse.jface.action.ToolBarManager.dispose(ToolBarManager.java:153) at org.eclipse.ui.internal.forms.widgets.FormHeading$6.widgetDisposed(FormHeading.java:772) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:123) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1058) at org.eclipse.swt.widgets.Widget.release(Widget.java:808) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872) at org.eclipse.swt.widgets.Widget.release(Widget.java:811) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872) at org.eclipse.swt.widgets.Widget.release(Widget.java:811) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872) at org.eclipse.swt.widgets.Widget.release(Widget.java:811) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872) at org.eclipse.swt.widgets.Widget.release(Widget.java:811) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872) at org.eclipse.swt.widgets.Widget.release(Widget.java:811) at org.eclipse.swt.widgets.Widget.dispose(Widget.java:446) at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.disposeWidget(SWTPartRenderer.java:134) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeRemoveGui(PartRenderingEngine.java:628) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$1(PartRenderingEngine.java:591) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:586) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:572) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeRemoveGui(PartRenderingEngine.java:624) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$1(PartRenderingEngine.java:591) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:586) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:572) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeRemoveGui(PartRenderingEngine.java:624) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$1(PartRenderingEngine.java:591) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:586) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:572) at org.eclipse.e4.ui.workbench.renderers.swt.ElementReferenceRenderer.disposeWidget(ElementReferenceRenderer.java:108) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeRemoveGui(PartRenderingEngine.java:628) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$1(PartRenderingEngine.java:591) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:586) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:572) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeRemoveGui(PartRenderingEngine.java:624) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$1(PartRenderingEngine.java:591) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:586) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:572) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeRemoveGui(PartRenderingEngine.java:624) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$1(PartRenderingEngine.java:591) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:586) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:572) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeRemoveGui(PartRenderingEngine.java:624) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$1(PartRenderingEngine.java:591) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:586) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:572) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeRemoveGui(PartRenderingEngine.java:624) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$1(PartRenderingEngine.java:591) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:586) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:572) at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1389) at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:1091) at org.eclipse.ui.internal.WorkbenchWindow.access$9(WorkbenchWindow.java:1070) at org.eclipse.ui.internal.WorkbenchWindow$6.run(WorkbenchWindow.java:1117) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:1115) at org.eclipse.ui.internal.Workbench$14.run(Workbench.java:1040) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:1034) at org.eclipse.ui.internal.Workbench.access$11(Workbench.java:952) at org.eclipse.ui.internal.Workbench$15.run(Workbench.java:1114) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.ui.internal.Workbench.close(Workbench.java:1112) at org.eclipse.ui.internal.Workbench.close(Workbench.java:1085) at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:1088) at org.eclipse.ui.internal.WorkbenchWindow.access$9(WorkbenchWindow.java:1070) at org.eclipse.ui.internal.WorkbenchWindow$6.run(WorkbenchWindow.java:1117) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:1115) at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:1131) at org.eclipse.ui.internal.WorkbenchWindow$4.close(WorkbenchWindow.java:431) at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer$8.shellClosed(WBWRenderer.java:419) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:98) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062) at org.eclipse.swt.widgets.Decorations.closeWidget(Decorations.java:308) at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:1665) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4167) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341) at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598) at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2061) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4891) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2456) at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:497) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4256) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341) at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598) at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2061) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4891) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2456) at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:497) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4256) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341) at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598) at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2061) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4891) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2461) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3673) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$6.run(PartRenderingEngine.java:780) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:689) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:104) at org.eclipse.ui.internal.Workbench$3.run(Workbench.java:542) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:524) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at de.eiswind.paris.client.core.Application.start(Application.java:35) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:621) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:576) at org.eclipse.equinox.launcher.Main.run(Main.java:1409) at org.eclipse.equinox.launcher.Main.main(Main.java:1385) Reproducible: Always Steps to Reproduce: 1. Create a FormEditor 2. Open it 3. Shutdown workbench
Second part of the exception: Caused by: org.eclipse.swt.SWTException: Widget is disposed at org.eclipse.swt.SWT.error(SWT.java:4091) at org.eclipse.swt.SWT.error(SWT.java:4006) at org.eclipse.swt.SWT.error(SWT.java:3977) at org.eclipse.swt.widgets.Widget.error(Widget.java:468) at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:340) at org.eclipse.swt.widgets.Widget.getData(Widget.java:525) at org.eclipse.ui.part.MultiPageEditorPart.getEditor(MultiPageEditorPart.java:610) at org.eclipse.ui.part.MultiPageEditorPart.getActiveEditor(MultiPageEditorPart.java:534) at org.eclipse.ui.forms.editor.FormEditor.getActiveEditor(FormEditor.java:430) at org.eclipse.ui.part.MultiPageEditorPart.getAdapter(MultiPageEditorPart.java:1173) at org.eclipse.ui.internal.util.Util.getAdapter(Util.java:110) at org.eclipse.ui.internal.WorkbenchPage.getShowInSource(WorkbenchPage.java:236) at org.eclipse.ui.internal.WorkbenchPage.getContext(WorkbenchPage.java:240) at org.eclipse.ui.internal.WorkbenchPage.updateShowInSources(WorkbenchPage.java:228) at org.eclipse.ui.internal.WorkbenchPage.updateActivations(WorkbenchPage.java:171) at org.eclipse.ui.internal.WorkbenchPage.access$7(WorkbenchPage.java:166) at org.eclipse.ui.internal.WorkbenchPage$E4PartListener.partActivated(WorkbenchPage.java:134) at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.firePartActivated(PartServiceImpl.java:170) at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.setPart(PartServiceImpl.java:144) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:52)
Is this consistently reproducible? I can't seem to get it to happen with the PDE editors.
Yes happens on every shutdown at my side. Don't know how to provide further help. Let me know
(In reply to comment #3) > Yes happens on every shutdown at my side. Do you get the problem if you launch a second Eclipse instance and shutdown with PDE editors up?
no it happens only with my own editors. maybe its in getAdapter where i should provide something from the superclasses ?
(In reply to comment #5) > no it happens only with my own editors. If you make a very simple form editor (just make a few pages and put buttons in them or something), does the same problem occur? > maybe its in getAdapter where i should > provide something from the superclasses ? No, I don't think that's the problem. And if it is, why does your code work in 3.x? :)
The editor is only some pages with textfields, labels and tables. But I have Actions in the Form Header Toolbar at org.eclipse.swt.widgets.Widget.dispose(Widget.java:446) at org.eclipse.jface.action.ToolBarManager.dispose(ToolBarManager.java:153) at org.eclipse.ui.internal.forms.widgets.FormHeading$6.widgetDisposed(FormHeading.java:772) is it there ?
(In reply to comment #7) > The editor is only some pages with textfields, labels and tables. But I have > Actions in the Form Header Toolbar > at org.eclipse.swt.widgets.Widget.dispose(Widget.java:446) > at org.eclipse.jface.action.ToolBarManager.dispose(ToolBarManager.java:153) > at > org.eclipse.ui.internal.forms.widgets.FormHeading$6.widgetDisposed(FormHeading.java:772) > > is it there ? It's possible that's the cause although I think the PDE editors also have actions. If you comment out the action contribution code does the problem stop happening?
Yes, if I completely remove the actions from the form toolbar, the exception does not occur anymore
Created attachment 183311 [details] WorkbenchWindow patch v1 Hi Thomas, could you give this patch a spin and see if it fixes your problem? Thanks.
Patch makes Exception go away.
(In reply to comment #10) > Created an attachment (id=183311) [details] > WorkbenchWindow patch v1 Fix released to HEAD. Thanks for helping investigate the cause and testing the fix, Thomas! Please feel free to let us know if you see any other problems.