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