Bug 234436 - [KeyBindings] NPE when shutting down a runtime workspace
Summary: [KeyBindings] NPE when shutting down a runtime workspace
Status: RESOLVED DUPLICATE of bug 202819
Alias: None
Product: Platform
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 3.4   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Paul Webster CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-05-28 13:36 EDT by Ed Merks CLA
Modified: 2009-03-04 16:14 EST (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ed Merks CLA 2008-05-28 13:36:06 EDT
In RC2 I get this quite often exiting the runtime workbench.  When it starts, I have the Ecore editor open, I click in the editor, and then I exit.  I'm happy to screen share to debug it if that would help.  

!ENTRY org.eclipse.ui.workbench 4 2 2008-05-28 12:56:05.169
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.ui.workbench".
!STACK 0
java.lang.NullPointerException: Cannot set a null prefix table
	at org.eclipse.jface.bindings.CachedBindingSet.setPrefixTable(CachedBindingSet.java:346)
	at org.eclipse.jface.bindings.BindingManager.recomputeBindings(BindingManager.java:1765)
	at org.eclipse.jface.bindings.BindingManager.contextManagerChanged(BindingManager.java:689)
	at org.eclipse.core.commands.contexts.ContextManager.fireContextManagerChanged(ContextManager.java:152)
	at org.eclipse.core.commands.contexts.ContextManager.removeActiveContext(ContextManager.java:232)
	at org.eclipse.ui.internal.contexts.ContextAuthority.updateContext(ContextAuthority.java:767)
	at org.eclipse.ui.internal.contexts.ContextAuthority.deactivateContext(ContextAuthority.java:362)
	at org.eclipse.ui.internal.contexts.ContextService.deactivateContext(ContextService.java:140)
	at org.eclipse.ui.internal.contexts.ContextService.deactivateContexts(ContextService.java:154)
	at org.eclipse.ui.internal.contexts.SlaveContextService.dispose(SlaveContextService.java:240)
	at org.eclipse.ui.internal.services.ServiceLocator.dispose(ServiceLocator.java:142)
	at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1626)
	at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:722)
	at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:698)
	at org.eclipse.ui.internal.WorkbenchWindow$3.run(WorkbenchWindow.java:814)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
	at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:812)
	at org.eclipse.jface.window.WindowManager.close(WindowManager.java:109)
	at org.eclipse.ui.internal.Workbench$16.run(Workbench.java:912)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:909)
	at org.eclipse.ui.internal.Workbench.access$15(Workbench.java:838)
	at org.eclipse.ui.internal.Workbench$23.run(Workbench.java:1082)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
	at org.eclipse.ui.internal.Workbench.close(Workbench.java:1080)
	at org.eclipse.ui.internal.Workbench.close(Workbench.java:1052)
	at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:719)
	at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:698)
	at org.eclipse.ui.internal.WorkbenchWindow$3.run(WorkbenchWindow.java:814)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
	at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:812)
	at org.eclipse.jface.window.Window.handleShellCloseEvent(Window.java:741)
	at org.eclipse.jface.window.Window$3.shellClosed(Window.java:687)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:91)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1002)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1026)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1011)
	at org.eclipse.swt.widgets.Decorations.closeWidget(Decorations.java:306)
	at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:1631)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3784)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:334)
	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1564)
	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:1932)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4506)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2341)
	at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:474)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3872)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:334)
	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1564)
	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:1932)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4506)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2341)
	at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:474)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3872)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:334)
	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1564)
	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:1932)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4506)
	at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2346)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3398)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2387)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2351)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2203)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:112)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
	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:379)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:615)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1212)

I can see that this ends up setting the prefixTable to null on startup as well as on shutdown and then later the above exception happens.

Thread [main] (Suspended (breakpoint at line 2173 in BindingManager))	
	BindingManager.setActiveBindings(Map, Map, Map, Map) line: 2173	
	BindingManager.clearSolution() line: 442	
	BindingManager.clearCache() line: 431	
	BindingManager.addBinding(Binding) line: 336	
	BindingService.addBinding(Binding) line: 115	
	LegacyActionPersistence$1.commandChanged(CommandEvent) line: 204	
	Command$1.run() line: 511	
	SafeRunner.run(ISafeRunnable) line: 37	
	Command.fireCommandChanged(CommandEvent) line: 506	
	Command.setHandler(IHandler) line: 995	
	HandlerAuthority.updateCommand(String, IHandlerActivation) line: 459	
	HandlerAuthority.processChangedCommands() line: 631	
	HandlerAuthority.access$1(HandlerAuthority) line: 610	
	HandlerAuthority$1.propertyChange(PropertyChangeEvent) line: 175	
	EvaluationAuthority$1.run() line: 252	
	SafeRunner.run(ISafeRunnable) line: 37	
	EvaluationAuthority.fireServiceChange(String, Object, Object) line: 246	
	EvaluationAuthority.endSourceChange(String[]) line: 197	
	EvaluationAuthority.sourceChanged(String[]) line: 135	
	EvaluationAuthority(ExpressionAuthority).sourceChanged(int, String[]) line: 310	
	EvaluationAuthority(ExpressionAuthority).sourceChanged(int, String, Object) line: 301	
	ActionSetSourceProvider(AbstractSourceProvider).fireSourceChanged(int, String, Object) line: 80	
	ActionSetSourceProvider.actionSetsChanged(ActionSetsEvent) line: 72	
	Workbench.updateActiveWorkbenchWindowMenuManager(boolean) line: 3008	
	Workbench.access$0(Workbench, boolean) line: 2977	
	Workbench$2.bindingManagerChanged(BindingManagerEvent) line: 2963	
	BindingManager.fireBindingManagerChanged(BindingManagerEvent) line: 900	
	BindingManager.setActiveBindings(Map, Map, Map, Map) line: 2176	
	BindingManager.recomputeBindings() line: 1762	
	BindingManager.contextManagerChanged(ContextManagerEvent) line: 689	
	ContextManager.fireContextManagerChanged(ContextManagerEvent) line: 152	
	ContextManager.setEventCaching(boolean) line: 311	
	ContextManager.addActiveContext(String) line: 80	
	ContextAuthority.sourceChanged(int) line: 682	
	ContextAuthority(ExpressionAuthority).sourceChanged(int, String[]) line: 309	
	ContextAuthority(ExpressionAuthority).sourceChanged(int, Map) line: 289	
	ActiveShellSourceProvider(AbstractSourceProvider).fireSourceChanged(int, Map) line: 99	
	ActiveShellSourceProvider.access$13(ActiveShellSourceProvider, int, Map) line: 1	
	ActiveShellSourceProvider$3.handleEvent(Event) line: 302	
	EventTable.sendEvent(Event) line: 84	
	Display.filterEvent(Event) line: 1162	
	Shell(Widget).sendEvent(Event) line: 1001	
	Shell(Widget).sendEvent(int, Event, boolean) line: 1026	
	Shell(Widget).sendEvent(int) line: 1007	
	Shell(Decorations).WM_ACTIVATE(int, int) line: 1601	
	Shell.WM_ACTIVATE(int, int) line: 2008	
	Shell(Control).windowProc(int, int, int, int) line: 3779	
	Shell(Canvas).windowProc(int, int, int, int) line: 334	
	Shell(Decorations).windowProc(int, int, int, int) line: 1564	
	Shell.windowProc(int, int, int, int) line: 1932	
	Display.windowProc(int, int, int, int) line: 4506	
	OS.BringWindowToTop(int) line: not available [native method]	
	Shell(Decorations).bringToTop() line: 228	
	Shell.open() line: 1134	
	WorkbenchWindow(Window).open() line: 797	
	WorkbenchWindow.open() line: 778	
	Workbench$61.runWithException() line: 3399	
	Workbench$61(StartupThreading$StartupRunnable).run() line: 31	
	RunnableLock.run() line: 35	
	UISynchronizer(Synchronizer).runAsyncMessages(boolean) line: 132	
	Display.runAsyncMessages(boolean) line: 3778	
	Display.readAndDispatch() line: 3403	
	IDEWorkbenchAdvisor(WorkbenchAdvisor).openWindows() line: 803	
	Workbench$27.runWithException() line: 1361	
	Workbench$27(StartupThreading$StartupRunnable).run() line: 31	
	RunnableLock.run() line: 35	
	UISynchronizer(Synchronizer).runAsyncMessages(boolean) line: 132	
	Display.runAsyncMessages(boolean) line: 3778	
	Display.readAndDispatch() line: 3403	
	Workbench.runUI() line: 2298	
	Workbench.access$4(Workbench) line: 2203	
	Workbench$5.run() line: 493	
	Realm.runWithDefault(Realm, Runnable) line: 288	
	Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 488	
	PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 149	
	IDEApplication.start(IApplicationContext) line: 112	
	EclipseAppHandle.run(Object) line: 193	
	EclipseAppLauncher.runApplication(Object) line: 110	
	EclipseAppLauncher.start(Object) line: 79	
	EclipseStarter.run(Object) line: 379	
	EclipseStarter.run(String[], Runnable) line: 179	
	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 64	
	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43	
	Method.invoke(Object, Object...) line: 615	
	Main.invokeFramework(String[], URL[]) line: 549	
	Main.basicRun(String[]) line: 504	
	Main.run(String[]) line: 1236	
	Main.main(String[]) line: 1212
Comment 1 Martin Oberhuber CLA 2008-05-29 15:01:43 EDT
I got this once in 3.4M7
Comment 2 Boris Bokowski CLA 2009-02-02 12:21:42 EST
Have you seen this in a build after 3.4.1? Looks like a duplicate of 202819.

*** This bug has been marked as a duplicate of bug 202819 ***
Comment 3 Eddie Galvez CLA 2009-03-04 15:03:31 EST
I see this in our commercial product that is based on 3.4.2 final just recently released; should I reopen this bug or file a new one?

From Help/About Feature Details:
 Eclipse Platform  3.4.2.R342_v20090122-9I96EiWElHi8lheoJKJIvhM3JfVsYbRrgVIWL Build id M20090211-1700

My stack trace is:

java.lang.NullPointerException: Cannot set a null prefix table
at org.eclipse.jface.bindings.CachedBindingSet.setPrefixTable(CachedBindingSet.java:346)
at org.eclipse.jface.bindings.BindingManager.recomputeBindings(BindingManager.java:1765)
at org.eclipse.jface.bindings.BindingManager.contextManagerChanged(BindingManager.java:689)
at org.eclipse.core.commands.contexts.ContextManager.fireContextManagerChanged(ContextManager.java:152)
at org.eclipse.core.commands.contexts.ContextManager.removeActiveContext(ContextManager.java:232)
at org.eclipse.ui.internal.contexts.ContextAuthority.updateContext(ContextAuthority.java:767)
at org.eclipse.ui.internal.contexts.ContextAuthority.deactivateContext(ContextAuthority.java:362)
at org.eclipse.ui.internal.contexts.ContextService.deactivateContext(ContextService.java:152)
at org.eclipse.ui.internal.contexts.ContextService.deactivateContexts(ContextService.java:166)
at org.eclipse.ui.internal.contexts.SlaveContextService.dispose(SlaveContextService.java:259)
at org.eclipse.ui.internal.services.ServiceLocator.dispose(ServiceLocator.java:142)
at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1627)
at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:722)
at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:698)
at org.eclipse.ui.internal.WorkbenchWindow$3.run(WorkbenchWindow.java:814)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:812)
at org.eclipse.jface.window.WindowManager.close(WindowManager.java:109)
at org.eclipse.ui.internal.Workbench$16.run(Workbench.java:914)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:911)
at org.eclipse.ui.internal.Workbench.access$15(Workbench.java:840)
at org.eclipse.ui.internal.Workbench$23.run(Workbench.java:1084)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.ui.internal.Workbench.close(Workbench.java:1082)
at org.eclipse.ui.internal.Workbench.close(Workbench.java:1054)
at org.eclipse.ui.internal.handlers.QuitHandler.execute(QuitHandler.java:41)
at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:281)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:247)
at org.eclipse.ui.internal.actions.CommandAction.runWithEvent(CommandAction.java:157)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:583)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:500)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2384)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2348)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2200)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:495)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:490)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
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:386)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
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:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
Comment 4 Paul Webster CLA 2009-03-04 15:24:11 EST
(In reply to comment #3)
> I see this in our commercial product that is based on 3.4.2 final just recently
> released; should I reopen this bug or file a new one?

Hi Eddie,

Please open a new bug and I'll try and have a look at this next week.

PW
Comment 5 Eddie Galvez CLA 2009-03-04 16:14:30 EST
> Hi Eddie,
> 
> Please open a new bug and I'll try and have a look at this next week.
> 
> PW
> 

Bug 267109