Project: Eclipse_Platform_UI
Bug 125147 [WorkingSets] Deadlock on startup
Reported: 2006-01-25 08:03:08 | Status: verified fixed

3.2m4 When starting a self-hosting workspace (which did work fine in the past on same SDK), the splash screen progress froze, and ctrl-brk in console revealed the following deadlock: Full thread dump Java HotSpot(TM) Client VM (1.4.2_10-ea-b01 mixed mode): "Java indexing" daemon prio=4 tid=0x03acc910 nid=0xd04 in Object.wait() [58af000..58afd68] at java.lang.Object.wait(Native Method) - waiting on <0x1363e8a0> (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:349) - locked <0x1363e8a0> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager) at java.lang.Thread.run(Thread.java:534) "Startup Progress Printer" prio=7 tid=0x033ace00 nid=0x95c in Object.wait() [569f000..569fd68] at java.lang.Object.wait(Native Method) - waiting on <0x135371b8> (a java.util.LinkedList) at java.lang.Object.wait(Object.java:429) at org.eclipse.ui.internal.StartupProgressMonitor$AsynchronousPrinter.run(StartupProgressMonitor.java:49) - locked <0x135371b8> (a java.util.LinkedList) "Worker-1" daemon prio=5 tid=0x0407cc60 nid=0x15e8 in Object.wait() [48af000..48afd68] at java.lang.Object.wait(Native Method) - waiting on <0x127c1160> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:173) - locked <0x127c1160> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:205) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51) "Worker-0" daemon prio=5 tid=0x00a34ea0 nid=0x1624 in Object.wait() [3faf000..3fafd68] at java.lang.Object.wait(Native Method) - waiting on <0x127c1160> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:173) - locked <0x127c1160> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:205) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51) "Start Level Event Dispatcher" daemon prio=5 tid=0x034e9488 nid=0x1020 in Object.wait() [399f000..399fd68] at java.lang.Object.wait(Native Method) - waiting on <0x127b5f20> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread) at java.lang.Object.wait(Object.java:429) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:349) - locked <0x127b5f20> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:287) "Framework Event Dispatcher" daemon prio=5 tid=0x00a6abc0 nid=0x107c in Object.wait() [369f000..369fd68] at java.lang.Object.wait(Native Method) - waiting on <0x136f56b8> (a org.eclipse.swt.widgets.RunnableLock) at java.lang.Object.wait(Object.java:429) at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:169) - locked <0x136f56b8> (a org.eclipse.swt.widgets.RunnableLock) at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:28) at org.eclipse.swt.widgets.Display.syncExec(Display.java:3700) at org.eclipse.ui.internal.AbstractWorkingSetManager.firePropertyChange(AbstractWorkingSetManager.java:301) at org.eclipse.ui.internal.AbstractWorkingSetManager.getUpdater(AbstractWorkingSetManager.java:585) at org.eclipse.ui.internal.AbstractWorkingSetManager.bundleChanged(AbstractWorkingSetManager.java:546) - locked <0x13577680> (a java.util.HashMap) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:1205) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:189) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:291) "Signal Dispatcher" daemon prio=10 tid=0x00a133b0 nid=0x1120 waiting on condition [0..0] "Finalizer" daemon prio=9 tid=0x00a20148 nid=0x11cc in Object.wait() [2f9f000..2f9fd68] at java.lang.Object.wait(Native Method) - waiting on <0x1277bf28> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <0x1277bf28> (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=0x00a135b8 nid=0x1788 in Object.wait() [2e9f000..2e9fd68] at java.lang.Object.wait(Native Method) - waiting on <0x1277bf90> (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 <0x1277bf90> (a java.lang.ref.Reference$Lock) "main" prio=7 tid=0x00035f48 nid=0x15d0 waiting for monitor entry [7e000..7fc3c] at org.eclipse.ui.internal.AbstractWorkingSetManager.removeFromUpdater(AbstractWorkingSetManager.java:594) - waiting to lock <0x13577680> (a java.util.HashMap) at org.eclipse.ui.internal.AbstractWorkingSetManager.internalRemoveWorkingSet(AbstractWorkingSetManager.java:173) at org.eclipse.ui.internal.WorkingSetManager.removeWorkingSet(WorkingSetManager.java:88) at org.eclipse.ui.internal.WorkbenchPage.dispose(WorkbenchPage.java:1547) at org.eclipse.ui.internal.WorkbenchWindow.closeAllPages(WorkbenchWindow.java:766) at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1428) at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:649) at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:630) at org.eclipse.ui.internal.WorkbenchWindow$2.run(WorkbenchWindow.java:731) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69) at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:729) at org.eclipse.ui.internal.Workbench.doRestoreState(Workbench.java:2655) at org.eclipse.ui.internal.Workbench.access$14(Workbench.java:2592) at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1541) at org.eclipse.ui.internal.Workbench.runStartupWithProgress(Workbench.java:1293) at org.eclipse.ui.internal.Workbench.restoreState(Workbench.java:1539) at org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1518) at org.eclipse.ui.internal.Workbench$15.run(Workbench.java:1401) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.runtime.Platform.run(Platform.java:785) at org.eclipse.ui.internal.Workbench.restoreState(Workbench.java:1345) at org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(WorkbenchConfigurer.java:183) at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:700) at org.eclipse.ui.internal.Workbench.init(Workbench.java:1073) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1695) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:397) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:106) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:109) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:379) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177) 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.invokeFramework(Main.java:338) at org.eclipse.core.launcher.Main.basicRun(Main.java:282) at org.eclipse.core.launcher.Main.run(Main.java:977) at org.eclipse.core.launcher.Main.main(Main.java:952) "VM Thread" prio=5 tid=0x009cb190 nid=0x179c runnable "VM Periodic Task Thread" prio=10 tid=0x00a22558 nid=0x16c4 waiting on condition "Suspend Checker Thread" prio=10 tid=0x00a20b48 nid=0xa24 runnable

Files changed in fix:
bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractWorkingSetManager.java