Community
Participate
Working Groups
I20061205-1200 The Quick Access (Ctrl+E) dialog shows null entries under "Editors" and duplicate entries in Previous Choices, see screenshot. If I select one of the entries under "Editors" or "Views", I get the exception below and the editor does not change (this is for the "null - ..." as well as for the normal entries). org.eclipse.core.runtime.AssertionFailedException: null argument: at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:84) at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:72) at org.eclipse.ui.internal.incubator.CtrlEAction$QuickAccessPopup.storeDialog(CtrlEAction.java:254) at org.eclipse.ui.internal.incubator.CtrlEAction$QuickAccessPopup.handleElementSelected(CtrlEAction.java:273) at org.eclipse.ui.internal.incubator.FilteringInfoPopup$4.mouseUp(FilteringInfoPopup.java:224) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:137) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:929) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3465) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3079) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1945) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1909) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:425) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:95) 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:585) at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethod(EclipseAppContainer.java:522) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:147) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:74) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:170) 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:585) at org.eclipse.core.launcher.Main.invokeFramework(Main.java:339) at org.eclipse.core.launcher.Main.basicRun(Main.java:283) at org.eclipse.core.launcher.Main.run(Main.java:984) at org.eclipse.core.launcher.Main.main(Main.java:959)
Do you still have the screenshot, or reproducible steps?
Created attachment 55298 [details] Screenshot Oops, sorry. Bugzilla was so sloooow that I forgot to attach when it became responsive again. Unfortunately, I don't have reproducible steps. There were no other log entries since I started that session.
Aaron, can you try to reproduce this?
Created attachment 55342 [details] patch This patch removes caching of Editors and Actions from Quick Access to fix the described bug. AF
*** Bug 167720 has been marked as a duplicate of this bug. ***
*** Bug 167721 has been marked as a duplicate of this bug. ***
I think the above patch fixes some of the problems, but I'm running into a couple of cases where it still happens. I'm pretty sure it is because we are creating the providers the first time Ctrl+E is executed and then reusing them. I've tried some testing where they are created new upon every execution of Ctrl+E and it seems to solve the problems completely. I'm going to investigate this a bit more. AF
Yes, looking at the code it seems that idToElement.clear() should be called from getElements().
Released the patch (added calls to clear()).
Verified on Windows using I20061213-0800.