Project: Eclipse_Platform_UI
Bug 59782 [Progress] Deadlock in reentrant workspace.run
Reported: 2004-04-23 10:19:09 | Status: verified fixed

build I20040420-1300 - started eclipse in Java perspective - I believe I selected a project in the packager explorer, then chose Window > Preferences - when the prefs dialog came up (with the Workbench page selected), I then got a progress dialog - it showed a waiting user operation and a waiting workspace build Full thread dump Java HotSpot(TM) Client VM (1.4.2_01-b06 mixed mode): "All Types Caching" prio=4 tid=0x21125410 nid=0x7cc in Object.wait() [2266f000..2266fd90] at java.lang.Object.wait(Native Method) - waiting on <0x11a81550> (a org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob) at org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.joinRun(ImplicitJobs.java:122) - locked <0x11a81550> (a org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob) at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:295) at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:155) at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:95) at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1595) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1635) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:744) at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:2605) at org.eclipse.jdt.core.JavaCore$5.run(JavaCore.java:3448) at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:34) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1640) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3262) at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3431) at org.eclipse.pde.internal.core.ModelEntry.updateClasspathContainer(ModelEntry.java:109) at org.eclipse.pde.internal.core.RequiredPluginsInitializer.initialize(RequiredPluginsInitializer.java:40) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1178) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:609) at org.eclipse.core.runtime.Platform.run(Platform.java:541) at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1173) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1841) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1755) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1727) at org.eclipse.jdt.internal.core.search.JavaSearchScope.add(JavaSearchScope.java:78) at org.eclipse.jdt.internal.core.search.JavaWorkspaceScope.initialize(JavaWorkspaceScope.java:79) at org.eclipse.jdt.internal.core.search.JavaSearchScope.<init>(JavaSearchScope.java:52) at org.eclipse.jdt.internal.core.search.JavaWorkspaceScope.<init>(JavaWorkspaceScope.java:30) at org.eclipse.jdt.core.search.SearchEngine.createWorkspaceScope(SearchEngine.java:423) at org.eclipse.jdt.internal.corext.util.AllTypesCache.search(AllTypesCache.java:502) at org.eclipse.jdt.internal.corext.util.AllTypesCache$TypeCacher.doSearchTypes(AllTypesCache.java:180) at org.eclipse.jdt.internal.corext.util.AllTypesCache$TypeCacher.run(AllTypesCache.java:149) "Worker-4" prio=5 tid=0x211a3bf8 nid=0x7c4 in Object.wait() [2249f000..2249fd90] at java.lang.Object.wait(Native Method) - waiting on <0x127c5690> (a org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob) at org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.joinRun(ImplicitJobs.java:122) - locked <0x127c5690> (a org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob) at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:295) at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:155) at org.eclipse.ui.views.markers.internal.MarkerView.internalRefresh(MarkerView.java:162) at org.eclipse.ui.views.markers.internal.MarkerView.access$2(MarkerView.java:151) at org.eclipse.ui.views.markers.internal.MarkerView$3.run(MarkerView.java:237) at org.eclipse.ui.views.markers.internal.RestartableJob$2.run(RestartableJob.java:86) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:66) "Worker-2" prio=5 tid=0x21c14458 nid=0x7bc in Object.wait() [223bf000..223bfd90] at java.lang.Object.wait(Native Method) - waiting on <0x112015e0> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:209) - locked <0x112015e0> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:236) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:59) "Java indexing" daemon prio=4 tid=0x2110be20 nid=0x76c in Object.wait() [222bf000..222bfd90] at java.lang.Object.wait(Native Method) - waiting on <0x11be9bc8> (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:323) - locked <0x11be9bc8> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager) at java.lang.Thread.run(Thread.java:534) "Start Level Event Dispatcher" daemon prio=5 tid=0x21137410 nid=0x7b0 in Object.wait() [2124f000..2124fd90] at java.lang.Object.wait(Native Method) - waiting on <0x10f90fb0> (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:149) - locked <0x10f90fb0> (a org.eclipse.osgi.framework.eventmgr.EventThread) at org.eclipse.osgi.framework.eventmgr.EventThread.run(EventThread.java:107) "Framework Event Dispatcher" daemon prio=5 tid=0x21025410 nid=0x7ac in Object.wait() [2120f000..2120fd90] at java.lang.Object.wait(Native Method) - waiting on <0x10f91000> (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:149) - locked <0x10f91000> (a org.eclipse.osgi.framework.eventmgr.EventThread) at org.eclipse.osgi.framework.eventmgr.EventThread.run(EventThread.java:107) "Signal Dispatcher" daemon prio=10 tid=0x00970e90 nid=0x7a0 waiting on condition [0..0] "YJP CPU Sampler" daemon prio=5 tid=0x0023fdb0 nid=0x798 runnable [0..0] "YJP RequestServer" daemon prio=5 tid=0x00970c18 nid=0x794 runnable [20e6f000..20e6fd90] at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:353) - locked <0x10f911a8> (a java.net.PlainSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:448) at java.net.ServerSocket.accept(ServerSocket.java:419) at com.yourkit.runtime.RequestServer.startServerImpl(RequestServer.java:180) at com.yourkit.runtime.RequestServer.access$000(RequestServer.java:18) at com.yourkit.runtime.RequestServer$1.run(RequestServer.java:56) "Finalizer" daemon prio=9 tid=0x0091e1e8 nid=0x790 in Object.wait() [209ef000..209efd90] at java.lang.Object.wait(Native Method) - waiting on <0x10f912c0> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <0x10f912c0> (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=0x0091ce38 nid=0x78c in Object.wait() [209af000..209afd90] at java.lang.Object.wait(Native Method) - waiting on <0x10f91328> (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 <0x10f91328> (a java.lang.ref.Reference$Lock) "main" prio=7 tid=0x00234dc0 nid=0x780 runnable [6e000..6fc3c] at org.eclipse.swt.internal.win32.OS.WaitMessage(Native Method) at org.eclipse.swt.widgets.Display.sleep(Display.java:2896) at org.eclipse.jface.window.Window.runEventLoop(Window.java:671) at org.eclipse.jface.window.Window.open(Window.java:650) at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:72) at org.eclipse.jface.action.Action.runWithEvent(Action.java:881) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:550) at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:502) at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:435) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:769) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2592) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2270) at org.eclipse.ui.internal.dialogs.EventLoopProgressMonitor.runEventLoop(EventLoopProgressMonitor.java:114) at org.eclipse.ui.internal.dialogs.EventLoopProgressMonitor.isCanceled(EventLoopProgressMonitor.java:94) at org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.isCanceled(ImplicitJobs.java:142) at org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.joinRun(ImplicitJobs.java:110) at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:295) at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:155) at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:95) at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1595) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1635) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:744) at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:2605) at org.eclipse.jdt.core.JavaCore$5.run(JavaCore.java:3448) at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:34) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1640) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3262) at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3431) at org.eclipse.pde.internal.core.ModelEntry.updateUnknownClasspathContainer(ModelEntry.java:151) at org.eclipse.pde.internal.core.RequiredPluginsInitializer.initialize(RequiredPluginsInitializer.java:38) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1178) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:609) at org.eclipse.core.runtime.Platform.run(Platform.java:541) at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1173) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1841) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1755) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1727) at org.eclipse.jdt.internal.core.JavaProject.buildStructure(JavaProject.java:261) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:183) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:567) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:304) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:290) at org.eclipse.jdt.internal.core.JavaElement.getChildren(JavaElement.java:245) at org.eclipse.jdt.internal.core.JavaProject.getPackageFragmentRoots(JavaProject.java:1557) at org.eclipse.jdt.ui.actions.OrganizeImportsAction.hasSourceFolders(OrganizeImportsAction.java:251) at org.eclipse.jdt.ui.actions.OrganizeImportsAction.isEnabled(OrganizeImportsAction.java:237) at org.eclipse.jdt.ui.actions.OrganizeImportsAction.selectionChanged(OrganizeImportsAction.java:150) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchSelectionChanged(SelectionDispatchAction.java:200) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.selectionChanged(SelectionDispatchAction.java:195) at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:159) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:609) at org.eclipse.core.runtime.Platform.run(Platform.java:541) at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:157) at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:1310) at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:666) at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:690) at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:178) at org.eclipse.jface.util.OpenStrategy.access$3(OpenStrategy.java:173) at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:309) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:769) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2592) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2270) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1437) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1408) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:244) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:140) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:90) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:280) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:240) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:117) 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.basicRun(Main.java:267) at org.eclipse.core.launcher.Main.run(Main.java:699) at org.eclipse.core.launcher.Main.main(Main.java:683) "VM Thread" prio=5 tid=0x0095cd38 nid=0x788 runnable "VM Periodic Task Thread" prio=10 tid=0x0095e168 nid=0x7a8 waiting on condition "Suspend Checker Thread" prio=10 tid=0x00970d80 nid=0x79c runnable

Files changed in fix:
bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EventLoopProgressMonitor.java bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/BlockedJobsDialog.java bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ErrorNotificationDialog.java bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressManager.java bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressManagerUtil.java bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressMonitorFocusJobDialog.java