Bug 567375 - Impossible to cancel Quick Type Hiearchy
Summary: Impossible to cancel Quick Type Hiearchy
Status: NEW
Alias: None
Product: JDT
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 4.17   Edit
Hardware: PC Mac OS X
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: JDT-UI-Inbox CLA
QA Contact:
URL:
Whiteboard: stalebug
Keywords:
Depends on:
Blocks:
 
Reported: 2020-09-25 17:12 EDT by Gunnar Wagenknecht CLA
Modified: 2022-12-28 12:15 EST (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Gunnar Wagenknecht CLA 2020-09-25 17:12:05 EDT
In my fairly huge workspace the Quick Type hierarchy (Cmd + T) occasionally performs really poor. Especially when building large hierarchies.

What I noticed it that there is no way for a user to cancel/abort the command. The UI is blocked with a spinning wheel. 

Sometimes I notice a cancel button in the status line. However, that seems to go away after pressing ESC and/or switching to a different application (Cmd+tab). When switching back to Eclipse with Cmd+tab the wheel is still spinning and no way to cancel. 

Expected: ESC is always working to cancel/abort Cmd+T.

The main UI thread is stuck at:
org.eclipse.swt.internal.cocoa.OS.objc_msgSend_bool(long, long, long, long) OS.java (native)
org.eclipse.swt.internal.cocoa.NSRunLoop.runMode(NSString, NSDate) NSRunLoop.java:40
org.eclipse.swt.widgets.Display.sleep() Display.java:4951
org.eclipse.jface.operation.ModalContext$ModalContextThread.block() ModalContext.java:167
org.eclipse.jface.operation.ModalContext.run(IRunnableWithProgress, boolean, IProgressMonitor, Display) ModalContext.java:368
org.eclipse.ui.internal.WorkbenchWindow.lambda$7(StatusLineManager, IRunnableWithProgress, boolean, InvocationTargetException[], InterruptedException[]) WorkbenchWindow.java:2353
org.eclipse.ui.internal.WorkbenchWindow$$Lambda$911.run()
org.eclipse.swt.custom.BusyIndicator.showWhile(Display, Runnable) BusyIndicator.java:74
org.eclipse.ui.internal.WorkbenchWindow.run(boolean, boolean, IRunnableWithProgress) WorkbenchWindow.java:2351
org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyLifeCycle.ensureRefreshedTypeHierarchy(IJavaElement[], IRunnableContext) TypeHierarchyLifeCycle.java:212
org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyLifeCycle.ensureRefreshedTypeHierarchy(IJavaElement, IRunnableContext) TypeHierarchyLifeCycle.java:161
org.eclipse.jdt.internal.ui.typehierarchy.HierarchyInformationControl.setInput(Object) HierarchyInformationControl.java:275
org.eclipse.jface.text.AbstractInformationControlManager.internalShowInformationControl(Rectangle, Object) AbstractInformationControlManager.java:1151
org.eclipse.jface.text.AbstractInformationControlManager.presentInformation() AbstractInformationControlManager.java:1120
org.eclipse.jface.text.AbstractInformationControlManager.setInformation(Object, Rectangle) AbstractInformationControlManager.java:431
org.eclipse.jface.text.information.InformationPresenter.computeInformation() InformationPresenter.java:321
org.eclipse.jface.text.AbstractInformationControlManager.doShowInformation() AbstractInformationControlManager.java:1101
org.eclipse.jface.text.AbstractInformationControlManager.showInformation() AbstractInformationControlManager.java:1091
org.eclipse.jdt.internal.ui.javaeditor.JavaSourceViewer.doOperation(int) JavaSourceViewer.java:175
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor$AdaptedSourceViewer.doOperation(int) CompilationUnitEditor.java:205
org.eclipse.ui.texteditor.TextOperationAction.lambda$0() TextOperationAction.java:130
org.eclipse.ui.texteditor.TextOperationAction$$Lambda$940.run()
org.eclipse.swt.custom.BusyIndicator.showWhile(Display, Runnable) BusyIndicator.java:74
org.eclipse.ui.texteditor.TextOperationAction.run() TextOperationAction.java:130
org.eclipse.jface.action.Action.runWithEvent(Event) Action.java:474
org.eclipse.jface.commands.ActionHandler.execute(ExecutionEvent) ActionHandler.java:121
org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(IEclipseContext, Map, Event, IEvaluationContext) E4HandlerProxy.java:97
jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) NativeMethodAccessorImpl.java (native)
jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Object, Object[]) NativeMethodAccessorImpl.java:62
jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Object, Object[]) DelegatingMethodAccessorImpl.java:43
java.lang.reflect.Method.invoke(Object, Object[]) Method.java:566
org.eclipse.e4.core.internal.di.MethodRequestor.execute() MethodRequestor.java:58
org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(Object, Class, Class, Object, PrimaryObjectSupplier, PrimaryObjectSupplier, boolean, boolean, boolean) InjectorImpl.java:319
org.eclipse.e4.core.internal.di.InjectorImpl.invoke(Object, Class, Object, PrimaryObjectSupplier, PrimaryObjectSupplier) InjectorImpl.java:253
org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(Object, Class, IEclipseContext, IEclipseContext, Object) ContextInjectionFactory.java:173
org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(ExecutionEvent) HandlerServiceHandler.java:156
org.eclipse.core.commands.Command.executeWithChecks(ExecutionEvent) Command.java:488
org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(Object, Object) ParameterizedCommand.java:487
org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(ParameterizedCommand, IEclipseContext) HandlerServiceImpl.java:213
org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(ParameterizedCommand, Event) KeyBindingDispatcher.java:308
org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(List, Event) KeyBindingDispatcher.java:584
org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(List, Event) KeyBindingDispatcher.java:653
org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(Event) KeyBindingDispatcher.java:443
org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.access$2(KeyBindingDispatcher, Event) KeyBindingDispatcher.java:386
org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(Event) KeyBindingDispatcher.java:96
org.eclipse.swt.widgets.EventTable.sendEvent(Event) EventTable.java:89
org.eclipse.swt.widgets.Display.filterEvent(Event) Display.java:1111
org.eclipse.swt.widgets.Display.sendEvent(EventTable, Event) Display.java:4380
org.eclipse.swt.widgets.Widget.sendEvent(Event) Widget.java:1512
org.eclipse.swt.widgets.Widget.sendEvent(int, Event, boolean) Widget.java:1535
org.eclipse.swt.widgets.Widget.sendEvent(int, Event) Widget.java:1520
org.eclipse.swt.widgets.Widget.sendKeyEvent(int, Event) Widget.java:1549
org.eclipse.swt.widgets.Widget.sendKeyEvent(NSEvent, int) Widget.java:1545
org.eclipse.swt.widgets.Canvas.sendKeyEvent(NSEvent, int) Canvas.java:522
org.eclipse.swt.widgets.Control.doCommandBySelector(long, long, long) Control.java:1081
org.eclipse.swt.widgets.Display.windowProc(long, long, long) Display.java:6184
org.eclipse.swt.internal.cocoa.OS.objc_msgSend(long, long, long) OS.java (native)
org.eclipse.swt.internal.cocoa.NSResponder.interpretKeyEvents(NSArray) NSResponder.java:59
org.eclipse.swt.widgets.Composite.keyDown(long, long, long) Composite.java:606
org.eclipse.swt.widgets.Display.windowProc(long, long, long) Display.java:6016
org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(objc_super, long, long) OS.java (native)
org.eclipse.swt.widgets.Widget.callSuper(long, long, long) Widget.java:235
org.eclipse.swt.widgets.Widget.windowSendEvent(long, long, long) Widget.java:2150
org.eclipse.swt.widgets.Shell.windowSendEvent(long, long, long) Shell.java:2401
org.eclipse.swt.widgets.Display.windowProc(long, long, long) Display.java:6136
org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(objc_super, long, long) OS.java (native)
org.eclipse.swt.widgets.Display.applicationSendEvent(long, long, long) Display.java:5386
org.eclipse.swt.widgets.Display.applicationProc(long, long, long) Display.java:5522
org.eclipse.swt.internal.cocoa.OS.objc_msgSend(long, long, long) OS.java (native)
org.eclipse.swt.internal.cocoa.NSApplication.sendEvent(NSEvent) NSApplication.java:117
org.eclipse.swt.widgets.Display.readAndDispatch() Display.java:3786
org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run() PartRenderingEngine.java:1157
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm, Runnable) Realm.java:338
org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(MApplicationElement, IEclipseContext) PartRenderingEngine.java:1046
org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(MApplicationElement) E4Workbench.java:155
org.eclipse.ui.internal.Workbench.lambda$3(Display, WorkbenchAdvisor, int[]) Workbench.java:644
org.eclipse.ui.internal.Workbench$$Lambda$130.run()
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm, Runnable) Realm.java:338
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) Workbench.java:551
org.eclipse.ui.PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) PlatformUI.java:153
org.eclipse.ui.internal.ide.application.IDEApplication.start(IApplicationContext) IDEApplication.java:150
org.eclipse.equinox.internal.app.EclipseAppHandle.run(Object) EclipseAppHandle.java:203
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(Object) EclipseAppLauncher.java:134
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(Object) EclipseAppLauncher.java:104
org.eclipse.core.runtime.adaptor.EclipseStarter.run(Object) EclipseStarter.java:401
org.eclipse.core.runtime.adaptor.EclipseStarter.run(String[], Runnable) EclipseStarter.java:255
jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) NativeMethodAccessorImpl.java (native)
jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Object, Object[]) NativeMethodAccessorImpl.java:62
jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Object, Object[]) DelegatingMethodAccessorImpl.java:43
java.lang.reflect.Method.invoke(Object, Object[]) Method.java:566
org.eclipse.equinox.launcher.Main.invokeFramework(String[], URL[]) Main.java:657
org.eclipse.equinox.launcher.Main.basicRun(String[]) Main.java:594
org.eclipse.equinox.launcher.Main.run(String[]) Main.java:1465


The ModalContext thread is busy reading the index
org.eclipse.jdt.internal.core.index.DiskIndex.addQueryResults(char[][], char[], int, MemoryIndex) DiskIndex.java
org.eclipse.jdt.internal.core.index.Index.query(char[][], char[], int) Index.java:163
org.eclipse.jdt.internal.core.search.matching.SuperTypeReferencePattern.queryIn(Index) SuperTypeReferencePattern.java:280
org.eclipse.jdt.core.search.SearchPattern.findIndexMatches(Index, IndexQueryRequestor, SearchParticipant, IJavaSearchScope, IProgressMonitor) SearchPattern.java:2419
org.eclipse.jdt.internal.core.search.matching.MatchLocator.findIndexMatches(SearchPattern, Index, IndexQueryRequestor, SearchParticipant, IJavaSearchScope, IProgressMonitor) MatchLocator.java:296
org.eclipse.jdt.internal.core.search.PatternSearchJob.search(Index, IProgressMonitor) PatternSearchJob.java:117
org.eclipse.jdt.internal.core.search.SubTypeSearchJob.search(Index, IProgressMonitor) SubTypeSearchJob.java:49
org.eclipse.jdt.internal.core.search.PatternSearchJob.execute(IProgressMonitor) PatternSearchJob.java:72
org.eclipse.jdt.internal.core.search.processing.JobManager.performConcurrentJob(IJob, int, IProgressMonitor) JobManager.java:265
org.eclipse.jdt.internal.core.hierarchy.IndexBasedHierarchyBuilder.legacySearchAllPossibleSubTypes(IType, IJavaSearchScope, Map, IPathRequestor, int, IProgressMonitor) IndexBasedHierarchyBuilder.java:676
org.eclipse.jdt.internal.core.hierarchy.IndexBasedHierarchyBuilder.searchAllPossibleSubTypes(IType, IJavaSearchScope, Map, IPathRequestor, int, IProgressMonitor) IndexBasedHierarchyBuilder.java:513
org.eclipse.jdt.internal.core.hierarchy.IndexBasedHierarchyBuilder.determinePossibleSubTypes(HashSet, IProgressMonitor) IndexBasedHierarchyBuilder.java:465
org.eclipse.jdt.internal.core.hierarchy.IndexBasedHierarchyBuilder.build(boolean) IndexBasedHierarchyBuilder.java:158
org.eclipse.jdt.internal.core.hierarchy.TypeHierarchy.compute() TypeHierarchy.java:323
org.eclipse.jdt.internal.core.hierarchy.TypeHierarchy.refresh(IProgressMonitor) TypeHierarchy.java:1319
org.eclipse.jdt.internal.core.CreateTypeHierarchyOperation.executeOperation() CreateTypeHierarchyOperation.java:94
org.eclipse.jdt.internal.core.JavaModelOperation.run(IProgressMonitor) JavaModelOperation.java:740
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(IProgressMonitor) JavaModelOperation.java:806
org.eclipse.jdt.internal.core.BinaryType.newTypeHierarchy(WorkingCopyOwner, IProgressMonitor) BinaryType.java:963
org.eclipse.jdt.internal.core.BinaryType.newTypeHierarchy(IProgressMonitor) BinaryType.java:922
org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyLifeCycle.createTypeHierarchy(IJavaElement[], IProgressMonitor) TypeHierarchyLifeCycle.java:295
org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyLifeCycle.doHierarchyRefresh(IJavaElement[], IProgressMonitor) TypeHierarchyLifeCycle.java:325
org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyLifeCycle.lambda$0(IJavaElement[], IProgressMonitor) TypeHierarchyLifeCycle.java:204
org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyLifeCycle$$Lambda$949.run(IProgressMonitor)
org.eclipse.jface.operation.ModalContext$ModalContextThread.run() ModalContext.java:122
Comment 1 Eclipse Genie CLA 2022-12-28 12:15:45 EST
This bug hasn't had any activity in quite some time. Maybe the problem got resolved, was a duplicate of something else, or became less pressing for some reason - or maybe it's still relevant but just hasn't been looked at yet.

If you have further information on the current state of the bug, please add it. The information can be, for example, that the problem still occurs, that you still want the feature, that more information is needed, or that the bug is (for whatever reason) no longer relevant.

--
The automated Eclipse Genie.