Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 57998

Summary: Deadlock during CVS checkout
Product: [Eclipse Project] Platform Reporter: Philipe Mulet <philippe_mulet>
Component: ResourcesAssignee: Platform-Resources-Inbox <platform-resources-inbox>
Status: RESOLVED DUPLICATE QA Contact:
Severity: normal    
Priority: P3    
Version: 3.0   
Target Milestone: ---   
Hardware: PC   
OS: Windows 2000   
Whiteboard:
Attachments:
Description Flags
UI blocked dialog
none
UI blocked dialog none

Description Philipe Mulet CLA 2004-04-09 06:39:38 EDT
Build 20040407 running on sdk1.4.2

Was performing a CVS checkout of jdt/core source projects, while this was 
happening I triggered a build, which raise the UI is blocked dialog (see 
attached screenshot).

However without me cancelling anything, it entered a deadlock.

Here is thread dump while dialog is open:

Full thread dump Java HotSpot(TM) Client VM (1.4.2_02-b03 mixed mode):

"Worker-8" prio=5 tid=0x18844350 nid=0x988 in Object.wait() [3a1f000..3a1fd88]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x106eb080> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:189)
        - locked <0x106eb080> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.startJob
(WorkerPool.java:215)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"Java indexing" daemon prio=4 tid=0x183296d8 nid=0x6a8 in Object.wait() 
[1901f000..1901fd88]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x10916dd8> (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:327)
        - locked <0x10916dd8> (a 
org.eclipse.jdt.internal.core.search.indexing.IndexManager)
        at java.lang.Thread.run(Thread.java:534)

"Start Level Event Dispatcher" daemon prio=5 tid=0x183dd0d0 nid=0x580 in 
Object.wait() [184ff000..184ffd88]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x105719e8> (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:167)
        - locked <0x105719e8> (a 
org.eclipse.osgi.framework.eventmgr.EventThread)
        at org.eclipse.osgi.framework.eventmgr.EventThread.run
(EventThread.java:118)

"Framework Event Dispatcher" daemon prio=5 tid=0x183f8e80 nid=0x7d4 in 
Object.wait() [184bf000..184bfd88]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x10571a38> (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:167)
        - locked <0x10571a38> (a 
org.eclipse.osgi.framework.eventmgr.EventThread)
        at org.eclipse.osgi.framework.eventmgr.EventThread.run
(EventThread.java:118)

"Signal Dispatcher" daemon prio=10 tid=0x00920fe8 nid=0x7c4 waiting on 
condition [0..0]

"Finalizer" daemon prio=9 tid=0x0091e230 nid=0x598 in Object.wait() 
[1816f000..1816fd88]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x104fa650> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
        - locked <0x104fa650> (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=10 tid=0x0091cdd8 nid=0x5dc in Object.wait() 
[1812f000..1812fd88]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x104fa6b8> (a java.lang.ref.Reference$Lock)
        at java.lang.Object.wait(Object.java:429)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115)
        - locked <0x104fa6b8> (a java.lang.ref.Reference$Lock)

"main" prio=7 tid=0x00235d00 nid=0x970 in Object.wait() [6e000..6fc3c]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x112ebcb0> (a 
org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob)
        at org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.joinRun
(ImplicitJobs.java:118)
        - locked <0x112ebcb0> (a 
org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob)
        at org.eclipse.core.internal.jobs.ImplicitJobs.begin
(ImplicitJobs.java:265)
        at org.eclipse.core.internal.jobs.JobManager.beginRule
(JobManager.java:149)
        at org.eclipse.core.internal.resources.WorkManager.checkIn
(WorkManager.java:88)
        at org.eclipse.core.internal.resources.Workspace.prepareOperation
(Workspace.java:1521)
        at org.eclipse.core.internal.resources.Workspace.run
(Workspace.java:1554)
        at org.eclipse.core.internal.resources.Workspace.run
(Workspace.java:1578)
        at org.eclipse.ui.internal.ide.dialogs.CleanDialog.buttonPressed
(CleanDialog.java:59)
        at org.eclipse.jface.dialogs.Dialog$1.widgetSelected(Dialog.java:413)
        at org.eclipse.swt.widgets.TypedListener.handleEvent
(TypedListener.java:89)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:769)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2587)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2265)
        at org.eclipse.ui.internal.dialogs.EventLoopProgressMonitor.runEventLoop
(EventLoopProgressMonitor.java:114)
        at org.eclipse.ui.internal.dialogs.EventLoopProgressMonitor.isCanceled
(EventLoopProgressMonitor.java:94)
        at org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.isCanceled
(ImplicitJobs.java:137)
        at org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.joinRun
(ImplicitJobs.java:106)
        at org.eclipse.core.internal.jobs.ImplicitJobs.begin
(ImplicitJobs.java:265)
        at org.eclipse.core.internal.jobs.JobManager.beginRule
(JobManager.java:149)
        at org.eclipse.core.internal.resources.WorkManager.checkIn
(WorkManager.java:88)
        at org.eclipse.core.internal.resources.Workspace.prepareOperation
(Workspace.java:1521)
        at org.eclipse.core.internal.resources.Workspace.run
(Workspace.java:1554)
        at org.eclipse.core.internal.resources.Workspace.run
(Workspace.java:1578)
        at org.eclipse.ui.internal.ide.dialogs.CleanDialog.buttonPressed
(CleanDialog.java:59)
        at org.eclipse.jface.dialogs.Dialog$1.widgetSelected(Dialog.java:413)
        at org.eclipse.swt.widgets.TypedListener.handleEvent
(TypedListener.java:89)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:769)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2587)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2265)
        at org.eclipse.jface.window.Window.runEventLoop(Window.java:670)
        at org.eclipse.jface.window.Window.open(Window.java:650)
        at org.eclipse.ui.internal.ide.actions.BuildCleanAction.run
(BuildCleanAction.java:43)
        at org.eclipse.jface.action.Action.runWithEvent(Action.java:881)
        at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection
(ActionContributionItem.java:550)
        at org.eclipse.jface.action.ActionContributionItem.access$2
(ActionContributionItem.java:502)
        at org.eclipse.jface.action.ActionContributionItem$5.handleEvent
(ActionContributionItem.java:435)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:769)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2587)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2265)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1561)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1532)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench
(Workbench.java:257)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:140)
        at org.eclipse.ui.internal.ide.IDEApplication.run
(IDEApplication.java:90)
        at org.eclipse.core.internal.runtime.PlatformActivator$1.run
(PlatformActivator.java:279)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run
(EclipseStarter.java:241)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run
(EclipseStarter.java:117)
        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:267)
        at org.eclipse.core.launcher.Main.run(Main.java:692)
        at org.eclipse.core.launcher.Main.main(Main.java:676)

"VM Thread" prio=5 tid=0x0095cdd8 nid=0x77c runnable

"VM Periodic Task Thread" prio=10 tid=0x0023e790 nid=0x748 waiting on condition
"Suspend Checker Thread" prio=10 tid=0x00920698 nid=0x5a4 runnable
Comment 1 Philipe Mulet CLA 2004-04-09 06:40:28 EDT
Created attachment 9352 [details]
UI blocked dialog
Comment 2 Philipe Mulet CLA 2004-04-09 06:43:43 EDT
Created attachment 9353 [details]
UI blocked dialog

Actually there are 2 dialogs (UI blocked open), and I forgot to mention I had
selected 'clean' before building.
Comment 3 Philipe Mulet CLA 2004-04-09 06:45:34 EDT
I did cancel the User interface operation awaiting lock, then it resumed 
properly.
Comment 4 John Arthorne CLA 2004-04-12 12:15:26 EDT
Also, the fact that clean happens in the UI thread (making it appear like a
deadlock) is bug 55741).

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