[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[news.eclipse.tools] Re: bug *not* fixed / Eclipse locks up during startup or switching to Java perspective, suspect deadlock with Decorators

That's pretty specific! Acquire locks in different orders = deadlock. Did
you add a comment to the bug so this won't get lost?

Bob

"Harald Niesche" <harald@xxxxxxxx> wrote in message
news:b28oo6$fh9$1@xxxxxxxxxxxxxxxx
> Some more information:
>
> The main thread is inside JavaElement.getElementInfo() (line 296() holding
> the monitor on the JavaModelManager and trying to acquire the workspace
> lock, while the Decoration thread tries to enter the synchronized method
> JavaModelManager.getPerProjectInfo() (line 926) while holding the
workspace
> lock (acquired from CVSLightweightDecorator.isDirty() using
> EclipseFolder.run()).
>
> Harald
>
> "Harald Niesche" <harald@xxxxxxxx> wrote in message
> news:b28m2s$d7m$1@xxxxxxxxxxxxxxxx
> > "Tod Creasey" <tod_creasey@xxxxxxx> wrote in message
> > news:b28bve$3pu$1@xxxxxxxxxxxxxxxx
> > > Harald this was found and fixed in M5 see -
> > > http://bugs.eclipse.org/bugs/show_bug.cgi?id=29212.
> >
> > Unfortunately, the bug is *not* fixed. The problem still occurs with M5
> and
> > the stacktrace looks more or less the same (see below).
> >
> > Should I re-open the bug or create a new one, since the location and
> > circumstances seem to be different?
> >
> > Harald
> >
>
> --------------------------------------------------------------------------
> > caution: Stacktrace below
> >
> > org.eclipse.core.launcher.Main at localhost:10822 (Suspended)
> >  System Thread [Finalizer] (Suspended)
> >   Object.wait(long) line: not available [native method]
> >   ReferenceQueue.remove(long) line: 111
> >   ReferenceQueue.remove() line: 127
> >   Finalizer$FinalizerThread.run() line: 159
> >  System Thread [Reference Handler] (Suspended)
> >   Object.wait(long) line: not available [native method]
> >   Reference$Lock(Object).wait() line: 426
> >   Reference$ReferenceHandler.run() line: 113
> >  Thread [main] (Suspended)
> >   Object.wait(long) line: not available [native method]
> >   Semaphore(Object).wait() line: 426
> >   Semaphore.acquire() line: 24
> >   UIWorkspaceLock(WorkspaceLock).acquire() line: 49
> >   UIWorkspaceLock.acquire() line: 40
> >   WorkManager.checkIn() line: 80
> >   Workspace.prepareOperation() line: 1551
> >   Workspace.run(IWorkspaceRunnable, IProgressMonitor) line: 1586
> >   JavaCore.run(IWorkspaceRunnable, IProgressMonitor) line: 2633
> >   JavaCore.setClasspathContainer(IPath, IJavaProject[],
> > IClasspathContainer[], IProgressMonitor) line: 2744
> >   ModelEntry.updateClasspathContainer(boolean) line: 103
> >   RequiredPluginsInitializer.initialize(IPath, IJavaProject) line: 30
> >   JavaCore$1.run() line: 872
> >   InternalPlatform.run(ISafeRunnable) line: 867
> >   Platform.run(ISafeRunnable) line: 413
> >   JavaCore.getClasspathContainer(IPath, IJavaProject) line: 867
> >   JavaProject.getResolvedClasspath(IClasspathEntry[], boolean, boolean)
> > line: 1438
> >   JavaProject.getResolvedClasspath(boolean, boolean) line: 1360
> >   JavaProject.getResolvedClasspath(boolean) line: 1336
> >   JavaProject.updatePackageFragmentRoots() line: 2252
> >   JavaProject.generateInfos(OpenableElementInfo, IProgressMonitor, Map,
> > IResource) line: 878
> >   JavaProject(Openable).buildStructure(OpenableElementInfo,
> > IProgressMonitor) line: 71
> >   JavaProject(Openable).openWhenClosed(IProgressMonitor) line: 394
> >   JavaProject.openWhenClosed(IProgressMonitor) line: 1780
> >   JavaProject(JavaElement).openHierarchy() line: 503
> >   JavaProject(JavaElement).getElementInfo() line: 296
> >   JavaProject(JavaElement).getChildren() line: 252
> >   JavaProject(Openable).hasChildren() line: 274
> >
> >
>
PackageExplorerContentProvider(StandardJavaElementContentProvider).hasChildr
> > en(Object) line: 241
> >   PackageExplorerPart$4(AbstractTreeViewer).isExpandable(Object) line:
994
> >   PackageExplorerPart$4(AbstractTreeViewer).updatePlus(Item, Object)
line:
> > 1356
> >   PackageExplorerPart$4(AbstractTreeViewer).createTreeItem(Widget,
Object,
> > int) line: 300
> >   AbstractTreeViewer$1.run() line: 282
> >   BusyIndicator.showWhile(Display, Runnable) line: 65
> >   PackageExplorerPart$4(AbstractTreeViewer).createChildren(Widget) line:
> 268
> >   AbstractTreeViewer$5.run() line: 712
> >   PackageExplorerPart$4(StructuredViewer).preservingSelection(Runnable)
> > line: 796
> >   PackageExplorerPart$4(AbstractTreeViewer).inputChanged(Object, Object)
> > line: 704
> >   PackageExplorerPart$4(ContentViewer).setInput(Object) line: 232
> >   PackageExplorerPart$4(StructuredViewer).setInput(Object) line: 986
> >   PackageExplorerPart.createPartControl(Composite) line: 289
> >   PartPane$4.run() line: 138
> >   InternalPlatform.run(ISafeRunnable) line: 867
> >   Platform.run(ISafeRunnable) line: 413
> >   ViewPane(PartPane).createChildControl() line: 134
> >   ViewPane.createChildControl() line: 202
> >   ViewPane(PartPane).createControl(Composite) line: 183
> >   ViewPane.createControl(Composite) line: 181
> >   ViewFactory$2.run() line: 165
> >   InternalPlatform.run(ISafeRunnable) line: 867
> >   Platform.run(ISafeRunnable) line: 413
> >   ViewFactory.busyRestoreView(IViewReference) line: 93
> >   ViewFactory$1.run() line: 77
> >   BusyIndicator.showWhile(Display, Runnable) line: 65
> >   ViewFactory.restoreView(IViewReference) line: 73
> >   Perspective.restoreState() line: 907
> >   WorkbenchPage.restoreState(IMemento, IPerspectiveDescriptor) line:
2245
> >   WorkbenchWindow.restoreState(IMemento, IPerspectiveDescriptor) line:
> 1224
> >   Workbench.restoreState(IMemento) line: 1150
> >   Workbench.access$9(Workbench, IMemento) line: 1110
> >   Workbench$10.run() line: 1028
> >   InternalPlatform.run(ISafeRunnable) line: 867
> >   Platform.run(ISafeRunnable) line: 413
> >   Workbench.openPreviousWorkbenchState() line: 980
> >   Workbench.init(String[]) line: 725
> >   Workbench.run(Object) line: 1260
> >   InternalBootLoader.run(String, URL, String, String[], Runnable) line:
> 845
> >   BootLoader.run(String, URL, String, String[], Runnable) line: 461
> >   NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not
> > available [native method]
> >   NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
> >   DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
> >   Method.invoke(Object, Object[]) line: 324
> >   Main.basicRun(String[]) line: 247
> >   Main.run(String[]) line: 703
> >   Main.main(String[]) line: 539
> >  System Thread [Signal Dispatcher] (Suspended)
> >  Thread [Java indexing] (Suspended)
> >   Thread.sleep(long) line: not available [native method]
> >   IndexManager(JobManager).run() line: 334
> >   Thread.run() line: 536
> >  Thread [Decoration] (Suspended)
> >   JavaModelManager.getPerProjectInfo(IProject, boolean) line: 926
> >   JavaModelManager.getPerProjectInfoCheckExistence(IProject) line: 940
> >   JavaProject.getResolvedClasspath(boolean, boolean) line: 1351
> >   JavaProject.computeExpandedClasspath(JavaProject, boolean, boolean,
> > HashSet, ObjectVector) line: 238
> >   JavaProject.getExpandedClasspath(boolean, boolean) line: 973
> >   NameEnvironment.computeClasspathLocations(IWorkspaceRoot, JavaProject,
> > SimpleLookupTable) line: 80
> >   NameEnvironment.<init>(IWorkspaceRoot, JavaProject, SimpleLookupTable)
> > line: 37
> >   JavaBuilder.initializeBuilder() line: 431
> >   JavaBuilder.build(int, Map, IProgressMonitor) line: 109
> >   BuildManager$2.run() line: 424
> >   InternalPlatform.run(ISafeRunnable) line: 867
> >   Platform.run(ISafeRunnable) line: 413
> >   BuildManager.basicBuild(int, IncrementalProjectBuilder, Map,
> MultiStatus,
> > IProgressMonitor) line: 125
> >   BuildManager.basicBuild(IProject, int, String, Map, MultiStatus,
> > IProgressMonitor) line: 181
> >   BuildManager.basicBuild(IProject, int, ICommand[], MultiStatus,
> > IProgressMonitor) line: 191
> >   BuildManager$1.run() line: 151
> >   InternalPlatform.run(ISafeRunnable) line: 867
> >   Platform.run(ISafeRunnable) line: 413
> >   BuildManager.basicBuild(IProject, int, MultiStatus, IProgressMonitor)
> > line: 165
> >   BuildManager.basicBuildLoop(IProject[], IProject[], int, MultiStatus,
> > IProgressMonitor) line: 243
> >   BuildManager.build(int, IProgressMonitor) line: 212
> >   Workspace.endOperation(boolean, IProgressMonitor) line: 884
> >   Workspace.run(IWorkspaceRunnable, IProgressMonitor) line: 1593
> >   EclipseFolder.run(ICVSRunnable, IProgressMonitor) line: 317
> >   CVSLightweightDecorator.isDirty(ICVSResource) line: 100
> >   CVSLightweightDecorator.isDirty(IResource) line: 121
> >   CVSLightweightDecorator.decorate(Object, IDecoration) line: 191
> >   LightweightDecoratorDefinition.decorate(Object, IDecoration) line: 153
> >   LightweightDecoratorManager$LightweightRunnable.run() line: 60
> >   InternalPlatform.run(ISafeRunnable) line: 867
> >   Platform.run(ISafeRunnable) line: 413
> >   LightweightDecoratorManager.decorate(Object, DecorationBuilder,
> > LightweightDecoratorDefinition) line: 209
> >   LightweightDecoratorManager.getDecorations(Object, DecorationBuilder)
> > line: 190
> >   DecorationScheduler$3.run() line: 290
> >   Thread.run() line: 536
> >
>