Project: Eclipse_Platform_UI
Bug 379693 NPE in WorkbenchWindow#updateActionBars() on workspace shutdown
Reported: 2012-05-16 10:04:44 | Status: resolved fixed

My guess is that updateActionBars() should check that getShell() != null && !getShell.isDisposed() ? (I've seen this same error a few times.) !SESSION 2012-05-15 12:02:39.671 ----------------------------------------------- eclipse.buildId=I20120514-1900 [...] !ENTRY org.eclipse.e4.ui.workbench.swt 4 2 2012-05-15 12:33:35.735 !MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.e4.ui.workbench.swt". !STACK 0 org.eclipse.e4.core.di.InjectionException: org.eclipse.e4.core.di.InjectionException: java.lang.NullPointerException at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:63) at org.eclipse.e4.core.internal.contexts.ContextObjectSupplier$ContextInjectionListener.update(ContextObjectSupplier.java:77) at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:106) at org.eclipse.e4.core.internal.contexts.EclipseContext.processScheduled(EclipseContext.java:308) at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:164) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.clearContext(PartRenderingEngine.java:879) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeRemoveGui(PartRenderingEngine.java:860) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$3(PartRenderingEngine.java:767) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$8.run(PartRenderingEngine.java:762) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:747) at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1506) at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:1158) at org.eclipse.ui.internal.WorkbenchWindow.access$16(WorkbenchWindow.java:1135) at org.eclipse.ui.internal.WorkbenchWindow$10.run(WorkbenchWindow.java:1184) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:1182) at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:1194) at org.eclipse.ui.internal.WorkbenchWindow$6.close(WorkbenchWindow.java:441) at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer$10.shellClosed(WBWRenderer.java:562) 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.Display.sendEvent(Display.java:4130) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1458) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1481) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1466) at org.eclipse.swt.widgets.Shell.closeWidget(Shell.java:599) at org.eclipse.swt.widgets.Shell.windowShouldClose(Shell.java:2288) at org.eclipse.swt.widgets.Display.windowProc(Display.java:5467) at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method) at org.eclipse.swt.widgets.Widget.callSuper(Widget.java:221) at org.eclipse.swt.widgets.Widget.windowSendEvent(Widget.java:2102) at org.eclipse.swt.widgets.Shell.windowSendEvent(Shell.java:2284) at org.eclipse.swt.widgets.Display.windowProc(Display.java:5533) at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method) at org.eclipse.swt.widgets.Display.applicationSendEvent(Display.java:4978) at org.eclipse.swt.widgets.Display.applicationProc(Display.java:5127) at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method) at org.eclipse.swt.internal.cocoa.NSApplication.sendEvent(NSApplication.java:128) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3612) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1021) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:915) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:585) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:540) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124) 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:353) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180) 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:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584) at org.eclipse.equinox.launcher.Main.run(Main.java:1438) Caused by: org.eclipse.e4.core.di.InjectionException: java.lang.NullPointerException at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:63) at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:857) at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:111) at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:81) at org.eclipse.e4.core.contexts.ContextInjectionFactory.inject(ContextInjectionFactory.java:72) at org.eclipse.ui.internal.Workbench.createWorkbenchWindow(Workbench.java:1243) at org.eclipse.ui.internal.Workbench.getActiveWorkbenchWindow(Workbench.java:1215) at org.eclipse.ui.internal.Workbench.updateActiveWorkbenchWindowMenuManager(Workbench.java:2845) at org.eclipse.ui.internal.Workbench.access$0(Workbench.java:2843) at org.eclipse.ui.internal.Workbench$1.bindingManagerChanged(Workbench.java:2838) at org.eclipse.jface.bindings.BindingManager.fireBindingManagerChanged(BindingManager.java:900) at org.eclipse.jface.bindings.BindingManager.setActiveBindings(BindingManager.java:2176) at org.eclipse.jface.bindings.BindingManager.recomputeBindings(BindingManager.java:1742) at org.eclipse.jface.bindings.BindingManager.contextManagerChanged(BindingManager.java:689) at org.eclipse.core.commands.contexts.ContextManager.fireContextManagerChanged(ContextManager.java:165) at org.eclipse.core.commands.contexts.ContextManager.setActiveContextIds(ContextManager.java:295) at org.eclipse.e4.ui.bindings.internal.BindingServiceImpl.setContextIds(BindingServiceImpl.java:237) at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56) ... 60 more Caused by: java.lang.NullPointerException at org.eclipse.ui.internal.WorkbenchWindow.updateActionBars(WorkbenchWindow.java:1800) at org.eclipse.ui.internal.WorkbenchWindow.largeUpdateEnd(WorkbenchWindow.java:1851) at org.eclipse.ui.internal.Workbench.largeUpdateEnd(Workbench.java:3052) at org.eclipse.ui.internal.WorkbenchWindow.fillActionBars(WorkbenchWindow.java:2064) at org.eclipse.ui.internal.WorkbenchWindow.setup(WorkbenchWindow.java:523) 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:597) at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56) ... 80 more

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