Bug 431002 - Emacs-style accelerate key error
Summary: Emacs-style accelerate key error
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: IDE (show other bugs)
Version: 4.3.2   Edit
Hardware: PC Windows 8
: P3 normal (vote)
Target Milestone: 4.14 M3   Edit
Assignee: Karsten Thoms CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 552208
  Show dependency tree
 
Reported: 2014-03-24 08:01 EDT by chenzai ohyeah CLA
Modified: 2019-11-07 02:48 EST (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description chenzai ohyeah CLA 2014-03-24 08:01:20 EDT
When I press emacs-like accelerate keys like 'ctrl+n', 'ctrl+p', 'ctrl+a','ctrl+e',eclipse will give me no hint, when I check the error log,it wrote these:

org.eclipse.swt.SWTException: Widget is disposed
	at org.eclipse.swt.SWT.error(SWT.java:4397)
	at org.eclipse.swt.SWT.error(SWT.java:4312)
	at org.eclipse.swt.SWT.error(SWT.java:4283)
	at org.eclipse.swt.widgets.Widget.error(Widget.java:472)
	at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:344)
	at org.eclipse.swt.widgets.Table.getItemCount(Table.java:2606)
	at org.eclipse.jface.text.contentassist.CompletionProposalPopup$ProposalSelectionHandler.execute(CompletionProposalPopup.java:142)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:499)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
	at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:285)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:504)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:555)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:376)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.access$0(KeyBindingDispatcher.java:322)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:84)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1262)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1056)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1081)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1108)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1104)
	at org.eclipse.swt.widgets.Widget.wmKeyDown(Widget.java:1827)
	at org.eclipse.swt.widgets.Control.WM_KEYDOWN(Control.java:4975)
	at org.eclipse.swt.widgets.Canvas.WM_KEYDOWN(Canvas.java:429)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4643)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4977)
	at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2549)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1113)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:997)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:140)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:611)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:567)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	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:354)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
Comment 1 Paul Webster CLA 2014-03-24 09:41:06 EDT
CTRL+N/CTRL+P go up and down lines.  It works fine for me.

What are you trying to do, exactly?

Please list your reproducible steps from "1. Launch eclipse"

PW
Comment 2 chenzai ohyeah CLA 2014-03-24 20:39:53 EDT
It works fine undetermined, sometimes it works fine for a long time , but it reports error at least one time per day. When I restart eclipse, it reports error or will be fine, it is undetermined. The problem is when I press accelerate key lists above, then eclipse reports an error and then the emacs-style accelerate keys won't work again, then I have to restart eclipse, but restart sometimes don't work, the failed percentage is about 30%.
 
(In reply to Paul Webster from comment #1)
> CTRL+N/CTRL+P go up and down lines.  It works fine for me.
> 
> What are you trying to do, exactly?
> 
> Please list your reproducible steps from "1. Launch eclipse"
> 
> PW
(In reply to Paul Webster from comment #1)
> CTRL+N/CTRL+P go up and down lines.  It works fine for me.
> 
> What are you trying to do, exactly?
> 
> Please list your reproducible steps from "1. Launch eclipse"
> 
> PW
Comment 3 chenzai ohyeah CLA 2014-03-24 20:43:32 EDT
(In reply to Paul Webster from comment #1)
> CTRL+N/CTRL+P go up and down lines.  It works fine for me.
> 
> What are you trying to do, exactly?
> 
> Please list your reproducible steps from "1. Launch eclipse"
> 
> PW

I can't catch the steps it report an error, it can't be caught. This really makes me feel down. When I press 'ctrl+n/p' to move line up or down, it reports error unpredictable, but I can use 'ctrl+n/p' to select auto-completion suggestion.
Comment 4 Kevin O CLA 2019-11-05 12:25:23 EST
I see this same problem. I realize for a developer how frustrating an intermittent error can be, but this problem occurs at least once a day for me. I believe the problem is most likely to crop up when I'm editing an ant build script (or a .xml file), and there is a temporary parse error in the file (as might happen when adding a new element).

As noted by @chenzai, the problem is the emacs navigation keys (ctrl-p, ctrl-n, ctrl-a, ctrl-e for up/down/home/end respectively). However, the copy, cut, and paste (ctrl-w/ctrl-k,alt-w), for example, still work. Also, the arrow keys work without an issue.

A stack trace shows a Widget disposed error:

eclipse.buildId=4.13.0.I20190916-1045
java.version=11.0.5
java.vendor=AdoptOpenJDK
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Framework arguments:  -product org.eclipse.epp.package.jee.product
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product -clean -data c:\Users\kholson\workspace-dwb

org.eclipse.ui
Error
Tue Nov 05 10:10:53 MST 2019
Unhandled event loop exception

org.eclipse.swt.SWTException: Widget is disposed
	at org.eclipse.swt.SWT.error(SWT.java:4711)
	at org.eclipse.swt.SWT.error(SWT.java:4626)
	at org.eclipse.swt.SWT.error(SWT.java:4597)
	at org.eclipse.swt.widgets.Widget.error(Widget.java:452)
	at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:351)
	at org.eclipse.swt.widgets.Table.getItemCount(Table.java:2577)
	at org.eclipse.jface.text.contentassist.CompletionProposalPopup$ProposalSelectionHandler.execute(CompletionProposalPopup.java:144)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:498)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:487)
	at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:308)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:584)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:653)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:443)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.access$2(KeyBindingDispatcher.java:386)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:96)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
	at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1199)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1056)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1081)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1108)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1104)
	at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1491)
	at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:4879)
	at org.eclipse.swt.widgets.Canvas.WM_CHAR(Canvas.java:353)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4761)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:348)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4812)
	at org.eclipse.swt.internal.win32.OS.DispatchMessage(Native Method)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3583)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1468)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1441)


Restarting the client will return to normal working behavior.

O/S: Windows 10
Version: Eclipse 2019-09

Please let me know how I can assist in providing other information. But I don't have a "here are the steps" because it happens intermittently.
Comment 5 Karsten Thoms CLA 2019-11-05 20:04:07 EST
CompletionProposalPopup#fProposalTable must be disposed to raise this error. I don't see how it is actually disposed. We could add a guard here, but there are plenty of other places in CompletionProposalPopup which access fProposalTable. In ProposalSelectionHandler there is only one.

I'll provide a patch to add the guard in ProposalSelectionHandler.execute. It would prevent that SELECT_NEXT/PREVIOUS is performed when the proposal table was already disposed. This should not harm.
Comment 6 Eclipse Genie CLA 2019-11-05 20:10:16 EST
New Gerrit change created: https://git.eclipse.org/r/152098
Comment 8 Karsten Thoms CLA 2019-11-07 02:48:36 EST
@Kevin O: Could you please try if this problem is fixed for you with an integration build package? The fix will be available tomorrow.
https://download.eclipse.org/eclipse/downloads/ => "Integration Builds"