Project: Eclipse_Platform_UI
Bug 81165 Action delegate disposed twice if it implements both IActionDelegate2 and IWorkbenchWindowActionDelegate
Reported: 2004-12-15 10:13:54 | Status: verified fixed

build i1214-2000 I was running this build with a runtime workbench and I got the following exception in my log file. !ENTRY org.eclipse.core.runtime 4 2 2004-12-15 10:08:21.18 !MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.core.runtime". !STACK 0 org.eclipse.jface.util.Assert$AssertionFailedException: null argument; at org.eclipse.jface.util.Assert.isNotNull(Assert.java:149) at org.eclipse.jface.util.Assert.isNotNull(Assert.java:125) at org.eclipse.jface.util.ListenerList.remove(ListenerList.java:155) at org.eclipse.ui.internal.PartListenerList.removePartListener(PartListenerList.java:122) at org.eclipse.ui.internal.WWinPartService.removePartListener(WWinPartService.java:96) at org.eclipse.team.internal.ccvs.ui.actions.CVSAction.dispose(CVSAction.java:160) at org.eclipse.ui.internal.WWinPluginAction.dispose(WWinPluginAction.java:195) at org.eclipse.ui.internal.PluginActionSet.dispose(PluginActionSet.java:66) at org.eclipse.ui.internal.ActionPresentation.removeActionSet(ActionPresentation.java:89) at org.eclipse.ui.internal.ActionPresentation.clearActionSets(ActionPresentation.java:70) at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1207) at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:533) at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:514) at org.eclipse.ui.internal.WorkbenchWindow$1.run(WorkbenchWindow.java:612) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69) at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:610) at org.eclipse.jface.window.WindowManager.close(WindowManager.java:108) at org.eclipse.ui.internal.Workbench$12.run(Workbench.java:505) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1050) at org.eclipse.core.runtime.Platform.run(Platform.java:747) at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:501) at org.eclipse.ui.internal.Workbench.access$8(Workbench.java:436) at org.eclipse.ui.internal.Workbench$14.run(Workbench.java:623) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69) at org.eclipse.ui.internal.Workbench.close(Workbench.java:621) at org.eclipse.ui.internal.Workbench.close(Workbench.java:596) at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:530) at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:514) at org.eclipse.ui.internal.WorkbenchWindow$1.run(WorkbenchWindow.java:612) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69) at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:610) at org.eclipse.jface.window.Window.handleShellCloseEvent(Window.java:637) at org.eclipse.jface.window.Window$2.shellClosed(Window.java:584) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:158) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:833) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:857) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:842) at org.eclipse.swt.widgets.Decorations.closeWidget(Decorations.java:246) at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:1538) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3014) at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1483) at org.eclipse.swt.widgets.Display.windowProc(Display.java:3370) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:1565) at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:399) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3097) at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1483) at org.eclipse.swt.widgets.Display.windowProc(Display.java:3370) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:1565) at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:399) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3097) at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1483) at org.eclipse.swt.widgets.Display.windowProc(Display.java:3370) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1570) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2446) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1569) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1540) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:285) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:144) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:102) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:220) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:273) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:129) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:60) at java.lang.reflect.Method.invoke(Method.java:391) at org.eclipse.core.launcher.Main.basicRun(Main.java:185) at org.eclipse.core.launcher.Main.run(Main.java:710) at org.eclipse.core.launcher.Main.main(Main.java:694)

Files changed in fix:
bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginAction.java bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionContributionItem.java bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinPluginAction.java