I just ran into this deadlock - stack trace is below.  We
have 2 threads waiting to enter PathEntryManager.getPathEntryStore, which uses
the Java synchronized keyword.  The other thread is inside that routine
waiting for a lock of some kind.  This other thread has caused the MBS
plugin to be started and the MBS has called:
 
                        
                        IJobManager
jobManager = Platform.getJobManager();
                        IWorkspaceRoot
root = ResourcesPlugin.getWorkspace().getRoot();
                        try
{
                                    jobManager.beginRule(root,
null);
 
                                    startResourceChangeHandling();
                        }
catch (Exception e) {…
 
startResourceChangeHandling calls: 
 
                        ISavedState
lastState =
                                    ResourcesPlugin.getWorkspace().addSaveParticipant(ManagedBuilderCorePlugin.this,
listener);
 
Anyone have any ideas?
 
Thanks,
Leo
 
=======================================================
 
Thread [main] (Suspended)
            PathEntryManager.getPathEntryStore(IProject,
boolean) line: 1111
            PathEntryManager.getRawPathEntries(ICProject)
line: 534
            PathEntryManager.getResolvedPathEntries(ICProject,
boolean) line: 445
            PathEntryManager.getResolvedPathEntries(ICProject)
line: 429
            CoreModel.getResolvedPathEntries(ICProject)
line: 946
            CProject.getResolvedPathEntries()
line: 400
            CProject.computeSourceRoots()
line: 595
            CProject.computeSourceRoots(OpenableInfo,
IResource) line: 610
            CProject.buildStructure(OpenableInfo,
IProgressMonitor, Map, IResource) line: 582
            CProject(Openable).generateInfos(Object,
Map, IProgressMonitor) line: 292
            CProject(CElement).openWhenClosed(CElementInfo,
IProgressMonitor) line: 371
            CProject(CElement).getElementInfo(IProgressMonitor)
line: 251
            CProject(CElement).getElementInfo()
line: 241
            CProject(Parent).getChildren()
line: 54
            CProject.getSourceRoots()
line: 478
            CViewContentProvider(BaseCElementContentProvider).getSourceRoots(ICProject)
line: 328
            CViewContentProvider(BaseCElementContentProvider).getChildren(Object)
line: 182
            CViewContentProvider.getChildren(Object)
line: 53
            ProblemTreeViewer(AbstractTreeViewer).getRawChildren(Object)
line: 899
            ProblemTreeViewer(StructuredViewer).getFilteredChildren(Object)
line: 790
            ProblemTreeViewer(StructuredViewer).getSortedChildren(Object)
line: 905
            AbstractTreeViewer$1.run()
line: 512
            BusyIndicator.showWhile(Display,
Runnable) line: 69
            ProblemTreeViewer(AbstractTreeViewer).createChildren(Widget)
line: 494
            ProblemTreeViewer(AbstractTreeViewer).handleTreeExpand(TreeEvent)
line: 948
            AbstractTreeViewer$4.treeExpanded(TreeEvent)
line: 959
            TypedListener.handleEvent(Event)
line: 180
            EventTable.sendEvent(Event)
line: 66
            Tree(Widget).sendEvent(Event)
line: 843
            Tree(Widget).sendEvent(int,
Event, boolean) line: 867
            Tree(Widget).sendEvent(int,
Event) line: 852
            Tree.wmNotifyChild(int,
int) line: 3704
            Composite(Control).WM_NOTIFY(int,
int) line: 3568
            Composite.WM_NOTIFY(int,
int) line: 1035
            Composite(Control).windowProc(int,
int, int, int) line: 3089
            Display.windowProc(int,
int, int, int) line: 3706
            OS.CallWindowProcW(int,
int, int, int, int) line: not available [native method]
            OS.CallWindowProc(int,
int, int, int, int) line: 1580
            Tree.callWindowProc(int,
int, int, int) line: 219
            Tree.WM_LBUTTONDOWN(int,
int) line: 2815
            Tree(Control).windowProc(int,
int, int, int) line: 3071
            Tree.windowProc(int,
int, int, int) line: 2391
            Display.windowProc(int,
int, int, int) line: 3706
            OS.DispatchMessageW(MSG)
line: not available [native method]
            OS.DispatchMessage(MSG)
line: 1656
            Display.readAndDispatch()
line: 2711
            Workbench.runEventLoop(Window$IExceptionHandler,
Display) line: 1699
            Workbench.runUI()
line: 1663
            Workbench.createAndRunWorkbench(Display,
WorkbenchAdvisor) line: 367
            PlatformUI.createAndRunWorkbench(Display,
WorkbenchAdvisor) line: 143
            IDEApplication.run(Object)
line: 103
            PlatformActivator$1.run(Object)
line: 226
            EclipseStarter.run(Object)
line: 376
            EclipseStarter.run(String[],
Runnable) line: 163
            NativeMethodAccessorImpl.invoke0(Method,
Object, Object[]) line: not available [native method]
            NativeMethodAccessorImpl.invoke(Object,
Object[]) line: not available
            DelegatingMethodAccessorImpl.invoke(Object,
Object[]) line: not available
            Method.invoke(Object,
Object[]) line: not available
            Main.invokeFramework(String[],
URL[]) line: 334
            Main.basicRun(String[])
line: 278
            Main.run(String[])
line: 973
            Main.main(String[])
line: 948
 
Thread [C/C++ Indexer] (Suspended)
            Object.wait(long)
line: not available [native method]
            Semaphore.acquire(long)
line: 38
            OrderedLock.doAcquire(Semaphore,
long) line: 167
            OrderedLock.acquire(long)
line: 103
            OrderedLock.acquire()
line: 80
            WorkManager.checkIn(ISchedulingRule,
IProgressMonitor) line: 97
            Workspace.prepareOperation(ISchedulingRule,
IProgressMonitor) line: 1674
            SaveManager.addParticipant(Plugin,
ISaveParticipant) line: 111
            Workspace.addSaveParticipant(Plugin,
ISaveParticipant) line: 159
            ManagedBuilderCorePlugin.startResourceChangeHandling()
line: 139
            ManagedBuilderCorePlugin.start(BundleContext)
line: 96
            BundleContextImpl$2.run()
line: 994
            AccessController.doPrivileged(PrivilegedExceptionAction)
line: not available [native method]
            BundleContextImpl.startActivator(BundleActivator)
line: 988
            BundleContextImpl.start()
line: 969
            BundleHost.startWorker(boolean)
line: 321
            BundleHost(AbstractBundle).start()
line: 266
            EclipseClassLoader.findLocalClass(String)
line: 116
            BundleLoader.findLocalClass(String)
line: 337
            BundleLoader.findClass(String,
boolean) line: 389
            BundleLoader.findClass(String)
line: 350
            EclipseClassLoader(AbstractClassLoader).loadClass(String,
boolean) line: 78
            EclipseClassLoader(ClassLoader).loadClass(String)
line: not available
            BundleLoader.loadClass(String)
line: 275
            BundleHost.loadClass(String,
boolean) line: 227
            BundleHost(AbstractBundle).loadClass(String)
line: 1259
            ConfigurationElement.createExecutableExtension(Bundle,
String, Object, ConfigurationElement, String) line: 152
            ConfigurationElement.createExecutableExtension(String,
String, Object, ConfigurationElement, String) line: 142
            ConfigurationElement.createExecutableExtension(String)
line: 129
            ConfigurationElementHandle.createExecutableExtension(String)
line: 48
            COwnerConfiguration.createOwner()
line: 52
            COwner.update(IProject,
ICDescriptor, String) line: 47
            CDescriptor.get(String,
boolean) line: 216
            PathEntryManager.createPathEntryStore(IProject)
line: 1126
            PathEntryManager.getPathEntryStore(IProject,
boolean) line: 1113
            PathEntryManager.getRawPathEntries(ICProject)
line: 534
            PathEntryManager.getResolvedPathEntries(ICProject,
boolean) line: 445
            PathEntryManager.getResolvedPathEntries(ICProject)
line: 429
            CoreModel.getResolvedPathEntries(ICProject)
line: 946
            CProject.getResolvedPathEntries()
line: 400
            CProject.computeSourceRoots()
line: 595
            CProject.computeSourceRoots(OpenableInfo,
IResource) line: 610
            CProject.buildStructure(OpenableInfo,
IProgressMonitor, Map, IResource) line: 582
            CProject(Openable).generateInfos(Object,
Map, IProgressMonitor) line: 292
            CProject(CElement).openWhenClosed(CElementInfo,
IProgressMonitor) line: 371
            CProject(CElement).getElementInfo(IProgressMonitor)
line: 251
            CProject(CElement).getElementInfo()
line: 241
            CProject(Parent).getChildren()
line: 54
            CProject.getSourceRoots()
line: 478
            DOMIndexAllProject.execute(IProgressMonitor)
line: 92
            IndexManager(JobManager).run()
line: 466
            Thread.run()
line: not available
 
Thread [Worker-5] (Suspended)
            PathEntryManager.getPathEntryStore(IProject,
boolean) line: 1111
            PathEntryManager.getRawPathEntries(ICProject)
line: 534
            PathEntryManager.getResolvedPathEntries(ICProject,
boolean) line: 445
            PathEntryManager.getResolvedPathEntries(ICProject)
line: 429
            CoreModel.getResolvedPathEntries(ICProject)
line: 946
            CProject.getResolvedPathEntries()
line: 400
            CProject.computeSourceRoots()
line: 595
            CProject.getAllSourceRoots()
line: 502
            CModelManager.create(IFile,
ICProject) line: 278
            CModelManager.create(IResource,
ICProject) line: 218
            DeltaProcessor.createElement(IResource)
line: 96
            DeltaProcessor.traverseDelta(ICElement,
IResourceDelta) line: 462
            DeltaProcessor.traverseDelta(ICElement,
IResourceDelta) line: 481
            DeltaProcessor.processResourceDelta(IResourceDelta)
line: 443
            CModelManager.resourceChanged(IResourceChangeEvent)
line: 738
            NotificationManager$2.run()
line: 276
            InternalPlatform.run(ISafeRunnable)
line: 1044
            Platform.run(ISafeRunnable)
line: 783
            NotificationManager.notify(ResourceChangeListenerList$ListenerEntry[],
IResourceChangeEvent, boolean) line: 270
            NotificationManager.broadcastChanges(ElementTree,
ResourceChangeEvent, boolean) line: 144
            Workspace.broadcastPostChange()
line: 180
            Workspace.endOperation(ISchedulingRule,
boolean, IProgressMonitor) line: 914
            RefreshJob(InternalWorkspaceJob).run(IProgressMonitor)
line: 45
            Worker.run()
line: 76