[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
> >
>