Community
Participate
Working Groups
After a build... Eclipse in a deadlock. The CVS decorator running in the decorator thread got stuck with the UI thread. The reason why we couldn't use the light weight decorator for the error ticks was the threading problem. I doubt that decoration in background really can be done. ---------------------- Exception Information --------------------------- No Exception ---------------------- System Properties ------------------------------- J2RE 1.3.1 IBM Windows 32 build cn131-20020403 d:\devel\ibm_jdk1.3.1_SR1\jre\bin\java -verify -cp startup.jar org.eclipse.core.launcher.Main -application org.eclipse.ui.workbench -ws win32 - data D:\workspaces\eclipse-sh2\plugins Java Home Dir: d:\devel\ibm_jdk1.3.1_SR1\jre Java DLL Dir: d:\devel\ibm_jdk1.3.1_SR1\jre\bin Sys Classpath: d:\devel\ibm_jdk1.3.1_SR1 \jre\lib\rt.jar;d:\devel\ibm_jdk1.3.1_SR1 \jre\lib\i18n.jar;d:\devel\ibm_jdk1.3.1_SR1\jre\classes UserArgs: -Djava.class.path="L¯^R\QTJava.zip" -Xverify:all -Djava.class.path=startup.jar -Dinvokedviajava ---------------------- XM component Dump Routine ---------------------- Full thread dump Classic VM (J2RE 1.3.1 IBM Windows 32 build cn131-20020403, native threads): "ModalContext" (TID:0x3EBE458, sys_thread_t:0x145D6AE0, state:CW, native ID:0x140) prio=5 at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java(Compiled Code)) at org.eclipse.team.internal.ccvs.core.syncinfo.ReentrantLock.acquire (ReentrantLock.java(Compiled Code)) at org.eclipse.team.internal.ccvs.core.resources.EclipseSynchronizer.beginOperation (EclipseSynchronizer.java(Compiled Code)) at org.eclipse.team.internal.ccvs.core.resources.EclipseSynchronizer.getFolderSync (EclipseSynchronizer.java(Compiled Code)) at org.eclipse.team.internal.ccvs.core.resources.EclipseFolder.isCVSFolder (EclipseFolder.java(Compiled Code)) at org.eclipse.team.internal.ccvs.core.util.AddDeleteMoveListener.resourceChanged (AddDeleteMoveListener.java:215) at org.eclipse.core.internal.events.NotificationManager$1.run (NotificationManager.java(Compiled Code)) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java(Compiled Code)) at org.eclipse.core.runtime.Platform.run(Platform.java(Compiled Code)) at org.eclipse.core.internal.events.NotificationManager.notify (NotificationManager.java(Compiled Code)) at org.eclipse.core.internal.events.NotificationManager.broadcastChanges (NotificationManager.java:67) at org.eclipse.core.internal.resources.Workspace.broadcastChanges (Workspace.java:153) at org.eclipse.core.internal.resources.Workspace.endOperation (Workspace.java(Compiled Code)) at org.eclipse.core.internal.resources.Workspace.build (Workspace.java:176) at org.eclipse.ui.actions.GlobalBuildAction$1.run (GlobalBuildAction.java:156) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run (ModalContext.java:95) "Snapshot" (TID:0x3EBE4B8, sys_thread_t:0x14895AE0, state:CW, native ID:0x750) prio=5 at java.lang.Object.wait(Native Method) at org.eclipse.core.internal.resources.DelayedSnapshotRunnable.run (DelayedSnapshotRunnable.java:38) at java.lang.Thread.run(Thread.java:512) "org.eclipse.jdt.internal.ui.text.JavaReconciler" (TID:0x8821B18, sys_thread_t:0x144DABD0, state:CW, native ID:0x530) prio=1 at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java(Compiled Code)) "org.eclipse.jdt.internal.ui.text.JavaReconciler" (TID:0x4FAE208, sys_thread_t:0x14878F30, state:CW, native ID:0x624) prio=1 at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java(Compiled Code)) "org.eclipse.jdt.internal.ui.text.JavaReconciler" (TID:0x4FAE700, sys_thread_t:0x147F5658, state:CW, native ID:0x460) prio=1 at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java(Compiled Code)) "org.eclipse.jdt.internal.ui.text.JavaReconciler" (TID:0x7868898, sys_thread_t:0x1489D990, state:CW, native ID:0x51C) prio=1 at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java(Compiled Code)) "org.eclipse.jdt.internal.ui.text.JavaReconciler" (TID:0x8A49750, sys_thread_t:0x14892160, state:CW, native ID:0x5B4) prio=1 at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java(Compiled Code)) "ServerConnection" (TID:0x6BFF6F8, sys_thread_t:0x1496A808, state:R, native ID:0x798) prio=5 at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:446) at java.net.ServerSocket.implAccept(ServerSocket.java:264) at java.net.ServerSocket.accept(ServerSocket.java(Compiled Code)) at org.eclipse.jdt.internal.junit.ui.RemoteTestRunnerClient$ServerConnection.run (RemoteTestRunnerClient.java(Compiled Code)) "Debug async queue" (TID:0x6EF5660, sys_thread_t:0x146B56C0, state:CW, native ID:0x660) prio=5 at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java(Compiled Code)) at org.eclipse.debug.core.DebugPlugin$AsynchRunner.run(DebugPlugin.java (Compiled Code)) at java.lang.Thread.run(Thread.java:512) "org.eclipse.jdt.internal.ui.text.JavaReconciler" (TID:0x5BAA180, sys_thread_t:0x14645FD0, state:CW, native ID:0x1A0) prio=1 at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java(Compiled Code)) "Decoration" (TID:0x1ECF250, sys_thread_t:0x12E69390, state:CW, native ID:0x7A0) prio=1 at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java(Compiled Code)) at org.eclipse.core.internal.utils.Semaphore.acquire(Semaphore.java:24) at org.eclipse.core.resources.WorkspaceLock.acquire(WorkspaceLock.java (Compiled Code)) at org.eclipse.ui.internal.UIWorkspaceLock.acquire(UIWorkspaceLock.java (Compiled Code)) at org.eclipse.core.internal.resources.WorkManager.checkIn (WorkManager.java(Compiled Code)) at org.eclipse.core.internal.resources.Workspace.prepareOperation (Workspace.java(Compiled Code)) at org.eclipse.core.internal.resources.Synchronizer.setSyncInfo (Synchronizer.java:209) at org.eclipse.team.internal.ccvs.core.resources.SynchronizerSyncInfoCache.setCache dSyncBytes(SynchronizerSyncInfoCache.java:268) at org.eclipse.team.internal.ccvs.core.resources.EclipseSynchronizer.cacheResourceS yncForChildren(EclipseSynchronizer.java(Compiled Code)) at org.eclipse.team.internal.ccvs.core.resources.EclipseSynchronizer.members (EclipseSynchronizer.java:350) at org.eclipse.team.internal.ccvs.core.resources.EclipseFolder.members (EclipseFolder.java:59) at org.eclipse.team.internal.ccvs.core.resources.EclipseFolder.determineDirtyCount (EclipseFolder.java:453) at org.eclipse.team.internal.ccvs.core.resources.EclipseFolder.isModified (EclipseFolder.java:416) at org.eclipse.team.internal.ccvs.core.resources.EclipseFolder.determineDirtyCount (EclipseFolder.java:458) at org.eclipse.team.internal.ccvs.core.resources.EclipseFolder.isModified (EclipseFolder.java:416) at org.eclipse.team.internal.ccvs.core.resources.EclipseFolder.determineDirtyCount (EclipseFolder.java:458) at org.eclipse.team.internal.ccvs.core.resources.EclipseFolder.isModified (EclipseFolder.java:416) at org.eclipse.team.internal.ccvs.core.resources.EclipseFolder.determineDirtyCount (EclipseFolder.java:458) at org.eclipse.team.internal.ccvs.core.resources.EclipseFolder.isModified (EclipseFolder.java:416) at org.eclipse.team.internal.ccvs.core.resources.EclipseFolder.determineDirtyCount (EclipseFolder.java:458) at org.eclipse.team.internal.ccvs.core.resources.EclipseFolder.isModified (EclipseFolder.java:416) at org.eclipse.team.internal.ccvs.core.resources.EclipseFolder.determineDirtyCount (EclipseFolder.java:458) at org.eclipse.team.internal.ccvs.core.resources.EclipseFolder.isModified (EclipseFolder.java:416) at org.eclipse.team.internal.ccvs.core.resources.EclipseFolder.determineDirtyCount (EclipseFolder.java:458) at org.eclipse.team.internal.ccvs.core.resources.EclipseFolder.isModified (EclipseFolder.java:416) at org.eclipse.team.internal.ccvs.ui.CVSLightweightDecorator$1.run (CVSLightweightDecorator.java:101) at org.eclipse.team.internal.ccvs.core.resources.EclipseSynchronizer.run (EclipseSynchronizer.java:1128) at org.eclipse.team.internal.ccvs.core.resources.EclipseFolder.run (EclipseFolder.java:342) at org.eclipse.team.internal.ccvs.ui.CVSLightweightDecorator.isDirty (CVSLightweightDecorator.java:97) at org.eclipse.team.internal.ccvs.ui.CVSLightweightDecorator.isDirty (CVSLightweightDecorator.java:118) at org.eclipse.team.internal.ccvs.ui.CVSLightweightDecorator.decorate (CVSLightweightDecorator.java:188) at org.eclipse.ui.internal.decorators.LightweightDecoratorManager$LightweightRunnab le.run(LightweightDecoratorManager.java(Compiled Code)) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java(Compiled Code)) at org.eclipse.core.runtime.Platform.run(Platform.java(Compiled Code)) at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.decorate (LightweightDecoratorManager.java(Compiled Code)) at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.getDecorations (LightweightDecoratorManager.java(Compiled Code)) at org.eclipse.ui.internal.decorators.DecorationScheduler$3.run (DecorationScheduler.java(Compiled Code)) at java.lang.Thread.run(Thread.java:512) "Java indexing" (TID:0x900360, sys_thread_t:0x1284FD68, state:CW, native ID:0x2B0) prio=4 at java.lang.Thread.sleep(Native Method) at org.eclipse.jdt.internal.core.search.processing.JobManager.run (JobManager.java(Compiled Code)) at java.lang.Thread.run(Thread.java:512) "Finalizer" (TID:0x901900, sys_thread_t:0x899728, state:CW, native ID:0x508) prio=8 at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:133) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java(Compiled Code)) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java(Compiled Code)) "Reference Handler" (TID:0x901948, sys_thread_t:0x87A008, state:CW, native ID:0x480) prio=10 at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java(Compiled Code)) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java(Compiled Code)) "Signal dispatcher" (TID:0x901990, sys_thread_t:0x8791E8, state:R, native ID:0x698) prio=5 "main" (TID:0x9019D8, sys_thread_t:0x23E860, state:R, native ID:0x330) prio=5 at org.eclipse.swt.internal.win32.OS.WaitMessage(Native Method) at org.eclipse.swt.widgets.Display.sleep(Display.java(Compiled Code)) at org.eclipse.jface.operation.ModalContext$ModalContextThread.block (ModalContext.java(Compiled Code)) *** Exception 0 received during dump routine processing, section truncated. ---------------------- LK component Dump Routine ---------------------- Monitor pool info: Initial monitor count: 32 Minimum number of free monitors before expansion: 5 Pool will next be expanded by: 921 Current total number of monitors: 1842 Current number of free monitors: 1732 Monitor Pool Dump (flat & inflated object-monitors): sys_mon_t:0x0023DBE8 infl_mon_t: 0x0023D7D8: java.lang.ref.Reference$Lock@912570/912578: <unowned> Waiting to be notified: "Reference Handler" (0x87A008) sys_mon_t:0x0023DC38 infl_mon_t: 0x0023D818: java.lang.ref.ReferenceQueue$Lock@912180/912188: <unowned> Waiting to be notified: "Finalizer" (0x899728) sys_mon_t:0x0023DC60 infl_mon_t: 0x0023D838: org.eclipse.jface.text.reconciler.DirtyRegionQueue@5C37E88/5C37E90: <unowned> Waiting to be notified: "org.eclipse.jdt.internal.ui.text.JavaReconciler" (0x14645FD0) sys_mon_t:0x0023DDA0 infl_mon_t: 0x0023D938: org.eclipse.debug.core.DebugPlugin$AsynchRunner@6EF4F80/6EF4F88: <unowned> Waiting to be notified: "Debug async queue" (0x146B56C0) sys_mon_t:0x0023DE18 infl_mon_t: 0x0023D998: org.eclipse.jface.text.reconciler.DirtyRegionQueue@8ADA6C0/8ADA6C8: <unowned> Waiting to be notified: "org.eclipse.jdt.internal.ui.text.JavaReconciler" (0x1489D990) sys_mon_t:0x14817FE0 infl_mon_t: 0x1478A6A8: org.eclipse.core.internal.utils.Semaphore@93D9A18/93D9A20: <unowned> Waiting to be notified: "Decoration" (0x12E69390) sys_mon_t:0x14830B78 infl_mon_t: 0x1484D188: org.eclipse.jface.text.reconciler.DirtyRegionQueue@39428D0/39428D8: <unowned> Waiting to be notified: "org.eclipse.jdt.internal.ui.text.JavaReconciler" (0x14892160) sys_mon_t:0x1489A698 infl_mon_t: 0x1487F718: org.eclipse.jface.text.reconciler.DirtyRegionQueue@5B3D188/5B3D190: <unowned> Waiting to be notified: "org.eclipse.jdt.internal.ui.text.JavaReconciler" (0x147F5658) sys_mon_t:0x148D5720 infl_mon_t: 0x14937870: org.eclipse.jface.text.reconciler.DirtyRegionQueue@A49AAC0/A49AAC8: <unowned> Waiting to be notified: "org.eclipse.jdt.internal.ui.text.JavaReconciler" (0x144DABD0) sys_mon_t:0x148D5C20 infl_mon_t: 0x14937C70: org.eclipse.jface.text.reconciler.DirtyRegionQueue@74FD770/74FD778: <unowned> Waiting to be notified: "org.eclipse.jdt.internal.ui.text.JavaReconciler" (0x14878F30) sys_mon_t:0x148F6EA0 infl_mon_t: 0x14912258: org.eclipse.team.internal.ccvs.core.syncinfo.ReentrantLock@14A9AE8/14A9AF0: <unowned> Waiting to be notified: "ModalContext" (0x145D6AE0) sys_mon_t:0x14992CA8 infl_mon_t: 0x149123F8: org.eclipse.core.internal.resources.DelayedSnapshotRunnable@7D96D98/7D96DA0: <unowned> Waiting to be notified: "Snapshot" (0x14895AE0) JVM System Monitor Dump (registered monitors): Evacuation Region lock: <unowned> Heap Promotion lock: <unowned> Sleep lock: <unowned> Waiting to be notified: "Java indexing" (0x1284FD68) Method trace lock: <unowned> Heap lock: owner "Signal dispatcher" (0x8791E8), entry count 1 Monitor Cache lock: owner "Signal dispatcher" (0x8791E8), entry count 1 JNI Pinning lock: <unowned> JNI Global Reference lock: <unowned> Classloader lock: <unowned> Binclass lock: <unowned> Monitor Registry lock: owner "Signal dispatcher" (0x8791E8), entry count 1 Thread queue lock: owner "Signal dispatcher" (0x8791E8), entry count 1 Thread identifiers (as used in flat monitors): ident 0x12 "ModalContext" (0x145D6AE0) ee 0x145D68D0 ident 0x1E "Snapshot" (0x14895AE0) ee 0x148958D0 ident 0x10 "org.eclipse.jdt.internal.ui.text.JavaReconciler" (0x144DABD0) ee 0x144DA9C0 ident 0x1B "org.eclipse.jdt.internal.ui.text.JavaReconciler" (0x14878F30) ee 0x14878D20 ident 0x17 "org.eclipse.jdt.internal.ui.text.JavaReconciler" (0x147F5658) ee 0x147F5448 ident 0x08 "org.eclipse.jdt.internal.ui.text.JavaReconciler" (0x1489D990) ee 0x1489D780 ident 0x1F "org.eclipse.jdt.internal.ui.text.JavaReconciler" (0x14892160) ee 0x14891F50 ident 0x1A "ServerConnection" (0x1496A808) ee 0x1496A5F8 ident 0x16 "Debug async queue" (0x146B56C0) ee 0x146B54B0 ident 0x14 "org.eclipse.jdt.internal.ui.text.JavaReconciler" (0x14645FD0) ee 0x14645DC0 ident 0x09 "Decoration" (0x12E69390) ee 0x12E69180 ident 0x07 "Java indexing" (0x1284FD68) ee 0x1284FB58 ident 0x05 "Finalizer" (0x899728) ee 0x00899518 ident 0x04 "Reference Handler" (0x87A008) ee 0x00879DF8 ident 0x03 "Signal dispatcher" (0x8791E8) ee 0x00878FD8 ident 0x02 "main" (0x23E860) ee 0x0023E650 Java Object Monitor Dump (flat & inflated object-monitors): java.lang.ref.ReferenceQueue$Lock@912180/912188 locknflags 80000400 Monitor inflated infl_mon 0x0023D818 java.lang.ref.Reference$Lock@912570/912578 locknflags 80000200 Monitor inflated infl_mon 0x0023D7D8 org.eclipse.team.internal.ccvs.core.syncinfo.ReentrantLock@14A9AE8/14A9AF0 locknflags 8003C700 Monitor inflated infl_mon 0x14912258 org.eclipse.jface.text.reconciler.DirtyRegionQueue@39428D0/39428D8 locknflags 80008B00 Monitor inflated infl_mon 0x1484D188 org.eclipse.jface.text.reconciler.DirtyRegionQueue@5B3D188/5B3D190 locknflags 8001CE00 Monitor inflated infl_mon 0x1487F718 org.eclipse.jface.text.reconciler.DirtyRegionQueue@5C37E88/5C37E90 locknflags 80000500 Monitor inflated infl_mon 0x0023D838 org.eclipse.debug.core.DebugPlugin$AsynchRunner@6EF4F80/6EF4F88 locknflags 80000D00 Monitor inflated infl_mon 0x0023D938 java.net.PlainSocketImpl@73010A0/73010A8 locknflags 001A0000 Flat locked by thread ident 0x1A, entry count 1 org.eclipse.jface.text.reconciler.DirtyRegionQueue@74FD770/74FD778 locknflags 80033300 Monitor inflated infl_mon 0x14937C70 org.eclipse.core.internal.resources.DelayedSnapshotRunnable@7D96D98/7D96DA0 locknflags 8003D400 Monitor inflated infl_mon 0x149123F8 org.eclipse.jface.text.reconciler.DirtyRegionQueue@8ADA6C0/8ADA6C8 locknflags 80001000 Monitor inflated infl_mon 0x0023D998 org.eclipse.jface.text.reconciler.DirtyRegionQueue@A49AAC0/A49AAC8 locknflags 80031300 Monitor inflated infl_mon 0x14937870 ---------------------- END OF DUMP -------------------------------------
The issue here appears to be lock ordering. Thanks for the traces Martin they were a huge help. In both Threads the CVS component is trying to do work. In the builder Thread it is trying to acquired the CVS lock but likely already has the Workspace lock which it appears to be waiting for. In the decorator thread it it is trying to acquire the workspace lock and it has the CVS lock. We need to have a definate ordering of locks. I will talk to Core and Team for more insight.
Fixed as a result of fixes to Bug 29212
Marking closed