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
/**
 * <p>
 * A command is an abstract representation for some semantic behaviour. It is
 * not the actual implementation of this behaviour, nor is it the visual
 * appearance of this behaviour in the user interface. Instead, it is a bridge
 * between the two.
 * </p>
 * <p>
 * The concept of a command is based on the command design pattern. The notable
 * difference is how the command delegates responsibility for execution. Rather
 * than allowing concrete subclasses, it uses a handler mechanism (see the
 * <code>handlers</code> extension point). This provides another level of
 * indirection.
 * </p>
 * <p>
 * A command will exist in two states: defined and undefined. A command is
 * defined if it is declared in the XML of a resolved plug-in. If the plug-in is
 * unloaded or the command is simply not declared, then it is undefined. Trying
 * to reference an undefined command will succeed, but trying to access any of
 * its functionality will fail with a <code>NotDefinedException</code>. If
 * you need to know when a command changes from defined to undefined (or vice
 * versa), then attach a command listener.
 * </p>
 * <p>
 * Commands are mutable and will change as their definition changes.
 * </p>
 * 
 * @since 3.1
 */
public final class Command extends NamedHandleObjectWithState implements