Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 280298 - deadlock opening quick outline
Summary: deadlock opening quick outline
Status: RESOLVED DUPLICATE of bug 266510
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Text (show other bugs)
Version: 3.5   Edit
Hardware: PC Linux
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: JDT-Text-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-06-15 12:42 EDT by Rafael Chaves CLA
Modified: 2009-06-16 12:33 EDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Rafael Chaves CLA 2009-06-15 12:42:17 EDT
Eclipse 3.5 RC?

SDK Build Id: I20090522-1710
JDT Build id: I20090515-1143


Got a deadlock trying to open the outline pop-up (Ctrl-O) for a class.

Here is the thread dump, I am omitting the system threads (JVM/OSGi) and any idle worker threads:

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=10 tid=0x08ade400 nid=0x22e3 in Object.wait() [0xb3016000..0xb3016ec0]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x66fe7bb0> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)
	at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:179)
	- locked <0x66fe7bb0> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)

"Worker-10" prio=10 tid=0xb42d0000 nid=0x225b waiting for monitor entry [0xb31fe000..0xb31fef40]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at org.eclipse.jdt.internal.ui.viewsupport.SelectionListenerWithASTManager$3.run(SelectionListenerWithASTManager.java:154)
	- waiting to lock <0x6702bf38> (a java.lang.Object)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"Worker-5" prio=10 tid=0x084bb800 nid=0x2256 in Object.wait() [0xb379e000..0xb379f0c0]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x641d8d80> (a java.lang.Object)
	at java.lang.Object.wait(Object.java:485)
	at org.eclipse.jdt.internal.ui.javaeditor.ASTProvider.getAST(ASTProvider.java:456)
	- locked <0x641d8d80> (a java.lang.Object)
	at org.eclipse.jdt.ui.SharedASTProvider.getAST(SharedASTProvider.java:126)
	at org.eclipse.jdt.internal.ui.viewsupport.SelectionListenerWithASTManager$PartListenerGroup.calculateASTandInform(SelectionListenerWithASTManager.java:169)
	at org.eclipse.jdt.internal.ui.viewsupport.SelectionListenerWithASTManager$3.run(SelectionListenerWithASTManager.java:154)
	- locked <0x6702bf38> (a java.lang.Object)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=10 tid=0x08162800 nid=0x2219 in Object.wait() [0xb37ef000..0xb37f00c0]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x64502568> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)
	at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:179)
	- locked <0x64502568> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)

"Java indexing" daemon prio=10 tid=0xb43b1c00 nid=0x2165 in Object.wait() [0xb3665000..0xb3665f40]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x640c1110> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager)
	at java.lang.Object.wait(Object.java:485)
	at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:378)
	- locked <0x640c1110> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager)
	at java.lang.Thread.run(Thread.java:619)

"main" prio=10 tid=0x080b0c00 nid=0x1fc3 in Object.wait() [0xbfb98000..0xbfb9bc48]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x641d8d80> (a java.lang.Object)
	at java.lang.Object.wait(Object.java:485)
	at org.eclipse.jdt.internal.ui.javaeditor.ASTProvider.getAST(ASTProvider.java:456)
	- locked <0x641d8d80> (a java.lang.Object)
	at org.eclipse.jdt.ui.SharedASTProvider.getAST(SharedASTProvider.java:126)
	at org.eclipse.jdt.ui.OverrideIndicatorLabelDecorator.getOverrideIndicators(OverrideIndicatorLabelDecorator.java:161)
	at org.eclipse.jdt.ui.OverrideIndicatorLabelDecorator.computeAdornmentFlags(OverrideIndicatorLabelDecorator.java:136)
	at org.eclipse.jdt.ui.OverrideIndicatorLabelDecorator.decorateImage(OverrideIndicatorLabelDecorator.java:110)
	at org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider.decorateImage(JavaUILabelProvider.java:134)
	at org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider.getImage(JavaUILabelProvider.java:149)
	at org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.getImage(DelegatingStyledCellLabelProvider.java:184)
	at org.eclipse.jface.viewers.DecoratingStyledCellLabelProvider.getImage(DecoratingStyledCellLabelProvider.java:167)
	at org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.update(DelegatingStyledCellLabelProvider.java:118)
	at org.eclipse.jface.viewers.DecoratingStyledCellLabelProvider.update(DecoratingStyledCellLabelProvider.java:134)
	at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:145)
	at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:932)
	at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run(AbstractTreeViewer.java:102)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.runtime.Platform.run(Platform.java:888)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
	at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:1012)
	at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:481)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.runtime.Platform.run(Platform.java:888)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
	at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:2111)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:827)
	at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:802)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:776)
	at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:639)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpandToLevel(AbstractTreeViewer.java:1709)
	at org.eclipse.jdt.internal.ui.text.JavaOutlineInformationControl$OutlineTreeViewer.internalExpandToLevel(JavaOutlineInformationControl.java:225)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpandToLevel(AbstractTreeViewer.java:1719)
	at org.eclipse.jdt.internal.ui.text.JavaOutlineInformationControl$OutlineTreeViewer.internalExpandToLevel(JavaOutlineInformationControl.java:225)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalInitializeTree(AbstractTreeViewer.java:1491)
	at org.eclipse.jface.viewers.TreeViewer.internalInitializeTree(TreeViewer.java:828)
	at org.eclipse.jface.viewers.AbstractTreeViewer$5.run(AbstractTreeViewer.java:1474)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1392)
	at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:402)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1353)
	at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged(AbstractTreeViewer.java:1467)
	at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:274)
	at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1634)
	at org.eclipse.jdt.internal.ui.text.AbstractInformationControl.inputChanged(AbstractInformationControl.java:577)
	at org.eclipse.jdt.internal.ui.text.JavaOutlineInformationControl.setInput(JavaOutlineInformationControl.java:622)
	at org.eclipse.jface.text.AbstractInformationControlManager.internalShowInformationControl(AbstractInformationControlManager.java:1170)
	at org.eclipse.jface.text.AbstractInformationControlManager.presentInformation(AbstractInformationControlManager.java:1139)
	at org.eclipse.jface.text.AbstractInformationControlManager.setInformation(AbstractInformationControlManager.java:418)
	at org.eclipse.jface.text.information.InformationPresenter.computeInformation(InformationPresenter.java:353)
	at org.eclipse.jface.text.AbstractInformationControlManager.doShowInformation(AbstractInformationControlManager.java:1120)
	at org.eclipse.jface.text.AbstractInformationControlManager.showInformation(AbstractInformationControlManager.java:1110)
	at org.eclipse.jdt.internal.ui.javaeditor.JavaSourceViewer.doOperation(JavaSourceViewer.java:174)
	at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor$AdaptedSourceViewer.doOperation(CompilationUnitEditor.java:199)
	at org.eclipse.ui.texteditor.TextOperationAction$1.run(TextOperationAction.java:131)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.texteditor.TextOperationAction.run(TextOperationAction.java:129)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
	at org.eclipse.ui.commands.ActionHandler.execute(ActionHandler.java:185)
	at org.eclipse.ui.internal.handlers.LegacyHandlerWrapper.execute(LegacyHandlerWrapper.java:109)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
	at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:470)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:824)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:880)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(WorkbenchKeyboard.java:569)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$3(WorkbenchKeyboard.java:510)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard$KeyDownFilter.handleEvent(WorkbenchKeyboard.java:125)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1466)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1175)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1200)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1185)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1212)
	at org.eclipse.swt.widgets.Widget.gtk_key_press_event(Widget.java:706)
	at org.eclipse.swt.widgets.Control.gtk_key_press_event(Control.java:2830)
	at org.eclipse.swt.widgets.Composite.gtk_key_press_event(Composite.java:702)
	at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1570)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4570)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4183)
	at org.eclipse.swt.internal.gtk.OS._gtk_main_do_event(Native Method)
	at org.eclipse.swt.internal.gtk.OS.gtk_main_do_event(OS.java:7586)
	at org.eclipse.swt.widgets.Display.eventProc(Display.java:1184)
	at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
	at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:1858)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3102)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
	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:368)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	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:597)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
Comment 1 Markus Keller CLA 2009-06-16 08:23:48 EDT
Looks like everyone's waiting in ASTProvider.java:456.

Rafael, how do you know it's a deadlock and not just slowness that would eventually resolve itself?
Comment 2 Dani Megert CLA 2009-06-16 09:13:27 EDT
Looks like bug 266510.
Comment 3 Markus Keller CLA 2009-06-16 09:32:17 EDT
> Looks like bug 266510.

Yep. Rafael, do you remember what file you were editing and when this happened (right after startup / during or after a build / after a crash / while doing a search / ...)?
Comment 4 Rafael Chaves CLA 2009-06-16 12:25:45 EDT
Markus, it was just intuition. The UI froze for several minutes, the machine didn't seem busy, and the threads shown below didn't seem to be doing any actual work (but I guess if this is a duplicate of bug 266510 you are saying some of them are?).

Sorry, don't remember the details of when it happened.  
Comment 5 Dani Megert CLA 2009-06-16 12:33:31 EDT

*** This bug has been marked as a duplicate of bug 266510 ***