Community
Participate
Working Groups
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)
Created attachment 108800 [details] the full stack trace the full stack trace
Created attachment 110349 [details] Proposed fix The fix consists in moving the code that touches resources outside the synchronized method.
Fix released for 3.5M2. To the verifier: only the code change can be verified since this is a race condition.
This needs to be backported to 3.4.1 since this is a regression comparing to 3.3
Created attachment 110445 [details] Patch against R3_4_maintenance
Fix released for 3.4.1
Verified for 3.4.1 using M20080827-2000.