Bug 242646 - deadlock on org.eclipse.jdt.internal.core.ExternalFoldersManager
Summary: deadlock on org.eclipse.jdt.internal.core.ExternalFoldersManager
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.5   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.4.1   Edit
Assignee: Jerome Lanneluc CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-07-30 19:09 EDT by Michael Scharf CLA
Modified: 2009-05-07 03:32 EDT (History)
1 user (show)

See Also:


Attachments
the full stack trace (27.12 KB, text/plain)
2008-07-30 19:11 EDT, Michael Scharf CLA
no flags Details
Proposed fix (2.59 KB, patch)
2008-08-19 11:20 EDT, Jerome Lanneluc CLA
no flags Details | Diff
Patch against R3_4_maintenance (2.69 KB, patch)
2008-08-20 09:07 EDT, Jerome Lanneluc CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Scharf CLA 2008-07-30 19:09:51 EDT
I wanted to close eclipse and it got stuck (see stack trace)

ModalContext" prio=6 tid=0x09e4a4d0 nid=0x1b88 in Object.wait() [0x07d3f000..0x07d3fce8]
	at java.lang.Object.wait(Native Method)
	at org.eclipse.core.internal.jobs.Semaphore.acquire(Semaphore.java:38)
	- locked <0x117b00e0> (a org.eclipse.core.internal.jobs.Semaphore)
	at org.eclipse.core.internal.jobs.OrderedLock.doAcquire(OrderedLock.java:169)
	at org.eclipse.core.internal.jobs.OrderedLock.acquire(OrderedLock.java:105)
	at org.eclipse.core.internal.jobs.OrderedLock.acquire(OrderedLock.java:82)
	at org.eclipse.core.internal.resources.WorkManager.endUnprotected(WorkManager.java:181)
	at org.eclipse.core.internal.resources.Resource.delete(Resource.java:708)
	at org.eclipse.core.internal.resources.Resource.delete(Resource.java:677)
	at org.eclipse.jdt.internal.core.ExternalFoldersManager.cleanUp(ExternalFoldersManager.java:131)
	- locked <0x14f639e0> (a org.eclipse.jdt.internal.core.ExternalFoldersManager)
	at org.eclipse.jdt.internal.core.JavaModelManager.saving(JavaModelManager.java:3721)
	at org.eclipse.core.internal.resources.SaveManager.executeLifecycle(SaveManager.java:343)
	at org.eclipse.core.internal.resources.SaveManager$1.run(SaveManager.java:160)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.core.internal.resources.SaveManager.broadcastLifecycle(SaveManager.java:163)
	at org.eclipse.core.internal.resources.SaveManager.save(SaveManager.java:989)
	at org.eclipse.core.internal.resources.Workspace.save(Workspace.java:1827)
	at org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor$3.run(IDEWorkbenchAdvisor.java:391)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)


"Worker-510" prio=6 tid=0x0e412980 nid=0x176c waiting for monitor entry [0x0ac6f000..0x0ac6fa68]
	at org.eclipse.jdt.internal.core.ExternalFoldersManager.getFolder(ExternalFoldersManager.java:190)
	- waiting to lock <0x14f639e0> (a org.eclipse.jdt.internal.core.ExternalFoldersManager)
	at org.eclipse.jdt.internal.core.JavaProject.contains(JavaProject.java:672)
	at org.eclipse.jdt.internal.core.DeltaProcessor.createElement(DeltaProcessor.java:620)
	at org.eclipse.jdt.internal.core.DeltaProcessor.traverseDelta(DeltaProcessor.java:2132)
	at org.eclipse.jdt.internal.core.DeltaProcessor.traverseDelta(DeltaProcessor.java:2114)
	at org.eclipse.jdt.internal.core.DeltaProcessor.traverseDelta(DeltaProcessor.java:2114)
Comment 1 Michael Scharf CLA 2008-07-30 19:11:18 EDT
Created attachment 108800 [details]
the full stack trace

the full stack trace
Comment 2 Jerome Lanneluc CLA 2008-08-19 11:20:26 EDT
Created attachment 110349 [details]
Proposed fix

The fix consists in moving the code that touches resources outside the synchronized method.
Comment 3 Jerome Lanneluc CLA 2008-08-19 11:42:15 EDT
Fix released for 3.5M2.

To the verifier: only the code change can be verified since this is a race condition.
Comment 4 Jerome Lanneluc CLA 2008-08-20 09:06:07 EDT
This needs to be backported to 3.4.1 since this is a regression comparing to 3.3
Comment 5 Jerome Lanneluc CLA 2008-08-20 09:07:11 EDT
Created attachment 110445 [details]
Patch against R3_4_maintenance
Comment 6 Jerome Lanneluc CLA 2008-08-20 09:19:02 EDT
Fix released for 3.4.1
Comment 7 Frederic Fusier CLA 2008-08-29 04:07:01 EDT
Verified for 3.4.1 using M20080827-2000.