Community
Participate
Working Groups
Created attachment 287235 [details] Thread dump Version: 2021-09 (4.21) Build id: I20210906-0500 After a prolonged development session, I was forced to kill Eclipse because of a UI hang. The thread trace below shows a surprising amount of non-trivial activity on the main thread that seemed to be the only one active. So, yet again, why is there no ctrl-\ or equivalent to regain control of a malfunctioning UI thread? Immediately prior to the hang I had re-auto-generated OCLmetamodel.java which is a 4500 line file whose import formatting is inferior benefiting from a click on blank line, add space, Ctrl-S to normalize it. At the time, a compare editor had been opened from the GIT staging view for OCLmetamodel.java so it was subject to a double edit of content changed on the file system. Two other editors, not obviously interesting, were also open. Attempting to reproduce in a fresh Eclipse failed. It showed that the normalise and save normally takes barely a second. Similarly with a concurrent Compare Editor, it again takes barely a second. The stack trace shows that somehow the save action is involved in frighteningly recursive searches, possibly related to my use of @NonNull and @Nullable Annotations; yoyally unsuitable for the main UI thread. Full thread dump attached. "main" #1 prio=6 os_prio=0 cpu=2631453.13ms elapsed=183896.64s tid=0x0000019384913800 nid=0x27dc runnable [0x0000007a507f8000] java.lang.Thread.State: RUNNABLE at org.eclipse.jdt.internal.core.JavaElement.equals(JavaElement.java:185) at org.eclipse.jdt.internal.core.SourceRefElement.equals(SourceRefElement.java:89) at org.eclipse.jdt.internal.core.SourceType.equals(SourceType.java:202) at org.eclipse.jdt.internal.core.JavaElement.equals(JavaElement.java:185) at org.eclipse.jdt.internal.core.SourceRefElement.equals(SourceRefElement.java:89) at org.eclipse.jdt.internal.core.SourceType.equals(SourceType.java:202) at org.eclipse.jdt.internal.core.JavaElement.equals(JavaElement.java:185) at org.eclipse.jdt.internal.core.SourceRefElement.equals(SourceRefElement.java:89) at org.eclipse.jdt.internal.core.SourceField.equals(SourceField.java:35) at org.eclipse.jdt.internal.core.JavaElement.equals(JavaElement.java:185) at org.eclipse.jdt.internal.core.SourceRefElement.equals(SourceRefElement.java:89) at org.eclipse.jdt.internal.core.Annotation.equals(Annotation.java:59) at java.util.HashMap$TreeNode.find(java.base@11.0.12/HashMap.java:1914) at java.util.HashMap$TreeNode.find(java.base@11.0.12/HashMap.java:1924) at java.util.HashMap$TreeNode.find(java.base@11.0.12/HashMap.java:1924) at java.util.HashMap$TreeNode.find(java.base@11.0.12/HashMap.java:1924) at java.util.HashMap$TreeNode.find(java.base@11.0.12/HashMap.java:1924) at java.util.HashMap$TreeNode.find(java.base@11.0.12/HashMap.java:1924) at java.util.HashMap$TreeNode.putTreeVal(java.base@11.0.12/HashMap.java:2043) at java.util.HashMap.putVal(java.base@11.0.12/HashMap.java:633) at java.util.HashMap.put(java.base@11.0.12/HashMap.java:607) at org.eclipse.jdt.internal.core.JavaModelCache.putInfo(JavaModelCache.java:252) at org.eclipse.jdt.internal.core.JavaModelManager.putInfos(JavaModelManager.java:4074) - locked <0x0000000707f53bc8> (a org.eclipse.jdt.internal.core.JavaModelManager) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:620) at org.eclipse.jdt.internal.core.BecomeWorkingCopyOperation.executeOperation(BecomeWorkingCopyOperation.java:43) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:740) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:806) at org.eclipse.jdt.internal.core.CompilationUnit.getWorkingCopy(CompilationUnit.java:1041) at org.eclipse.jdt.internal.core.CompilationUnit.getWorkingCopy(CompilationUnit.java:1007) at org.eclipse.jdt.internal.corext.util.JavaModelUtil.getStaticImportFavorites(JavaModelUtil.java:1251) at org.eclipse.jdt.core.manipulation.OrganizeImportsOperation.addStaticImports(OrganizeImportsOperation.java:686) at org.eclipse.jdt.core.manipulation.OrganizeImportsOperation.createTextEdit(OrganizeImportsOperation.java:599) at org.eclipse.jdt.internal.corext.fix.ImportsFix.createCleanUp(ImportsFix.java:51) at org.eclipse.jdt.internal.ui.fix.ImportsCleanUp.createFix(ImportsCleanUp.java:62) at org.eclipse.jdt.internal.corext.fix.CleanUpRefactoring.calculateChange(CleanUpRefactoring.java:768) at org.eclipse.jdt.internal.corext.fix.CleanUpPostSaveListener.saved(CleanUpPostSaveListener.java:384) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider$4.run(CompilationUnitDocumentProvider.java:1642) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.notifyPostSaveListeners(CompilationUnitDocumentProvider.java:1636) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.commitWorkingCopy(CompilationUnitDocumentProvider.java:1420) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider$3.execute(CompilationUnitDocumentProvider.java:1495) at org.eclipse.ui.editors.text.TextFileDocumentProvider$DocumentProviderOperation.run(TextFileDocumentProvider.java:133) at org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation.execute(WorkspaceModifyDelegatingOperation.java:71) at org.eclipse.ui.actions.WorkspaceModifyOperation.lambda$0(WorkspaceModifyOperation.java:110) at org.eclipse.ui.actions.WorkspaceModifyOperation$$Lambda$1623/0x00000008019f1c40.run(Unknown Source) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2313) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2338) at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:131) - locked <0x000000073ea57ba8> (a org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation) at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:76) at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:66) at org.eclipse.ui.editors.text.TextFileDocumentProvider.executeOperation(TextFileDocumentProvider.java:461) at org.eclipse.ui.editors.text.TextFileDocumentProvider.saveDocument(TextFileDocumentProvider.java:764) at org.eclipse.ui.texteditor.AbstractTextEditor.performSave(AbstractTextEditor.java:5008) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.performSave(CompilationUnitEditor.java:1262) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.doSave(CompilationUnitEditor.java:1316) - locked <0x0000000730a436e8> (a org.eclipse.jdt.internal.core.CompilationUnit) at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.doSave(AbstractTextEditor.java:7152) at org.eclipse.ui.Saveable.doSave(Saveable.java:213) at org.eclipse.ui.internal.SaveableHelper.doSaveModel(SaveableHelper.java:333) at org.eclipse.ui.internal.SaveableHelper.lambda$1(SaveableHelper.java:196) at org.eclipse.ui.internal.SaveableHelper$$Lambda$1638/0x00000008019f6440.run(Unknown Source) at org.eclipse.ui.internal.SaveableHelper.lambda$3(SaveableHelper.java:271) at org.eclipse.ui.internal.SaveableHelper$$Lambda$1639/0x0000000801a00040.run(Unknown Source) at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:434) at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:352) at org.eclipse.ui.internal.WorkbenchWindow.lambda$7(WorkbenchWindow.java:2345) at org.eclipse.ui.internal.WorkbenchWindow$$Lambda$987/0x0000000800ba4040.run(Unknown Source) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:74) at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2343) at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:278) at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:260) at org.eclipse.ui.internal.SaveableHelper.saveModels(SaveableHelper.java:207) at org.eclipse.ui.internal.SaveableHelper.savePart(SaveableHelper.java:150) at org.eclipse.ui.internal.WorkbenchPage.saveSaveable(WorkbenchPage.java:3820) at org.eclipse.ui.internal.WorkbenchPage.saveEditor(WorkbenchPage.java:3833) at org.eclipse.ui.internal.handlers.SaveHandler.execute(SaveHandler.java:82) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:283) at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:97) at jdk.internal.reflect.GeneratedMethodAccessor250.invoke(Unknown Source) at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@11.0.12/DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(java.base@11.0.12/Method.java:566) at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:317) at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:251) at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:173) at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:156) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488) 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:580) at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:647) at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:439) 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:1270) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1059) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1084) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1069) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1111) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1107) at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1536) at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:4875) at org.eclipse.swt.widgets.Canvas.WM_CHAR(Canvas.java:345) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4753) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4958) at org.eclipse.swt.internal.win32.OS.DispatchMessage(Native Method) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3624) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1150) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1041) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644) at org.eclipse.ui.internal.Workbench$$Lambda$217/0x000000080047e040.run(Unknown Source) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@11.0.12/Native Method) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@11.0.12/NativeMethodAccessorImpl.java:62) at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@11.0.12/DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(java.base@11.0.12/Method.java:566) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596) at org.eclipse.equinox.launcher.Main.run(Main.java:1467) at org.eclipse.equinox.launcher.Main.main(Main.java:1440)
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.