Project: Eclipse_Platform_UI
Bug 86614 Deadlock on startup
Reported: 2005-02-25 07:10:15 | Status: resolved fixed

3.1 M5a Starting Eclipse 3.1_M5a *************************** VM Options=-showversion -Xms50M -Xmx350M -Dosgi.clean=true Target Workspace=c:\eclipse\workspaces\Development_2_2\plugins C:\eclipse\drops\3.1_M5a>C:\JavaSDKs\jdk1.4.2_06\bin\java -showversion -Xms50M -Xmx350M -Dosgi.clean=true -cp startup.jar org.eclipse.core.launcher.Main -update -keyring c:\eclipse\.keyring -applicati on org.eclipse.ui.ide.workbench -showlocation -data c:\eclipse\workspaces\Development_2_2\plugins java version "1.4.2_06" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_06-b02) Java HotSpot(TM) Client VM (build 1.4.2_06-b02, mixed mode) Full thread dump Java HotSpot(TM) Client VM (1.4.2_06-b02 mixed mode): "Java indexing" daemon prio=4 tid=0x0374a450 nid=0xb20 in Object.wait() [3ccf000..3ccfd8c] at java.lang.Object.wait(Native Method) - waiting on <0x12daaf80> (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:345) - locked <0x12daaf80> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager) at java.lang.Thread.run(Thread.java:534) "Reference Cleaner: 1" prio=7 tid=0x02f08d00 nid=0xf08 in Object.wait() [3c8f000..3c8fd8c] at java.lang.Object.wait(Native Method) - waiting on <0x12f58438> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <0x12f58438> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127) at org.eclipse.jface.resource.ImageCache$ReferenceCleanerThread.run(ImageCache.java:424) "Worker-1" daemon prio=5 tid=0x00a24c18 nid=0x610 in Object.wait() [30ef000..30efd8c] at java.lang.Object.wait(Native Method) - waiting on <0x11c4a670> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:167) - locked <0x11c4a670> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:199) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:60) "Worker-0" daemon prio=5 tid=0x00a1fcf8 nid=0x2f0 waiting for monitor entry [30ae000..30afd8c] at org.eclipse.ui.internal.WorkbenchPlugin.getWorkingSetManager(WorkbenchPlugin.java:430) - waiting to lock <0x11ea79c0> (a org.eclipse.ui.internal.WorkbenchPlugin) at org.eclipse.ui.internal.Workbench.getWorkingSetManager(Workbench.java:804) at org.eclipse.debug.internal.ui.views.breakpoints.WorkingSetBreakpointOrganizer.<init>(WorkingSetBreakpointOrganizer.java:39) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:274) at java.lang.Class.newInstance0(Class.java:308) at java.lang.Class.newInstance(Class.java:261) at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:175) at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:152) at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:139) at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:48) at org.eclipse.debug.internal.ui.views.breakpoints.BreakpointOrganizerExtension.getOrganizer(BreakpointOrganizerExtension.java:97) at org.eclipse.debug.internal.ui.views.breakpoints.BreakpointOrganizerExtension.addPropertyChangeListener(BreakpointOrganizerExtension.java:116) at org.eclipse.debug.internal.ui.views.breakpoints.BreakpointOrganizerManager.start(BreakpointOrganizerManager.java:80) at org.eclipse.debug.internal.ui.views.breakpoints.BreakpointOrganizerManager.<init>(BreakpointOrganizerManager.java:65) at org.eclipse.debug.internal.ui.views.breakpoints.BreakpointOrganizerManager.getDefault(BreakpointOrganizerManager.java:54) at org.eclipse.debug.internal.ui.DebugUIPlugin.start(DebugUIPlugin.java:403) at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:995) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:989) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:970) at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:327) at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:276) at org.eclipse.core.runtime.adaptor.EclipseClassLoader.findLocalClass(EclipseClassLoader.java:110) at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:331) at org.eclipse.osgi.framework.internal.core.SingleSourcePackage.loadClass(SingleSourcePackage.java:34) at org.eclipse.osgi.framework.internal.core.BundleLoader.findRequiredClass(BundleLoader.java:726) at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:355) at org.eclipse.osgi.framework.adaptor.core.AbstractClassLoader.loadClass(AbstractClassLoader.java:94) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302) - locked <0x130110c0> (a org.eclipse.core.runtime.adaptor.EclipseClassLoader) at org.eclipse.ui.externaltools.internal.launchConfigurations.ExternalToolsUtil.getResourcesForBuildScope(ExternalToolsUtil.java:180) at org.eclipse.ui.externaltools.internal.model.ExternalToolBuilder.doBuildBasedOnScope(ExternalToolBuilder.java:164) at org.eclipse.ui.externaltools.internal.model.ExternalToolBuilder.build(ExternalToolBuilder.java:81) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:581) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1015) at org.eclipse.core.runtime.Platform.run(Platform.java:757) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:160) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:198) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:227) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1015) at org.eclipse.core.runtime.Platform.run(Platform.java:757) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:230) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:249) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:278) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:138) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:199) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:67) "Start Level Event Dispatcher" daemon prio=5 tid=0x00a37e70 nid=0xe70 in Object.wait() [302f000..302fd8c] at java.lang.Object.wait(Native Method) - waiting on <0x11af0060> (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:162) - locked <0x11af0060> (a org.eclipse.osgi.framework.eventmgr.EventThread) at org.eclipse.osgi.framework.eventmgr.EventThread.run(EventThread.java:100) "Framework Event Dispatcher" daemon prio=5 tid=0x00a32d10 nid=0xd64 waiting for monitor entry [2fef000..2fefd8c] at org.eclipse.ui.internal.WorkbenchPlugin.getWorkingSetRegistry(WorkbenchPlugin.java:444) - waiting to lock <0x11ea79c0> (a org.eclipse.ui.internal.WorkbenchPlugin) at org.eclipse.ui.internal.AbstractWorkingSetManager.bundleChanged(AbstractWorkingSetManager.java:485) - locked <0x13010d00> (a org.eclipse.ui.internal.WorkingSetManager) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:1206) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:186) at org.eclipse.osgi.framework.eventmgr.EventThread.run(EventThread.java:104) "Signal Dispatcher" daemon prio=10 tid=0x009c2188 nid=0xb94 waiting on condition [0..0] "Finalizer" daemon prio=9 tid=0x009bfb50 nid=0x974 in Object.wait() [2caf000..2cafd8c] at java.lang.Object.wait(Native Method) - waiting on <0x11af0310> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <0x11af0310> (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=0x009be7d0 nid=0x898 in Object.wait() [2c6f000..2c6fd8c] at java.lang.Object.wait(Native Method) - waiting on <0x11af00b0> (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 <0x11af00b0> (a java.lang.ref.Reference$Lock) "main" prio=7 tid=0x00036090 nid=0xce4 waiting for monitor entry [7e000..7fc3c] at org.eclipse.ui.internal.AbstractWorkingSetManager.addToUpdater(AbstractWorkingSetManager.java:511) - waiting to lock <0x13010d00> (a org.eclipse.ui.internal.WorkingSetManager) at org.eclipse.ui.internal.AbstractWorkingSetManager.internalAddWorkingSet(AbstractWorkingSetManager.java:153) at org.eclipse.ui.internal.AbstractWorkingSetManager.restoreWorkingSetState(AbstractWorkingSetManager.java:338) at org.eclipse.ui.internal.WorkingSetManager.restoreState(WorkingSetManager.java:107) at org.eclipse.ui.internal.WorkbenchPlugin.getWorkingSetManager(WorkbenchPlugin.java:432) - locked <0x11ea79c0> (a org.eclipse.ui.internal.WorkbenchPlugin) at org.eclipse.ui.internal.Workbench.getWorkingSetManager(Workbench.java:804) at org.eclipse.ui.internal.ide.actions.BuildSetMenu.fillMenu(BuildSetMenu.java:100) at org.eclipse.ui.internal.ide.actions.BuildSetMenu.fill(BuildSetMenu.java:87) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:625) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:547) at org.eclipse.jface.action.MenuManager.fill(MenuManager.java:232) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:625) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:547) at org.eclipse.jface.action.MenuManager.fill(MenuManager.java:232) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:625) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:547) at org.eclipse.jface.action.MenuManager.createMenuBar(MenuManager.java:158) at org.eclipse.jface.action.MenuManager.createMenuBar(MenuManager.java:174) at org.eclipse.ui.internal.WorkbenchWindow.createDefaultContents(WorkbenchWindow.java:810) at org.eclipse.ui.internal.WorkbenchWindowConfigurer.createDefaultContents(WorkbenchWindowConfigurer.java:573) at org.eclipse.ui.application.WorkbenchWindowAdvisor.createWindowContents(WorkbenchWindowAdvisor.java:352) at org.eclipse.ui.internal.WorkbenchWindow.createContents(WorkbenchWindow.java:778) at org.eclipse.jface.window.Window.create(Window.java:375) at org.eclipse.ui.internal.Workbench.restoreState(Workbench.java:1434) at org.eclipse.ui.internal.Workbench.access$9(Workbench.java:1409) at org.eclipse.ui.internal.Workbench$14.run(Workbench.java:1312) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1015) at org.eclipse.core.runtime.Platform.run(Platform.java:757) at org.eclipse.ui.internal.Workbench.restoreState(Workbench.java:1246) at org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(WorkbenchConfigurer.java:171) at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:711) at org.eclipse.ui.internal.Workbench.init(Workbench.java:918) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1554) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:293) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:144) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:102) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:228) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:333) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:150) 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:268) at org.eclipse.core.launcher.Main.basicRun(Main.java:260) at org.eclipse.core.launcher.Main.run(Main.java:887) at org.eclipse.core.launcher.Main.main(Main.java:871) "VM Thread" prio=5 tid=0x009fb720 nid=0xc50 runnable "VM Periodic Task Thread" prio=10 tid=0x009fc968 nid=0x318 waiting on condition "Suspend Checker Thread" prio=10 tid=0x009c1c40 nid=0xc40 runnable Found one Java-level deadlock: ============================= "main": waiting to lock monitor 0x009bf394 (object 0x13010d00, a org.eclipse.ui.internal.WorkingSetManager), which is held by "Framework Event Dispatcher" "Framework Event Dispatcher": waiting to lock monitor 0x009bf334 (object 0x11ea79c0, a org.eclipse.ui.internal.WorkbenchPlugin), which is held by "main" Java stack information for the threads listed above: =================================================== "main": at org.eclipse.ui.internal.AbstractWorkingSetManager.addToUpdater(AbstractWorkingSetManager.java:511) - waiting to lock <0x13010d00> (a org.eclipse.ui.internal.WorkingSetManager) at org.eclipse.ui.internal.AbstractWorkingSetManager.internalAddWorkingSet(AbstractWorkingSetManager.java:153) at org.eclipse.ui.internal.AbstractWorkingSetManager.restoreWorkingSetState(AbstractWorkingSetManager.java:338) at org.eclipse.ui.internal.WorkingSetManager.restoreState(WorkingSetManager.java:107) at org.eclipse.ui.internal.WorkbenchPlugin.getWorkingSetManager(WorkbenchPlugin.java:432) - locked <0x11ea79c0> (a org.eclipse.ui.internal.WorkbenchPlugin) at org.eclipse.ui.internal.Workbench.getWorkingSetManager(Workbench.java:804) at org.eclipse.ui.internal.ide.actions.BuildSetMenu.fillMenu(BuildSetMenu.java:100) at org.eclipse.ui.internal.ide.actions.BuildSetMenu.fill(BuildSetMenu.java:87) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:625) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:547) at org.eclipse.jface.action.MenuManager.fill(MenuManager.java:232) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:625) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:547) at org.eclipse.jface.action.MenuManager.fill(MenuManager.java:232) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:625) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:547) at org.eclipse.jface.action.MenuManager.createMenuBar(MenuManager.java:158) at org.eclipse.jface.action.MenuManager.createMenuBar(MenuManager.java:174) at org.eclipse.ui.internal.WorkbenchWindow.createDefaultContents(WorkbenchWindow.java:810) at org.eclipse.ui.internal.WorkbenchWindowConfigurer.createDefaultContents(WorkbenchWindowConfigurer.java:573) at org.eclipse.ui.application.WorkbenchWindowAdvisor.createWindowContents(WorkbenchWindowAdvisor.java:352) at org.eclipse.ui.internal.WorkbenchWindow.createContents(WorkbenchWindow.java:778) at org.eclipse.jface.window.Window.create(Window.java:375) at org.eclipse.ui.internal.Workbench.restoreState(Workbench.java:1434) at org.eclipse.ui.internal.Workbench.access$9(Workbench.java:1409) at org.eclipse.ui.internal.Workbench$14.run(Workbench.java:1312) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1015) at org.eclipse.core.runtime.Platform.run(Platform.java:757) at org.eclipse.ui.internal.Workbench.restoreState(Workbench.java:1246) at org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(WorkbenchConfigurer.java:171) at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:711) at org.eclipse.ui.internal.Workbench.init(Workbench.java:918) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1554) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:293) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:144) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:102) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:228) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:333) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:150) 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:268) at org.eclipse.core.launcher.Main.basicRun(Main.java:260) at org.eclipse.core.launcher.Main.run(Main.java:887) at org.eclipse.core.launcher.Main.main(Main.java:871) "Framework Event Dispatcher": at org.eclipse.ui.internal.WorkbenchPlugin.getWorkingSetRegistry(WorkbenchPlugin.java:444) - waiting to lock <0x11ea79c0> (a org.eclipse.ui.internal.WorkbenchPlugin) at org.eclipse.ui.internal.AbstractWorkingSetManager.bundleChanged(AbstractWorkingSetManager.java:485) - locked <0x13010d00> (a org.eclipse.ui.internal.WorkingSetManager) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:1206) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:186) at org.eclipse.osgi.framework.eventmgr.EventThread.run(EventThread.java:104) Found 1 deadlock.

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