Community
Participate
Working Groups
I checked existing PR, but this one seems to be different. I got this restarting an existing workspace using I200406080800. eclipse.buildId=I200406080800 java.fullversion=J2RE 1.4.2 IBM J9 build 20040422 (JIT enabled) BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=fr_CA Command-line arguments: -showlocation !ENTRY org.eclipse.core.runtime 4 2 juin 08, 2004 11:38:18.925 !MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.core.runtime". !STACK 0 org.eclipse.jface.util.Assert$AssertionFailedException: Assertion failed: at java.lang.Throwable.<init>(Throwable.java) at java.lang.Throwable.<init>(Throwable.java) at org.eclipse.jface.util.Assert$AssertionFailedException.<init>(Assert.java:54) at org.eclipse.jface.util.Assert.isTrue(Assert.java:168) at org.eclipse.jface.util.Assert.isTrue(Assert.java) at org.eclipse.ui.internal.presentations.DefaultPartPresentation.getTabFolder(DefaultPartPresentation.java) at org.eclipse.ui.internal.presentations.DefaultEditorPresentation$1.propertyChange(DefaultEditorPresentation.java:70) at org.eclipse.ui.plugin.AbstractUIPlugin$2.run(AbstractUIPlugin.java:267) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java) at org.eclipse.core.runtime.Platform.run(Platform.java) at org.eclipse.ui.plugin.AbstractUIPlugin$CompatibilityPreferenceStore.firePropertyChangeEvent(AbstractUIPlugin.java:265) at org.eclipse.ui.plugin.AbstractUIPlugin$1.propertyChange(AbstractUIPlugin.java:205) at org.eclipse.core.internal.preferences.PreferenceForwarder.preferenceChange(PreferenceForwarder.java:115) at org.eclipse.core.internal.preferences.EclipsePreferences$4.run(EclipsePreferences.java:743) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java) at org.eclipse.core.runtime.Platform.run(Platform.java) at org.eclipse.core.internal.preferences.EclipsePreferences.preferenceChanged(EclipsePreferences.java) at org.eclipse.core.internal.preferences.EclipsePreferences.putBoolean(EclipsePreferences.java:769) at org.eclipse.core.internal.preferences.PreferenceForwarder.setValue(PreferenceForwarder.java:226) at org.eclipse.ui.plugin.AbstractUIPlugin$CompatibilityPreferenceStore.setValue(AbstractUIPlugin.java:481) at org.eclipse.ui.internal.ActivityPersistanceHelper.saveEnabledStates(ActivityPersistanceHelper.java:110) at org.eclipse.ui.internal.ActivityPersistanceHelper.shutdown(ActivityPersistanceHelper.java:119) at org.eclipse.ui.internal.Workbench.shutdown(Workbench.java:1638) at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:468) at org.eclipse.ui.internal.Workbench.access$8(Workbench.java:399) at org.eclipse.ui.internal.Workbench$12.run(Workbench.java:571) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java) at org.eclipse.ui.internal.Workbench.close(Workbench.java:569) at org.eclipse.ui.internal.Workbench.close(Workbench.java:545) at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:463) at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:448) at org.eclipse.ui.internal.WorkbenchWindow$1.run(WorkbenchWindow.java:536) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java) at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:534) at org.eclipse.jface.window.Window.handleShellCloseEvent(Window.java:593) at org.eclipse.jface.window.Window$2.shellClosed(Window.java:544) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java) at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:1487) at org.eclipse.swt.widgets.Control.windowProc(Control.java) at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java) at org.eclipse.swt.widgets.Display.windowProc(Display.java) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java) at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java) at org.eclipse.swt.widgets.Control.windowProc(Control.java) at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java) at org.eclipse.swt.widgets.Display.windowProc(Display.java) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java) at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java) at org.eclipse.swt.widgets.Control.windowProc(Control.java) at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java) at org.eclipse.swt.widgets.Display.windowProc(Display.java) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1363) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1334) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:253) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:141) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:96) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:334) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:273) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:128) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:84) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:59) at java.lang.reflect.Method.invoke(Method.java:390) at org.eclipse.core.launcher.Main.basicRun(Main.java:185) at org.eclipse.core.launcher.Main.run(Main.java:638) at org.eclipse.core.launcher.Main.main(Main.java:622)
*** Bug 66242 has been marked as a duplicate of this bug. ***
I get this at shutdown. Here is my stack trace: !MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.core.runtime". !STACK 0 org.eclipse.jface.util.Assert$AssertionFailedException: Assertion failed: at org.eclipse.jface.util.Assert.isTrue(Assert.java:168) at org.eclipse.jface.util.Assert.isTrue(Assert.java:154) at org.eclipse.ui.internal.presentations.DefaultPartPresentation.getTabFolder(DefaultPartPresentation.java:627) at org.eclipse.ui.internal.presentations.DefaultEditorPresentation$1.propertyChange(DefaultEditorPresentation.java:70) at org.eclipse.ui.plugin.AbstractUIPlugin$2.run(AbstractUIPlugin.java:267) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:615) at org.eclipse.core.runtime.Platform.run(Platform.java:758) at org.eclipse.ui.plugin.AbstractUIPlugin$CompatibilityPreferenceStore.firePropertyChangeEvent(AbstractUIPlugin.java:265) at org.eclipse.ui.plugin.AbstractUIPlugin$1.propertyChange(AbstractUIPlugin.java:205) at org.eclipse.core.internal.preferences.PreferenceForwarder.preferenceChange(PreferenceForwarder.java:115) at org.eclipse.core.internal.preferences.EclipsePreferences$4.run(EclipsePreferences.java:743) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:615) at org.eclipse.core.runtime.Platform.run(Platform.java:758) at org.eclipse.core.internal.preferences.EclipsePreferences.preferenceChanged(EclipsePreferences.java:746) at org.eclipse.core.internal.preferences.EclipsePreferences.putBoolean(EclipsePreferences.java:769) at org.eclipse.core.internal.preferences.PreferenceForwarder.setValue(PreferenceForwarder.java:226) at org.eclipse.ui.plugin.AbstractUIPlugin$CompatibilityPreferenceStore.setValue(AbstractUIPlugin.java:481) at org.eclipse.ui.internal.ActivityPersistanceHelper.saveEnabledStates(ActivityPersistanceHelper.java:110) at org.eclipse.ui.internal.ActivityPersistanceHelper.shutdown(ActivityPersistanceHelper.java:119) at org.eclipse.ui.internal.Workbench.shutdown(Workbench.java:1638) at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:468) at org.eclipse.ui.internal.Workbench.access$8(Workbench.java:399) at org.eclipse.ui.internal.Workbench$12.run(Workbench.java:571) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69) at org.eclipse.ui.internal.Workbench.close(Workbench.java:569) at org.eclipse.ui.internal.Workbench.close(Workbench.java:545) at org.eclipse.ui.internal.QuitAction.run(QuitAction.java:55) at org.eclipse.jface.action.Action.runWithEvent(Action.java:881) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:915) at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:866) at org.eclipse.jface.action.ActionContributionItem$7.handleEvent(ActionContributionItem.java:785) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:796) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2716) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2382) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1363) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1334) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:253) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:141) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:96) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:334) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:273) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:128) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.eclipse.core.launcher.Main.basicRun(Main.java:185) at org.eclipse.core.launcher.Main.run(Main.java:638) at org.eclipse.core.launcher.Main.main(Main.java:622)
Jim also got this in I20040610-0800. See bug 66455.
This was supposed to have been fixed with the fix to bug 66000 and bug 59571, but is clearly still happening. Looking at the code, the preference listener should be removed in the dispose handler in DefaultEditorPresentation. However, there is code in the dispose listener that would fail if the widget was really disposed, so maybe this isn't getting called.
Nick, should we add some protection here, or defer since we can not recreate?
Just to be safe, how about we add an isDisposed() check in the various listeners in the presentation classes.
I'll look at this
I have added disposed checks for the non-SWT listeners in the StackPresentation hierarchy in DefaultPartPresentation themeListener DefaultEditorPresentation propertyChangeListener DefaultViewPresentation propertyChangeListener NativeStackPresentation childPropertyChangeListener
Created attachment 12341 [details] Patch
Fixed. Reviewed by NE for build >20040616
Verified that the patch has been committed to CVS for versions 20040616 and after.