Bug 91861 - Deadlock on startup while computing namelookup
Summary: Deadlock on startup while computing namelookup
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.1   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.1 M7   Edit
Assignee: Jerome Lanneluc CLA
QA Contact:
URL:
Whiteboard:
Keywords:
: 84162 (view as bug list)
Depends on:
Blocks:
 
Reported: 2005-04-19 05:59 EDT by Philipe Mulet CLA
Modified: 2005-05-12 06:22 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Philipe Mulet CLA 2005-04-19 05:59:56 EDT
JDT/Core HEAD from 04/19

After patching with JDT/Core, and restarting workspace (multi-window) I got the
following deadlock (thread dump).

java.lang.ClassCircularityError: org/eclipse/pde/internal/core/WorkspaceModelManager
        at org.eclipse.pde.internal.core.PDECore.initializeModels(PDECore.java:376)
        at org.eclipse.pde.internal.core.PDECore.getModelManager(PDECore.java:301)
        at
org.eclipse.pde.internal.core.RequiredPluginsInitializer.initialize(RequiredPluginsInitializer.java:36)
        at
org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:1416)
        at
org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:971)
        at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1304)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:2065)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1973)
        at
org.eclipse.jdt.internal.core.JavaProject.isOnClasspath(JavaProject.java:2251)
        at
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider$CompilationUnitAnnotationModel.internalBeginReporting(CompilationUnitDocumentP
rovider.java:467)
        at
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider$CompilationUnitAnnotationModel.beginReportingSequence(CompilationUnitDocumentP
rovider.java:457)
        at
org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.initialReconcile(JavaCompositeReconcilingStrategy.java:119)
        at
org.eclipse.jface.text.reconciler.MonoReconciler.initialProcess(MonoReconciler.java:103)
        at
org.eclipse.jdt.internal.ui.text.JavaReconciler.initialProcess(JavaReconciler.java:307)
        at
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:170)
Full thread dump Java HotSpot(TM) Client VM (1.4.2_08-b03 mixed mode):

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x033f2a48
nid=0xc88 waiting for monitor entry [541f000..541fd8c]
        at
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:90)
        - waiting to lock <0x168fa708> (a
org.eclipse.jdt.internal.core.CompilationUnit)
        at
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.initialReconcile(JavaReconcilingStrategy.java:160)
        at
org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.initialReconcile(CompositeReconcilingStrategy.java:114)
        at
org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.initialReconcile(JavaCompositeReconcilingStrategy.java:120)
        at
org.eclipse.jface.text.reconciler.MonoReconciler.initialProcess(MonoReconciler.java:103)
        at
org.eclipse.jdt.internal.ui.text.JavaReconciler.initialProcess(JavaReconciler.java:307)
        - locked <0x179bacd0> (a java.lang.Object)
        at
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:170)

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x033d6b00
nid=0xc60 in Object.wait() [52af000..52afd8c]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x17475aa8> (a
org.eclipse.jface.text.reconciler.DirtyRegionQueue)
        at
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:176)
        - locked <0x17475aa8> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x041dcd88
nid=0xd60 in Object.wait() [4f4f000..4f4fd8c]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x17b3c308> (a org.eclipse.core.internal.jobs.ThreadJob)
        at org.eclipse.core.internal.jobs.ThreadJob.joinRun(ThreadJob.java:160)
        - locked <0x17b3c308> (a org.eclipse.core.internal.jobs.ThreadJob)
        at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:88)
        at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:186)
        at
org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:96)
        at
org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1669)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1709)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:782)
        at
org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:2771)
        at org.eclipse.jdt.core.JavaCore$3.run(JavaCore.java:3830)
        at
org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:39)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:718)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1714)
        at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3639)
        at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3813)
        at
org.eclipse.pde.internal.core.ModelEntry.updateClasspathContainer(ModelEntry.java:110)
        at
org.eclipse.pde.internal.core.RequiredPluginsInitializer.initialize(RequiredPluginsInitializer.java:40)
        at
org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:1416)
        at
org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:971)
        at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1304)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:2065)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1973)
        at
org.eclipse.jdt.internal.core.JavaProject.computePackageFragmentRoots(JavaProject.java:574)
        at
org.eclipse.jdt.internal.core.JavaProject.computePackageFragmentRoots(JavaProject.java:647)
        at
org.eclipse.jdt.internal.core.JavaProject.computePackageFragmentRoots(JavaProject.java:608)
        at
org.eclipse.jdt.internal.core.JavaProject.getAllPackageFragmentRoots(JavaProject.java:1338)
        at
org.eclipse.jdt.internal.core.JavaProjectElementInfo.getAllPackageFragmentRoots(JavaProjectElementInfo.java:172)
        at
org.eclipse.jdt.internal.core.JavaProjectElementInfo.newNameLookup(JavaProjectElementInfo.java:255)
        - locked <0x17174fc8> (a
org.eclipse.jdt.internal.core.JavaProjectElementInfo)
        at
org.eclipse.jdt.internal.core.JavaProject.newNameLookup(JavaProject.java:2363)
        at
org.eclipse.jdt.internal.core.SearchableEnvironment.<init>(SearchableEnvironment.java:60)
        at
org.eclipse.jdt.internal.core.SearchableEnvironment.<init>(SearchableEnvironment.java:74)
        at
org.eclipse.jdt.internal.core.CancelableNameEnvironment.<init>(CancelableNameEnvironment.java:26)
        at
org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:148)
        at
org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:214)
        at
org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:79)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:718)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:777)
        at
org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:1080)
        at
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:91)
        - locked <0x168fa708> (a org.eclipse.jdt.internal.core.CompilationUnit)
        at
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.initialReconcile(JavaReconcilingStrategy.java:160)
        at
org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.initialReconcile(CompositeReconcilingStrategy.java:114)
        at
org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.initialReconcile(JavaCompositeReconcilingStrategy.java:120)
        at
org.eclipse.jface.text.reconciler.MonoReconciler.initialProcess(MonoReconciler.java:103)
        at
org.eclipse.jdt.internal.ui.text.JavaReconciler.initialProcess(JavaReconciler.java:307)
        - locked <0x16b29418> (a java.lang.Object)
        at
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:170)

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x042aca38
nid=0xdbc in Object.wait() [504f000..504fd8c]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x17b3c4a8> (a org.eclipse.core.internal.jobs.ThreadJob)
        at org.eclipse.core.internal.jobs.ThreadJob.joinRun(ThreadJob.java:160)
        - locked <0x17b3c4a8> (a org.eclipse.core.internal.jobs.ThreadJob)
        at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:88)
        at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:186)
        at
org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:96)
        at
org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1669)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1709)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:782)
        at
org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:2771)
        at org.eclipse.jdt.core.JavaCore$3.run(JavaCore.java:3830)
        at
org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:39)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:718)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1714)
        at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3639)
        at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3813)
        at
org.eclipse.pde.internal.core.ModelEntry.updateClasspathContainer(ModelEntry.java:110)
        at
org.eclipse.pde.internal.core.RequiredPluginsInitializer.initialize(RequiredPluginsInitializer.java:40)
        at
org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:1416)
        at
org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:971)
        at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1304)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:2065)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1973)
        at
org.eclipse.jdt.internal.core.JavaProject.isOnClasspath(JavaProject.java:2251)
        at
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider$CompilationUnitAnnotationModel.internalBeginReporting(CompilationUnitDocumentP
rovider.java:467)
        at
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider$CompilationUnitAnnotationModel.beginReportingSequence(CompilationUnitDocumentP
rovider.java:457)
        at
org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.initialReconcile(JavaCompositeReconcilingStrategy.java:119)
        at
org.eclipse.jface.text.reconciler.MonoReconciler.initialProcess(MonoReconciler.java:103)
        at
org.eclipse.jdt.internal.ui.text.JavaReconciler.initialProcess(JavaReconciler.java:307)
        - locked <0x164db338> (a java.lang.Object)
        at
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:170)

"Java indexing" daemon prio=4 tid=0x03482010 nid=0x57c in Object.wait()
[4e4f000..4e4fd8c]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x16105ee0> (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:346)
        - locked <0x16105ee0> (a
org.eclipse.jdt.internal.core.search.indexing.IndexManager)
        at java.lang.Thread.run(Thread.java:534)

"Worker-0" prio=5 tid=0x00a74808 nid=0xb74 in Object.wait() [4c1f000..4c1fd8c]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x128a77c8> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:168)
        - locked <0x128a77c8> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:200)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:60)

"Start Level Event Dispatcher" daemon prio=5 tid=0x034d2958 nid=0xdc0 in
Object.wait() [3fcf000..3fcfd8c]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x127dcbb0> (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 <0x127dcbb0> (a org.eclipse.osgi.framework.eventmgr.EventThread)
        at org.eclipse.osgi.framework.eventmgr.EventThread.run(EventThread.java:100)

"OSGi Console" prio=5 tid=0x034bda50 nid=0xac8 runnable [3ecf000..3ecfd8c]
        at java.io.FileInputStream.readBytes(Native Method)
        at java.io.FileInputStream.read(FileInputStream.java:194)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:220)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:277)
        - locked <0x127806a0> (a java.io.BufferedInputStream)
        at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(StreamDecoder.java:408)
        at sun.nio.cs.StreamDecoder$CharsetSD.implRead(StreamDecoder.java:450)
        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:182)
        - locked <0x127db208> (a java.io.InputStreamReader)
        at java.io.InputStreamReader.read(InputStreamReader.java:167)
        at java.io.BufferedReader.fill(BufferedReader.java:136)
        at java.io.BufferedReader.readLine(BufferedReader.java:299)
        - locked <0x127db208> (a java.io.InputStreamReader)
        at java.io.BufferedReader.readLine(BufferedReader.java:362)
        at
org.eclipse.osgi.framework.internal.core.FrameworkConsole.console(FrameworkConsole.java:273)
        at
org.eclipse.osgi.framework.internal.core.FrameworkConsole.console(FrameworkConsole.java:237)
        at
org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkConsole.java:208)
        at java.lang.Thread.run(Thread.java:534)

"Framework Event Dispatcher" daemon prio=5 tid=0x034a1470 nid=0xf3c in
Object.wait() [3dcf000..3dcfd8c]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x163bfed8> (a org.eclipse.swt.widgets.RunnableLock)
        at java.lang.Object.wait(Object.java:429)
        at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:164)
        - locked <0x163bfed8> (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:3220)
        at
org.eclipse.ui.internal.AbstractWorkingSetManager.firePropertyChange(AbstractWorkingSetManager.java:281)
        at
org.eclipse.ui.internal.AbstractWorkingSetManager.getUpdater(AbstractWorkingSetManager.java:526)
        at
org.eclipse.ui.internal.AbstractWorkingSetManager.bundleChanged(AbstractWorkingSetManager.java:487)
        - locked <0x15fa6268> (a org.eclipse.ui.internal.WorkingSetManager)
        at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:1205)
        at
org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:186)
        at org.eclipse.osgi.framework.eventmgr.EventThread.run(EventThread.java:104)

"State Data Manager" daemon prio=5 tid=0x00a24848 nid=0xa40 waiting on condition
[3ccf000..3ccfd8c]
        at java.lang.Thread.sleep(Native Method)
        at
org.eclipse.osgi.internal.resolver.StateManager.run(StateManager.java:187)
        at java.lang.Thread.run(Thread.java:534)

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

"YJP CPU Sampler" daemon prio=5 tid=0x00a237f0 nid=0x8ec runnable [0..0]

"YJP RequestServer" daemon prio=5 tid=0x00a11e68 nid=0xf5c runnable
[369f000..369fd8c]
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:353)
        - locked <0x1277da28> (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:236)
        at com.yourkit.runtime.RequestServer.access$000(RequestServer.java:17)
        at com.yourkit.runtime.RequestServer$1.run(RequestServer.java:61)

"Finalizer" daemon prio=9 tid=0x00a1f0b0 nid=0xd80 in Object.wait()
[2f9f000..2f9fd8c]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x1277db50> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
        - locked <0x1277db50> (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=0x00a13688 nid=0xaf0 in Object.wait()
[2e9f000..2e9fd8c]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x1277dbb8> (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 <0x1277dbb8> (a java.lang.ref.Reference$Lock)

"main" prio=7 tid=0x00036008 nid=0xf84 waiting for monitor entry [7e000..7fc38]
        at
org.eclipse.jdt.internal.core.JavaProjectElementInfo.resetCaches(JavaProjectElementInfo.java:264)
        - waiting to lock <0x17174fc8> (a
org.eclipse.jdt.internal.core.JavaProjectElementInfo)
        at
org.eclipse.jdt.internal.core.JavaProject.updatePackageFragmentRoots(JavaProject.java:2933)
        at
org.eclipse.jdt.internal.core.SetClasspathOperation.executeOperation(SetClasspathOperation.java:261)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:718)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1714)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:782)
        at
org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:2771)
        at
org.eclipse.jdt.internal.core.SetClasspathOperation$5.run(SetClasspathOperation.java:684)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.runPostActions(JavaModelOperation.java:804)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:721)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1714)
        at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3639)
        at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3813)
        at
org.eclipse.pde.internal.core.ModelEntry.updateClasspathContainer(ModelEntry.java:110)
        at
org.eclipse.pde.internal.core.RequiredPluginsInitializer.initialize(RequiredPluginsInitializer.java:40)
        at
org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:1416)
        at
org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:971)
        at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1304)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:2065)
        at
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1973)
        at
org.eclipse.jdt.internal.core.JavaProject.computePackageFragmentRoots(JavaProject.java:574)
        at
org.eclipse.jdt.internal.core.JavaProject.computePackageFragmentRoots(JavaProject.java:647)
        at
org.eclipse.jdt.internal.core.JavaProject.computePackageFragmentRoots(JavaProject.java:608)
        at
org.eclipse.jdt.internal.core.JavaProject.getAllPackageFragmentRoots(JavaProject.java:1338)
        at
org.eclipse.jdt.internal.core.JavaProject.getAllPackageFragmentRoots(JavaProject.java:1333)
        at
org.eclipse.jdt.internal.core.JavaProject.findPackageFragmentRoot0(JavaProject.java:1094)
        at
org.eclipse.jdt.internal.core.JavaProject.findPackageFragmentRoot(JavaProject.java:1085)
        at
org.eclipse.jdt.ui.StandardJavaElementContentProvider.getResources(StandardJavaElementContentProvider.java:297)
        at
org.eclipse.jdt.ui.StandardJavaElementContentProvider.getChildren(StandardJavaElementContentProvider.java:176)
        at
org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider.getChildren(PackageExplorerContentProvider.java:158)
        at
org.eclipse.jdt.ui.StandardJavaElementContentProvider.hasChildren(StandardJavaElementContentProvider.java:221)
        at
org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:1259)
        at
org.eclipse.jdt.internal.ui.viewsupport.ProblemTreeViewer.isExpandable(ProblemTreeViewer.java:159)
        at
org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart$PackageExplorerProblemTreeViewer.isExpandable(PackageExplorerPart.java:293)
        at
org.eclipse.jface.viewers.AbstractTreeViewer.updatePlus(AbstractTreeViewer.java:1721)
        at
org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:433)
        at
org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:411)
        at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
        at
org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:391)
        at
org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand(AbstractTreeViewer.java:971)
        at
org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand(AbstractTreeViewer.java:968)
        at
org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:1494)
        at
org.eclipse.jface.viewers.StructuredViewer.setSelectionToWidget(StructuredViewer.java:1484)
        at
org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart$PackageExplorerProblemTreeViewer.setSelectionToWidget(PackageExplorerPart.java:599)
        at
org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1440)
        at
org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart.showInput(PackageExplorerPart.java:1446)
        at
org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart.editorActivated(PackageExplorerPart.java:1411)
        at
org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart$1.partActivated(PackageExplorerPart.java:210)
        at org.eclipse.ui.internal.PartListenerList$1.run(PartListenerList.java:72)
        at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1021)
        at org.eclipse.core.runtime.Platform.run(Platform.java:757)
        at
org.eclipse.ui.internal.PartListenerList.fireEvent(PartListenerList.java:58)
        at
org.eclipse.ui.internal.PartListenerList.firePartActivated(PartListenerList.java:70)
        at
org.eclipse.ui.internal.WorkbenchPage.firePartActivated(WorkbenchPage.java:1488)
        at org.eclipse.ui.internal.WorkbenchPage.onActivate(WorkbenchPage.java:2140)
        at org.eclipse.ui.internal.WorkbenchWindow$5.run(WorkbenchWindow.java:2350)
        at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
        at
org.eclipse.ui.internal.WorkbenchWindow.setActivePage(WorkbenchWindow.java:2336)
        at
org.eclipse.ui.internal.WorkbenchWindow.restoreState(WorkbenchWindow.java:1858)
        at org.eclipse.ui.internal.Workbench.restoreState(Workbench.java:1408)
        at org.eclipse.ui.internal.Workbench.access$9(Workbench.java:1358)
        at org.eclipse.ui.internal.Workbench$14.run(Workbench.java:1241)
        at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1021)
        at org.eclipse.core.runtime.Platform.run(Platform.java:757)
        at org.eclipse.ui.internal.Workbench.restoreState(Workbench.java:1185)
        at
org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(WorkbenchConfigurer.java:173)
        at
org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:712)
        at org.eclipse.ui.internal.Workbench.init(Workbench.java:962)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1510)
        at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:306)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143)
        at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:103)
        at
org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:228)
        at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
        at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:156)
        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:316)
        at org.eclipse.core.launcher.Main.basicRun(Main.java:269)
        at org.eclipse.core.launcher.Main.run(Main.java:948)
        at org.eclipse.core.launcher.Main.main(Main.java:932)

"VM Thread" prio=5 tid=0x009cafd8 nid=0xe80 runnable

"VM Periodic Task Thread" prio=10 tid=0x00a11288 nid=0x634 waiting on condition
"Suspend Checker Thread" prio=10 tid=0x00a0bba0 nid=0x23c runnable
Comment 1 Philipe Mulet CLA 2005-04-19 06:04:04 EDT
Ignoring initial classloader circularity (could be a PDE issue), problem comes
from interference between one editor reconciling while package explorer is being
rendered.

Reconcile
 - lock on projectElementInfo (to compute namelookup)
 - initializes classpath
 - calls out client CP initializer
 - execute operation which needs resource lock --> WAIT

Main (pkg explorer)
 - takes resource lock
 - initializes classpath 
 - attempt to lock on projectElementInfo to reset pkg fragment roots cache
 - DEADLOCK

Comment 2 Philipe Mulet CLA 2005-04-19 06:04:51 EDT
No 3rd party code should run within our projectElementInfo lock. 
Proposal is to stop synchronizing namelookup creation.
Comment 3 Jerome Lanneluc CLA 2005-04-19 07:13:40 EDT
Changed JavaProjectElementInfo to use a member class (ProjectCache) to store the
allPackageFragmentRootsCache, allPackageFragmentsCache, and
pathToResolvedEntries. This cache is reset at once (by nulling the projectCache
field), and it is initialized at once (in getProjectCache()). No need to
synchronize these methods any longer.
Comment 4 Frederic Fusier CLA 2005-05-11 11:06:04 EDT
Verified for 3.1 M7 using build I20050509-2010 + jdt.core HEAD.
Comment 5 Jerome Lanneluc CLA 2005-05-12 06:22:21 EDT
*** Bug 84162 has been marked as a duplicate of this bug. ***