Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 56300 - UI blocked selecting in package explorer
Summary: UI blocked selecting in package explorer
Status: RESOLVED DUPLICATE of bug 52474
Alias: None
Product: JDT
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 3.0   Edit
Hardware: PC Windows 2000
: P3 critical (vote)
Target Milestone: ---   Edit
Assignee: JDT-UI-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-03-26 00:48 EST by Nick Edgar CLA
Modified: 2004-05-04 14:10 EDT (History)
6 users (show)

See Also:


Attachments
Log file (54.92 KB, text/plain)
2004-03-30 12:27 EST, John Arthorne CLA
no flags Details
Dump of hung threads (29.68 KB, text/plain)
2004-03-30 12:28 EST, John Arthorne CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Nick Edgar CLA 2004-03-26 00:48:21 EST
build I20040325-2030

- shortly after startup, I clicked in the package explorer to select the JFace
project
- got a progress dialog indicating that it was computing sync state, and that a
UI operation was blocked
- this seemed deadlocked (no CPU, did not come back)
- canceled the sync job
- canceled the UI operation
- the UI operation came back
- Ctrl+Break shows:


Full thread dump Java HotSpot(TM) Client VM (1.4.2_01-b06 mixed mode):

"Worker-4" prio=5 tid=0x21139008 nid=0x618 in Object.wait() [225cf000..225cfd90]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x1116b060> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:184)
        - locked <0x1116b060> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:210)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"All Types Caching" prio=4 tid=0x213a4e90 nid=0x72c in Object.wait()
[2258f000..2258fd90]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x12c8e030> (a
org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob)
        at
org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.joinRun(ImplicitJobs.java:118)
        - locked <0x12c8e030> (a
org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob)
        at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:265)
        at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:149)
        at
org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:88)
        at
org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1521)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1554)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:744)
        at
org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:2584)
        at org.eclipse.jdt.core.JavaCore$5.run(JavaCore.java:3339)
        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:1559)
        at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3196)
        at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3325)
        at
org.eclipse.pde.internal.core.ModelEntry.updateClasspathContainer(ModelEntry.java:107)
        at
org.eclipse.pde.internal.core.RequiredPluginsInitializer.initialize(RequiredPluginsInitializer.java:40)
        at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1176)
        at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:610)
        at org.eclipse.core.runtime.Platform.run(Platform.java:521)
        at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1171)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1841)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1764)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1736)
        at
org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots(DeltaProcessingState.java:147)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:698)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1559)
        at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3196)
        at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3325)
        at
org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize(JREContainerInitializer.java:51)
        at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1176)
        at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:610)
        at org.eclipse.core.runtime.Platform.run(Platform.java:521)
        at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1171)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1841)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1764)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1736)
        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:430)
        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-3" prio=5 tid=0x21358010 nid=0x90c in Object.wait() [223ff000..223ffd90]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x1116b060> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:184)
        - locked <0x1116b060> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:210)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"Worker-2" prio=5 tid=0x21319048 nid=0x874 in Object.wait() [223bf000..223bfd90]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x1116b060> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:184)
        - locked <0x1116b060> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:210)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"Worker-1" prio=5 tid=0x21053d08 nid=0x510 in Object.wait() [2237f000..2237fd90]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x1116b060> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:184)
        - locked <0x1116b060> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:210)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"Java indexing" daemon prio=4 tid=0x20fc3008 nid=0x9b4 in Object.wait()
[2220f000..2220fd90]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x11a57790> (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:327)
        - locked <0x11a57790> (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=0x21029440 nid=0x89c in
Object.wait() [2124f000..2124fd90]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x10f93da8> (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:167)
        - locked <0x10f93da8> (a org.eclipse.osgi.framework.eventmgr.EventThread)
        at org.eclipse.osgi.framework.eventmgr.EventThread.run(EventThread.java:118)

"Framework Event Dispatcher" daemon prio=5 tid=0x009b13a0 nid=0x554 in
Object.wait() [2120f000..2120fd90]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x10f93df8> (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:167)
        - locked <0x10f93df8> (a org.eclipse.osgi.framework.eventmgr.EventThread)
        at org.eclipse.osgi.framework.eventmgr.EventThread.run(EventThread.java:118)

"Signal Dispatcher" daemon prio=10 tid=0x00970e90 nid=0x994 waiting on condition
[0..0]

"YJP CPU Sampler" daemon prio=5 tid=0x0023fdb0 nid=0x85c runnable [0..0]

"YJP RequestServer" daemon prio=5 tid=0x00970c18 nid=0x910 runnable
[20e6f000..20e6fd90]
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:353)
        - locked <0x10f93fa0> (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=0x838 in Object.wait()
[209ef000..209efd90]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x10f940b8> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
        - locked <0x10f940b8> (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=0x400 in Object.wait()
[209af000..209afd90]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x10f94120> (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 <0x10f94120> (a java.lang.ref.Reference$Lock)

"main" prio=7 tid=0x00234dc0 nid=0x22c in Object.wait() [6c000..6fc3c]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x10650748> (a
org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob)
        at
org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.joinRun(ImplicitJobs.java:118)
        - locked <0x10650748> (a
org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob)
        at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:265)
        at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:149)
        at
org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:88)
        at
org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1521)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1554)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:744)
        at
org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:2584)
        at org.eclipse.jdt.core.JavaCore$5.run(JavaCore.java:3339)
        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:1559)
        at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3196)
        at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3325)
        at
org.eclipse.pde.internal.core.ModelEntry.updateClasspathContainer(ModelEntry.java:107)
        at
org.eclipse.pde.internal.core.RequiredPluginsInitializer.initialize(RequiredPluginsInitializer.java:40)
        at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1176)
        at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:610)
        at org.eclipse.core.runtime.Platform.run(Platform.java:521)
        at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1171)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1841)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1764)
        at
org.eclipse.jdt.internal.core.JavaProject.computeExpandedClasspath(JavaProject.java:350)
        at
org.eclipse.jdt.internal.core.JavaProject.computeExpandedClasspath(JavaProject.java:367)
        at
org.eclipse.jdt.internal.core.JavaProject.getExpandedClasspath(JavaProject.java:1315)
        at
org.eclipse.jdt.internal.core.JavaProject.getExpandedClasspath(JavaProject.java:1294)
        at
org.eclipse.jdt.internal.core.PackageFragmentRoot.determineKind(PackageFragmentRoot.java:302)
        at
org.eclipse.jdt.internal.core.PackageFragmentRoot.buildStructure(PackageFragmentRoot.java:172)
        at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:169)
        at
org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:543)
        at
org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:280)
        at
org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:266)
        at
org.eclipse.jdt.internal.core.PackageFragmentRoot.getKind(PackageFragmentRoot.java:504)
        at
org.eclipse.jdt.ui.actions.OrganizeImportsAction.hasSourceFolders(OrganizeImportsAction.java:254)
        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:610)
        at org.eclipse.core.runtime.Platform.run(Platform.java:521)
        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:2578)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2256)
        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:137)
        at
org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.joinRun(ImplicitJobs.java:106)
        at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:265)
        at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:149)
        at
org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:88)
        at
org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1521)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1554)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:744)
        at
org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:2584)
        at org.eclipse.jdt.core.JavaCore$5.run(JavaCore.java:3339)
        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:1559)
        at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3196)
        at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3325)
        at
org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize(JREContainerInitializer.java:51)
        at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1176)
        at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:610)
        at org.eclipse.core.runtime.Platform.run(Platform.java:521)
        at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1171)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1841)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1764)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1736)
        at
org.eclipse.jdt.internal.core.JavaProject.buildStructure(JavaProject.java:261)
        at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:169)
        at
org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:543)
        at
org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:280)
        at
org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:266)
        at org.eclipse.jdt.internal.core.JavaElement.exists(JavaElement.java:137)
        at org.eclipse.jdt.internal.core.JavaProject.exists(JavaProject.java:894)
        at
org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction$CopyToClipboardEnablementPolicy.canCopyToClipboar
d(CopyToClipboardAction.java:328)
        at
org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction$CopyToClipboardEnablementPolicy.canCopyAllToClipb
oard(CopyToClipboardAction.java:322)
        at
org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction$CopyToClipboardEnablementPolicy.canEnable(CopyToC
lipboardAction.java:310)
        at
org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction.canEnable(CopyToClipboardAction.java:140)
        at
org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction.selectionChanged(CopyToClipboardAction.java:105)
        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:610)
        at org.eclipse.core.runtime.Platform.run(Platform.java:521)
        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:2578)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2256)
        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:137)
        at
org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.joinRun(ImplicitJobs.java:106)
        at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:265)
        at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:149)
        at
org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:88)
        at
org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1521)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1554)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:744)
        at
org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:2584)
        at org.eclipse.jdt.core.JavaCore$5.run(JavaCore.java:3339)
        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:1559)
        at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3196)
        at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3325)
        at
org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize(JREContainerInitializer.java:51)
        at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1176)
        at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:610)
        at org.eclipse.core.runtime.Platform.run(Platform.java:521)
        at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1171)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1841)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1764)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1736)
        at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3316)
        at
org.eclipse.pde.internal.core.ModelEntry.updateClasspathContainer(ModelEntry.java:107)
        at
org.eclipse.pde.internal.core.RequiredPluginsInitializer.initialize(RequiredPluginsInitializer.java:40)
        at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1176)
        at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:610)
        at org.eclipse.core.runtime.Platform.run(Platform.java:521)
        at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1171)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1841)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1764)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1736)
        at
org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots(DeltaProcessingState.java:147)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:698)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1559)
        at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3196)
        at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3325)
        at
org.eclipse.pde.internal.core.ModelEntry.updateClasspathContainer(ModelEntry.java:107)
        at
org.eclipse.pde.internal.core.RequiredPluginsInitializer.initialize(RequiredPluginsInitializer.java:40)
        at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1176)
        at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:610)
        at org.eclipse.core.runtime.Platform.run(Platform.java:521)
        at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1171)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1841)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1764)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1736)
        at
org.eclipse.jdt.internal.core.JavaProject.buildStructure(JavaProject.java:261)
        at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:169)
        at
org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:543)
        at
org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:280)
        at
org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:266)
        at org.eclipse.jdt.internal.core.JavaElement.exists(JavaElement.java:137)
        at org.eclipse.jdt.internal.core.JavaProject.exists(JavaProject.java:894)
        at
org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction$CopyToClipboardEnablementPolicy.canCopyToClipboar
d(CopyToClipboardAction.java:328)
        at
org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction$CopyToClipboardEnablementPolicy.canCopyAllToClipb
oard(CopyToClipboardAction.java:322)
        at
org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction$CopyToClipboardEnablementPolicy.canEnable(CopyToC
lipboardAction.java:310)
        at
org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction.canEnable(CopyToClipboardAction.java:140)
        at
org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction.selectionChanged(CopyToClipboardAction.java:105)
        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:610)
        at org.eclipse.core.runtime.Platform.run(Platform.java:521)
        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:2578)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2256)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1562)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1536)
        at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:257)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:139)
        at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:90)
        at
org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:277)
        at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:239)
        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:316)
        at org.eclipse.core.launcher.Main.run(Main.java:741)
        at org.eclipse.core.launcher.Main.main(Main.java:725)

"VM Thread" prio=5 tid=0x0095cd38 nid=0x830 runnable

"VM Periodic Task Thread" prio=10 tid=0x0095e880 nid=0x8f0 waiting on condition
"Suspend Checker Thread" prio=10 tid=0x00970d80 nid=0x4e4 runnable
Comment 1 Nick Edgar CLA 2004-03-26 00:50:17 EST
Not sure why it was computing sync state.  The sync view was not frontmost.
Comment 2 Dirk Baeumer CLA 2004-03-26 02:27:31 EST
This bug is comparable to bug 52474. The problem is that as soon as you start 
working in the package explorer we access the Java model which initialize the 
JRE Container which does changes to the classpath. The Java Model needs the 
workspace look to do so (see bug 52474/Comment 22). 

We can start looking at all our action to not access the Java model in 
selection change events. But this would lead to always enabled actions. 
Addionally this wouldn't help much. As soon as you open a node you will be 
faced with the same situation. 
Comment 3 Dirk Baeumer CLA 2004-03-26 02:30:19 EST
Can someone from the Team team please comment on why the sync state is 
computed in this situation.
Comment 4 Dirk Baeumer CLA 2004-03-26 03:12:27 EST
Changed title to UI blocked selecting in package explorer since this isn't a 
deadlock.
Comment 5 Dirk Baeumer CLA 2004-03-26 03:13:46 EST
Philippe, can you comment on why project.exists initializes the JRE Container ?
Comment 6 Philipe Mulet CLA 2004-03-26 04:46:27 EST
The project uses the default exist implementation in our model which attempts 
to populate and answers false if unable to do so. We will investigate making it 
a bit smarter, but this isn't a regression, rather the way it used to be since 
ever (i.e. this is not was causes this new blocking situation...).
Comment 7 Philipe Mulet CLA 2004-03-26 04:50:34 EST
Entered bug 56316 for project existency check. This isn't a regression and may 
have subtle ramifications. Thus I'd rather not make this for M8, as it is too 
late in the game.
Comment 8 Erich Gamma CLA 2004-03-26 04:58:52 EST
We shouldn't make this for M8.

In addition, this doesn't solve the full problem, as soon as the user expands 
the project the class paths needs to be resolved.

The caching proposal from John A in bug 52474 would address this one, but this 
is definitly not for M8
Comment 9 Jean-Michel Lemieux CLA 2004-03-26 08:59:11 EST
When the synchronize view is shown at startup we have a job that calculates 
the outgoing changes in your workspace. It doesn't lock any resources though, 
so I would be curious about why it blocked a foreground operations. It is 
quite possible that a scheduled synchronize as running as well.

We have an existing bug 48827 that will be resolved in M9 that deals with 
initialization of the synchronize view.
Comment 10 John Arthorne CLA 2004-03-26 10:36:05 EST
The blockage here is essentially a dup of bug 52474. What disturbs me about this
stack is that there are three asyncExecs being processed in the main thread
simultaneously, since we spin the event loop to keep the UI painting when the UI
thread is blocked.  If another async comes in that tries to acquire a lock, then
we become reentrant (in this case the Java classpath computation is re-entered).
This reentrant issue has also been reported already (bug 51996), but I don't
know what the solution is (other than avoiding the acquisition of locks from
inside asyncExecs). 

I think this recursion is the cause of the "apparent deadlock" that Nick
observes.  When the lock gets released by the background thread, the acquire at
the bottom of the stack is granted the lock, but the the acquire at the top of
the stack is still blocked.  Explict user cancelation of the UI thread blockage
is required to bring it back to life.

I think this bug can be closed as a dup (take your pick of bug 52474 or bug 51996).
Comment 11 Nick Edgar CLA 2004-03-26 11:03:07 EST
Re comment #9, note that the Sync view had not yet been activated.
It was in a tab folder with other views, and was not the selected one, so it
should not have been instantiated.
Comment 12 Nick Edgar CLA 2004-03-26 11:04:00 EST
Re comment #4, It appeared to be a deadlock since the progress dialog was not
going away, and CPU was at 0%.
Comment 13 Nick Edgar CLA 2004-03-26 11:05:30 EST
Re comment #10.  I tried canceling all jobs, but the UI job kept coming back.
Comment 14 John Arthorne CLA 2004-03-30 12:26:42 EST
I just had this happen in M8, and I experienced the same symptoms as Nick where
attempting to cancel the blocked UI operation caused the block dialog to keep
coming back. The answer to the puzzle was in the log file. JRE container
initialization happens inside an ISafeRunnable to protected JDT core from errors
in the container initializer.  When the user attempts to cancel the blocked
operation in the UI thread, it throws OperationCanceledException.  This
propagates down to the safe runnable, which logs and swallows it.  JDT just
treats this as an error on the part of that one container initializer, so it
keeps trying to initialize other containers.  The short summary is that the user
will get a "block UI" dialog for each JRE container in their workspace, for each
JDT core operation that attempts to initialize the variables.  The result is a
"blocked" dialog that is essentially impossible to get rid of.

Would it be reasonable for JDT core to just propogate this
OperationCanceledException (simpy rethrow it from the ISafeRunnable exception
handler).  This would be the only way to truly unwind the entire stack in the UI
thread and get back to the event loop.

Here is a sample from my log file (one per click on the cancel button):

!ENTRY org.eclipse.jdt.core 4 4 Mar 30, 2004 09:52:51.309
!MESSAGE Exception occurred in classpath container initializer:
org.eclipse.jdt.internal.launching.JREContainerInitializer@23e023e0
!STACK 0
org.eclipse.core.runtime.OperationCanceledException
	at java.lang.Throwable.<init>(Throwable.java)
	at
org.eclipse.core.runtime.OperationCanceledException.<init>(OperationCanceledException.java:22)
	at
org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.joinRun(ImplicitJobs.java:109)
	at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:265)
	at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:149)
	at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:88)
	at
org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1521)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1554)
	at
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:744)
	at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:2584)
	at org.eclipse.jdt.core.JavaCore$5.run(JavaCore.java:3339)
	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:1559)
	at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3196)
	at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3325)
	.... this block repeats several times ... 
	at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1171)
	at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1841)
	at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1764)
	at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1736)
	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:430)
	at org.eclipse.jdt.internal.ui.actions.OpenTypeAction.run(OpenTypeAction.java:54)
	at org.eclipse.jdt.internal.ui.actions.OpenTypeAction.run(OpenTypeAction.java:80)
Comment 15 John Arthorne CLA 2004-03-30 12:27:35 EST
Created attachment 9019 [details]
Log file
Comment 16 John Arthorne CLA 2004-03-30 12:28:22 EST
Created attachment 9020 [details]
Dump of hung threads
Comment 17 Dirk Baeumer CLA 2004-04-20 13:32:26 EDT
Philippe, has JDT/Core implemented John's sugestion from comment #14
Comment 18 Philipe Mulet CLA 2004-04-20 18:56:02 EDT
No, we didn't notice this suggestion which look valid. We should always let 
cancellation propagate through.
Comment 19 Philipe Mulet CLA 2004-04-20 18:58:33 EDT
Entered bug 59363 for JDTCore counterpart.
Comment 20 Dirk Baeumer CLA 2004-05-04 14:10:29 EDT
Closing as dup since the JDT counterpart is fixed.

*** This bug has been marked as a duplicate of 52474 ***