Bug 65680 - deadlock in JobManager.performConcurrentJob
Summary: deadlock in JobManager.performConcurrentJob
Status: RESOLVED DUPLICATE of bug 64646
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.0   Edit
Hardware: PC Linux-GTK
: P3 critical (vote)
Target Milestone: 3.0 RC2   Edit
Assignee: Philipe Mulet CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-06-04 04:50 EDT by Tom Hofmann CLA
Modified: 2004-06-07 11:44 EDT (History)
1 user (show)

See Also:


Attachments
reformated thread dump (13.30 KB, text/plain)
2004-06-07 10:00 EDT, Philipe Mulet CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Tom Hofmann CLA 2004-06-04 04:50:47 EDT
I20040602

- Memory usage was up > 500MByte due to some other bug
- Resolving an import hung eclipse, dump follows
- Why AddImportOnSelectionAction.findAllTypes does not use the AllTypesCache is
another issue I will log with JDT UI.


"VM Periodic Task Thread" prio=1 tid=0x0808fb00 nid=0x26fc waiting on condition
"Suspend Checker Thread" prio=1 tid=0x0808c920 nid=0x26fc runnable
^[[6~^[[6~^[[6~Full thread dump Java HotSpot(TM) Client VM (1.4.2_04-b05 mixed
mode):

"All Types Caching" prio=1 tid=0x186dc5f0 nid=0x26fc waiting on condition
[5b13f000..5b13f854]
        at java.lang.Thread.sleep(Native Method)
        at
org.eclipse.jdt.internal.core.search.processing.JobManager.performConcurrentJob(JobManager.java:243)
        at
org.eclipse.jdt.core.search.SearchEngine.searchAllTypeNames(SearchEngine.java:867)
        at
org.eclipse.jdt.internal.corext.util.AllTypesCache.search(AllTypesCache.java:526)
        at
org.eclipse.jdt.internal.corext.util.AllTypesCache$TypeCacher.doSearchTypes(AllTypesCache.java:197)
        at
org.eclipse.jdt.internal.corext.util.AllTypesCache$TypeCacher.run(AllTypesCache.java:166)

"Worker-168" prio=1 tid=0x08e6da88 nid=0x26fc in Object.wait() [5b743000..5b743854]
        at java.lang.Object.wait(Native Method)
        at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:209)
        - locked <0x45eb2218> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:236)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:59)

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=1 tid=0x08cb8cd0
nid=0x26fc in Object.wait() [5b8c6000..5b8c6854]
        at java.lang.Object.wait(Native Method)
        at
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:172)
        - locked <0x49028ac0> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=1 tid=0x0905cd60
nid=0x26fc in Object.wait() [5b845000..5b845854]
        at java.lang.Object.wait(Native Method)
        at
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:172)
        - locked <0x49028b20> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=1 tid=0x09067df0
nid=0x26fc in Object.wait() [5bb82000..5bb82854]
        at java.lang.Object.wait(Native Method)
        at
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:172)
        - locked <0x48d58b20> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)

"org.eclipse.jdt.debug: JDI Event Dispatcher" prio=1 tid=0x08ead1f8 nid=0x26fc
in Object.wait() [59e92000..59e92854]
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:429)
        at
org.eclipse.jdi.internal.connect.PacketReceiveManager.waitForPacketAvailable(PacketReceiveManager.java:168)
        at
org.eclipse.jdi.internal.connect.PacketReceiveManager.getCommand(PacketReceiveManager.java:93)
        - locked <0x488dcb10> (a
org.eclipse.jdi.internal.connect.PacketReceiveManager)
        at org.eclipse.jdi.internal.MirrorImpl.getCommandVM(MirrorImpl.java:276)
        at
org.eclipse.jdi.internal.event.EventQueueImpl.remove(EventQueueImpl.java:63)
        at
org.eclipse.jdi.internal.event.EventQueueImpl.remove(EventQueueImpl.java:48)
        at
org.eclipse.jdt.internal.debug.core.EventDispatcher.run(EventDispatcher.java:213)
        at java.lang.Thread.run(Thread.java:534)

"Packet Send Manager" prio=1 tid=0x08f15228 nid=0x26fc in Object.wait()
[5b1c0000..5b1c0854]
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:429)
        at
org.eclipse.jdi.internal.connect.PacketSendManager.sendAvailablePackets(PacketSendManager.java:94)
        - locked <0x488dcc58> (a org.eclipse.jdi.internal.connect.PacketSendManager)
        at
org.eclipse.jdi.internal.connect.PacketSendManager.run(PacketSendManager.java:54)
        at java.lang.Thread.run(Thread.java:534)

"Console Polling Thread" prio=1 tid=0x5b9e0208 nid=0x26fc waiting on condition
[5aac3000..5aac3854]
        at java.lang.Thread.sleep(Native Method)
        at
org.eclipse.debug.internal.ui.views.console.ConsoleDocumentPartitioner.pollAndSleep(ConsoleDocumentPartitioner.java:565)
        at
org.eclipse.debug.internal.ui.views.console.ConsoleDocumentPartitioner$1.run(ConsoleDocumentPartitioner.java:549)
        at java.lang.Thread.run(Thread.java:534)

"Input Stream Monitor" prio=1 tid=0x08fb8858 nid=0x26fc in Object.wait()
[5b0be000..5b0be854]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x488dcde8> (a java.lang.Object)
        at java.lang.Object.wait(Object.java:429)
        at
org.eclipse.debug.internal.core.InputStreamMonitor.writeNext(InputStreamMonitor.java:124)
        - locked <0x488dcde8> (a java.lang.Object)
        at
org.eclipse.debug.internal.core.InputStreamMonitor.write(InputStreamMonitor.java:99)
        at
org.eclipse.debug.internal.core.InputStreamMonitor$1.run(InputStreamMonitor.java:75)
        at java.lang.Thread.run(Thread.java:534)

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=1 tid=0x5addc6b0
nid=0x26fc in Object.wait() [5b343000..5b343854]
        at java.lang.Object.wait(Native Method)
        at
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:172)
        - locked <0x4829eb88> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=1 tid=0x08b69530
nid=0x26fc in Object.wait() [59fe0000..59fe0854]
        at java.lang.Object.wait(Native Method)
        at
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:172)
        - locked <0x47a4d4b0> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)

"Worker-12" prio=1 tid=0x5ad7b0a0 nid=0x26fc in Object.wait() [5a061000..5a061854]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x488dcf38> (a java.lang.UNIXProcess)
        at java.lang.Object.wait(Object.java:429)
        at java.lang.UNIXProcess.waitFor(UNIXProcess.java:160)
        - locked <0x488dcf38> (a java.lang.UNIXProcess)
        at
org.eclipse.debug.core.model.RuntimeProcess$ProcessMonitorJob.run(RuntimeProcess.java:362)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:66)

"Java indexing" daemon prio=1 tid=0x085572a0 nid=0x26fc in Object.wait()
[59e11000..59e11854]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x46a13cb8> (a
org.eclipse.jdt.internal.core.search.indexing.IndexManager)
        at java.lang.Object.wait(Object.java:429)
        at
org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:344)
        - locked <0x46a13cb8> (a
org.eclipse.jdt.internal.core.search.indexing.IndexManager)
        at java.lang.Thread.run(Thread.java:534)

"Reference Cleaner - 2" prio=1 tid=0x08246528 nid=0x26fc in Object.wait()
[598f4000..598f4854]
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
        - locked <0x46426b08> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
        at
org.eclipse.jface.action.ActionContributionItem$ImageCache$ReferenceCleanerThread.run(ActionContributionItem.java:207)

"Reference Cleaner - 1" prio=1 tid=0x08246da8 nid=0x26fc in Object.wait()
[59873000..59873854]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x46426b78> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
        - locked <0x46426b78> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
        at
org.eclipse.jface.action.ActionContributionItem$ImageCache$ReferenceCleanerThread.run(ActionContributionItem.java:207)

"Start Level Event Dispatcher" daemon prio=1 tid=0x08148c70 nid=0x26fc in
Object.wait() [58a93000..58a93854]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x45a70060> (a
org.eclipse.osgi.framework.eventmgr.EventThread)
        at java.lang.Object.wait(Object.java:429)
        at
org.eclipse.osgi.framework.eventmgr.EventThread.getNextEvent(EventThread.java:162)
        - locked <0x45a70060> (a org.eclipse.osgi.framework.eventmgr.EventThread)
        at org.eclipse.osgi.framework.eventmgr.EventThread.run(EventThread.java:100)

"Framework Event Dispatcher" daemon prio=1 tid=0x08141a80 nid=0x26fc in
Object.wait() [58a12000..58a12854]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x45a70240> (a
org.eclipse.osgi.framework.eventmgr.EventThread)
        at java.lang.Object.wait(Object.java:429)
        at
org.eclipse.osgi.framework.eventmgr.EventThread.getNextEvent(EventThread.java:162)
        - locked <0x45a70240> (a org.eclipse.osgi.framework.eventmgr.EventThread)
        at org.eclipse.osgi.framework.eventmgr.EventThread.run(EventThread.java:100)

"Signal Dispatcher" daemon prio=1 tid=0x0808d2f0 nid=0x26fc waiting on condition
[0..0]

"Finalizer" daemon prio=1 tid=0x080886c0 nid=0x26fc in Object.wait()
[583f5000..583f5854]
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
        - locked <0x45a70368> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=1 tid=0x08087ad0 nid=0x26fc in Object.wait()
[58374000..58374854]
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:429)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115)
        - locked <0x45a700b0> (a java.lang.ref.Reference$Lock)

"main" prio=1 tid=0x080522f8 nid=0x26fc waiting on condition [bfffa000..bfffc6b8]
        at java.lang.Thread.sleep(Native Method)
        at
org.eclipse.jdt.internal.core.search.processing.JobManager.performConcurrentJob(JobManager.java:243)
        at
org.eclipse.jdt.core.search.SearchEngine.searchAllTypeNames(SearchEngine.java:867)
        at
org.eclipse.jdt.internal.ui.javaeditor.AddImportOnSelectionAction.findAllTypes(AddImportOnSelectionAction.java:231)
        at
org.eclipse.jdt.internal.ui.javaeditor.AddImportOnSelectionAction.run(AddImportOnSelectionAction.java:137)
        at org.eclipse.jface.action.Action.runWithEvent(Action.java:881)
        at org.eclipse.ui.commands.ActionHandler.execute(ActionHandler.java:141)
        at org.eclipse.ui.internal.commands.Command.execute(Command.java:132)
        at
org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:469)
        at
org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:887)
        at
org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:928)
        at
org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(WorkbenchKeyboard.java:546)
        at
org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$2(WorkbenchKeyboard.java:494)
        at
org.eclipse.ui.internal.keys.WorkbenchKeyboard$1.handleEvent(WorkbenchKeyboard.java:259)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
        at org.eclipse.swt.widgets.Display.filterEvent(Display.java:949)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:943)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:968)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:953)
        at org.eclipse.swt.widgets.Control.sendKeyEvent(Control.java:2304)
        at org.eclipse.swt.widgets.Control.gtk_key_press_event(Control.java:1800)
        at org.eclipse.swt.widgets.Composite.gtk_key_press_event(Composite.java:439)
        at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1194)
        at org.eclipse.swt.widgets.Display.windowProc(Display.java:3012)
        at org.eclipse.swt.internal.gtk.OS.gtk_main_do_event(Native Method)
        at org.eclipse.swt.widgets.Display.eventProc(Display.java:815)
        at org.eclipse.swt.internal.gtk.OS.gtk_main_iteration(Native Method)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2222)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1363)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1334)
        at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:253)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:141)
        at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:96)
        at
org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:334)
        at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:273)
        at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:128)
        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:324)
        at org.eclipse.core.launcher.Main.basicRun(Main.java:185)
        at org.eclipse.core.launcher.Main.run(Main.java:638)
        at org.eclipse.core.launcher.Main.main(Main.java:622)

"VM Thread" prio=1 tid=0x080867b0 nid=0x26fc runnable

"VM Periodic Task Thread" prio=1 tid=0x0808fb00 nid=0x26fc waiting on condition
"Suspend Checker Thread" prio=1 tid=0x0808c920 nid=0x26fc runnable
Comment 1 Tom Hofmann CLA 2004-06-04 04:51:47 EDT
adding dirk
Comment 2 Jerome Lanneluc CLA 2004-06-04 06:13:19 EDT
Tom, do you hav anything in the .log related to Java indexing ?
Comment 3 Tom Hofmann CLA 2004-06-04 10:34:50 EDT
no.
Comment 4 Philipe Mulet CLA 2004-06-07 10:00:45 EDT
Created attachment 11658 [details]
reformated thread dump
Comment 5 Philipe Mulet CLA 2004-06-07 10:07:22 EDT
Dump indicates that "main" and "all types caching" are waiting on indexing 
activity to complete (active wait until ready to proceed).

However indexer claims it is idle.

"Java indexing" daemon prio=1 tid=0x085572a0 nid=0x26fc in Object.wait()
  at java.lang.Object.wait(Native Method)
  - waiting on <0x46a13cb8> (a ...IndexManager)
  at java.lang.Object.wait(Object.java:429)
  at ...JobManager.run(JobManager.java:344)
  - locked <0x46a13cb8> (a ...IndexManager)
  at java.lang.Thread.run(Thread.java:534)

Offending line in JobManager (344) is:
  this.wait(); // wait until a new job is posted (or reenabled:38901)


Looks like the indexer became inconsistent, and got fooled into thinking it 
had more jobs to execute, though the list is empty.
Comment 6 Philipe Mulet CLA 2004-06-07 10:08:14 EDT
Tom - do you have steps to reproduce ?
Comment 7 Jerome Lanneluc CLA 2004-06-07 10:53:14 EDT
See also bug 64646
Comment 8 Tom Hofmann CLA 2004-06-07 11:41:28 EDT
no steps, sorry.
Comment 9 Philipe Mulet CLA 2004-06-07 11:44:54 EDT
dup

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