Bug 139214 [Keybindings] Stack overflow in keybindings
Unfortunately, I have no idea what I did to cause this, but here is the stack trace. (build I20060428-0010) ... at org.eclipse.jface.action.ExternalActionManager$CommandCallback.isAcceleratorInUse(ExternalActionManager.java:276) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:742) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:720) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:720) at org.eclipse.ui.internal.Workbench.updateActiveWorkbenchWindowMenuManager(Workbench.java:2518) at org.eclipse.ui.internal.Workbench.access$0(Workbench.java:2480) at org.eclipse.ui.internal.Workbench$2.bindingManagerChanged(Workbench.java:2466) at org.eclipse.jface.bindings.BindingManager.fireBindingManagerChanged(BindingManager.java:863) at org.eclipse.jface.bindings.BindingManager.setActiveBindings(BindingManager.java:2161) at org.eclipse.jface.bindings.BindingManager.recomputeBindings(BindingManager.java:1699) at org.eclipse.jface.bindings.BindingManager.getPrefixTable(BindingManager.java:1476) at org.eclipse.jface.bindings.BindingManager.isPartialMatch(BindingManager.java:1561) at org.eclipse.jface.action.ExternalActionManager$CommandCallback.isAcceleratorInUse(ExternalActionManager.java:276) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:742) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:720) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:720) at org.eclipse.ui.internal.Workbench.updateActiveWorkbenchWindowMenuManager(Workbench.java:2518) at org.eclipse.ui.internal.Workbench.access$0(Workbench.java:2480) at org.eclipse.ui.internal.Workbench$2.bindingManagerChanged(Workbench.java:2466) at org.eclipse.jface.bindings.BindingManager.fireBindingManagerChanged(BindingManager.java:863) at org.eclipse.jface.bindings.BindingManager.setActiveBindings(BindingManager.java:2161) at org.eclipse.jface.bindings.BindingManager.recomputeBindings(BindingManager.java:1699) at org.eclipse.jface.bindings.BindingManager.getPrefixTable(BindingManager.java:1476) at org.eclipse.jface.bindings.BindingManager.isPartialMatch(BindingManager.java:1561) at org.eclipse.jface.action.ExternalActionManager$CommandCallback.isAcceleratorInUse(ExternalActionManager.java:276) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:742) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:720) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:720) at org.eclipse.ui.internal.Workbench.updateActiveWorkbenchWindowMenuManager(Workbench.java:2518) at org.eclipse.ui.internal.Workbench.access$0(Workbench.java:2480) at org.eclipse.ui.internal.Workbench$2.bindingManagerChanged(Workbench.java:2466) at org.eclipse.jface.bindings.BindingManager.fireBindingManagerChanged(BindingManager.java:863) at org.eclipse.jface.bindings.BindingManager.setActiveBindings(BindingManager.java:2161) at org.eclipse.jface.bindings.BindingManager.recomputeBindings(BindingManager.java:1699) at org.eclipse.jface.bindings.BindingManager.getActiveBindingsByParameterizedCommand(BindingManager.java:908) at org.eclipse.jface.bindings.BindingManager.getActiveBindingsFor(BindingManager.java:1152) at org.eclipse.ui.internal.keys.BindingService.getActiveBindingsFor(BindingService.java:128) at org.eclipse.ui.internal.ide.actions.QuickMenuAction.getShortCutString(QuickMenuAction.java:111) at org.eclipse.ui.internal.ide.WorkbenchActionBuilder$6.getMenuText(WorkbenchActionBuilder.java:461) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:728) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:720) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:720) at org.eclipse.ui.internal.Workbench.updateActiveWorkbenchWindowMenuManager(Workbench.java:2518) at org.eclipse.ui.internal.Workbench.access$0(Workbench.java:2480) at org.eclipse.ui.internal.Workbench$2.bindingManagerChanged(Workbench.java:2466) at org.eclipse.jface.bindings.BindingManager.fireBindingManagerChanged(BindingManager.java:863) at org.eclipse.jface.bindings.BindingManager.setActiveBindings(BindingManager.java:2161) at org.eclipse.jface.bindings.BindingManager.clearSolution(BindingManager.java:435) at org.eclipse.jface.bindings.BindingManager.contextManagerChanged(BindingManager.java:652) at org.eclipse.core.commands.contexts.ContextManager.fireContextManagerChanged(ContextManager.java:120) at org.eclipse.core.commands.contexts.ContextManager.removeActiveContext(ContextManager.java:200) at org.eclipse.ui.internal.contexts.ContextAuthority.updateContext(ContextAuthority.java:746) at org.eclipse.ui.internal.contexts.ContextAuthority.deactivateContext(ContextAuthority.java:341) at org.eclipse.ui.internal.contexts.ContextAuthority.checkWindowType(ContextAuthority.java:222) at org.eclipse.ui.internal.contexts.ContextAuthority.updateEvaluationContext(ContextAuthority.java:779) at org.eclipse.ui.internal.services.ExpressionAuthority.sourceChanged(ExpressionAuthority.java:266) at org.eclipse.ui.AbstractSourceProvider.fireSourceChanged(AbstractSourceProvider.java:98) at org.eclipse.ui.internal.services.ActiveShellSourceProvider.access$4(ActiveShellSourceProvider.java:1) at org.eclipse.ui.internal.services.ActiveShellSourceProvider$1.handleEvent(ActiveShellSourceProvider.java:115) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) at org.eclipse.swt.widgets.Display.filterEvent(Display.java:982) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:924) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:949) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:930) at org.eclipse.swt.widgets.Decorations.WM_ACTIVATE(Decorations.java:1576) at org.eclipse.swt.widgets.Shell.WM_ACTIVATE(Shell.java:1714) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3244) at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1539) at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:1634) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025) at org.eclipse.swt.internal.win32.OS.BringWindowToTop(Native Method) at org.eclipse.swt.widgets.Decorations.bringToTop(Decorations.java:183) at org.eclipse.swt.widgets.Shell.open(Shell.java:997) at org.eclipse.jface.window.Window.open(Window.java:792) at org.eclipse.ui.actions.ExportResourcesAction.run(ExportResourcesAction.java:180) at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:168) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:539) at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:488) at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:400) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:925) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3348) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2968) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1914) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1878) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:419) ....
bundles/org.eclipse.core.commands/src/org/eclipse/core/commands/Command.java
*            <code>null</code>.
	 */
	private final void fireNotHandled(final NotHandledException e) {
		
		if (DEBUG_COMMAND_EXECUTION) {
			Tracing.printTrace("COMMANDS", "execute" + Tracing.SEPARATOR 
					+ "not handled: id=" + getId() + "; exception=" + e); 
		}
		if (executionListeners != null) {
			final Object[] listeners = executionListeners.getListeners();
			for (int i = 0; i < listeners.length; i++) {
				final IExecutionListener listener = (IExecutionListener) listeners[i];
				listener.notHandled(getId(), e);
			}
		}
	}
	/**
	 * Notifies the execution listeners for this command that an attempt to
	 * execute has failed during the execution.
	 * 
	 * @param e
	 *            The exception that has been thrown; never <code>null</code>.
	 *            After this method completes, the exception will be thrown
	 *            again.
	 */
	private final void firePostExecuteFailure(final ExecutionException e) {
		
		if (DEBUG_COMMAND_EXECUTION) {
			Tracing.printTrace("COMMANDS", "execute" + Tracing.SEPARATOR 
					+ "failure: id=" + getId() + "; exception=" + e);