Deadlock on Eclipse start-up [message #893875] |
Thu, 05 July 2012 14:56  |
Eclipse User |
|
|
|
Hi,
I am not sure if this is the correct place to post this so please feel free to direct me in the right direction if needed.
Eclipse hung on start-up today and looking at the VM in jconsole showed a possible deadlock. I killed it and did a clean restart without a problem and this is the first time this happened. I am posting this in case it is useful.
My installation:
Eclipse SDK
Version: 3.7.2
Build id: M20120208-0800
Window XP 64bit
The stack traces:
Name: main
State: BLOCKED on org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@7ed45f89 owned by: org.eclipse.jdt.internal.ui.text.JavaReconciler
Total blocked: 19 Total waited: 830
Stack trace:
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLoadedClass(ClasspathManager.java:477)
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:456)
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:35)
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:473)
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
java.lang.ClassLoader.loadClass(ClassLoader.java:247)
org.eclipse.jdt.ui.ProblemsLabelDecorator.getErrorTicksFromMarkers(ProblemsLabelDecorator.java:248)
org.eclipse.jdt.ui.ProblemsLabelDecorator.computeAdornmentFlags(ProblemsLabelDecorator.java:188)
org.eclipse.jdt.internal.ui.viewsupport.TreeHierarchyLayoutProblemsDecorator.computeAdornmentFlags(TreeHierarchyLayoutProblemsDecorator.java:70)
org.eclipse.jdt.internal.ui.packageview.PackageExplorerProblemsDecorator.computeAdornmentFlags(PackageExplorerProblemsDecorator.java:35)
org.eclipse.jdt.ui.ProblemsLabelDecorator.decorateImage(ProblemsLabelDecorator.java:163)
org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider.decorateImage(JavaUILabelProvider.java:134)
org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider.getImage(JavaUILabelProvider.java:149)
org.eclipse.jdt.internal.ui.packageview.PackageExplorerLabelProvider.getImage(PackageExplorerLabelProvider.java:140)
org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.getImage(DelegatingStyledCellLabelProvider.java:184)
org.eclipse.jface.viewers.DecoratingStyledCellLabelProvider.getImage(DecoratingStyledCellLabelProvider.java:167)
org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.update(DelegatingStyledCellLabelProvider.java:118)
org.eclipse.jface.viewers.DecoratingStyledCellLabelProvider.update(DecoratingStyledCellLabelProvider.java:134)
org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:152)
org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:938)
org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run(AbstractTreeViewer.java:106)
org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:1018)
org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:485)
org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:2167)
org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:833)
org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:808)
org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:782)
org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:644)
org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:753)
org.eclipse.jface.viewers.AbstractTreeViewer.internalInitializeTree(AbstractTreeViewer.java:1533)
org.eclipse.jface.viewers.TreeViewer.internalInitializeTree(TreeViewer.java:833)
org.eclipse.jface.viewers.AbstractTreeViewer$5.run(AbstractTreeViewer.java:1517)
org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1443)
org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:403)
org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1404)
org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged(AbstractTreeViewer.java:1510)
org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:280)
org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1690)
org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart.createPartControl(PackageExplorerPart.java:509)
org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:375)
org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:229)
org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)
org.eclipse.ui.internal.WorkbenchPage$ActivationList.setActive(WorkbenchPage.java:4317)
org.eclipse.ui.internal.WorkbenchPage$18.runWithException(WorkbenchPage.java:3359)
org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
- locked org.eclipse.swt.widgets.RunnableLock@7aa8be43
org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140)
org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757)
org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
org.eclipse.ui.internal.Workbench$33.runWithException(Workbench.java:1600)
org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
- locked org.eclipse.swt.widgets.RunnableLock@31f0fe3
org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140)
org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757)
org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2609)
org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
org.eclipse.equinox.launcher.Main.run(Main.java:1410)
org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Name: org.eclipse.jdt.internal.ui.text.JavaReconciler
State: BLOCKED on org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@33e2ad75 owned by: main
Total blocked: 5 Total waited: 1
Stack trace:
org.eclipse.jdt.internal.ui.viewsupport.ProblemMarkerManager.resourceChanged(ProblemMarkerManager.java:126)
org.eclipse.core.internal.events.NotificationManager$1.run(NotificationManager.java:291)
org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:285)
org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:149)
org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:395)
org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1530)
org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2353)
org.eclipse.debug.core.model.Breakpoint.setAttributes(Breakpoint.java:228)
org.eclipse.jdt.internal.debug.core.breakpoints.JavaBreakpoint.configureAtStartup(JavaBreakpoint.java:849)
org.eclipse.jdt.internal.debug.core.breakpoints.JavaBreakpoint.setMarker(JavaBreakpoint.java:184)
org.eclipse.debug.internal.core.BreakpointManager.createBreakpoint(BreakpointManager.java:548)
org.eclipse.debug.internal.core.BreakpointManager.loadBreakpoints(BreakpointManager.java:264)
org.eclipse.debug.internal.core.BreakpointManager.initializeBreakpoints(BreakpointManager.java:449)
org.eclipse.debug.internal.core.BreakpointManager.getBreakpoints0(BreakpointManager.java:418)
- locked org.eclipse.debug.internal.core.BreakpointManager@34d68841
org.eclipse.debug.internal.core.BreakpointManager.start(BreakpointManager.java:408)
org.eclipse.debug.core.DebugPlugin.start(DebugPlugin.java:682)
org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
java.security.AccessController.doPrivileged(Native Method)
org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299)
org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440)
org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:268)
org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:463)
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:35)
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:473)
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
java.lang.ClassLoader.loadClass(ClassLoader.java:247)
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
java.lang.ClassLoader.defineClass(ClassLoader.java:615)
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:188)
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClassHoldingLock(ClasspathManager.java:626)
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:608)
- locked org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@7ed45f89
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:562)
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:486)
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:459)
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:476)
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
java.lang.ClassLoader.loadClass(ClassLoader.java:247)
org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:164)
org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:679)
org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299)
org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440)
org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:268)
org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:463)
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:476)
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
java.lang.ClassLoader.loadClass(ClassLoader.java:247)
org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1207)
org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:905)
org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
org.eclipse.jdt.core.JavaCore.computeClasspathContainerInitializer(JavaCore.java:2858)
org.eclipse.jdt.core.JavaCore.getClasspathContainerInitializer(JavaCore.java:2834)
org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:2822)
org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:1876)
org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:2811)
org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2689)
org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2853)
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1958)
org.eclipse.jdt.internal.core.JavaProject.buildStructure(JavaProject.java:461)
org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:258)
org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:518)
org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:255)
org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:241)
org.eclipse.jdt.internal.core.JavaProject.getJavaProjectElementInfo(JavaProject.java:1638)
org.eclipse.jdt.internal.core.JavaProject.newNameLookup(JavaProject.java:2325)
org.eclipse.jdt.internal.core.SearchableEnvironment.<init>(SearchableEnvironment.java:59)
org.eclipse.jdt.internal.core.SearchableEnvironment.<init>(SearchableEnvironment.java:66)
org.eclipse.jdt.internal.core.CancelableNameEnvironment.<init>(CancelableNameEnvironment.java:26)
org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:176)
org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:269)
org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.makeConsistent(ReconcileWorkingCopyOperation.java:190)
org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:89)
org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:728)
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:788)
org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:1244)
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:126)
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.access$0(JavaReconcilingStrategy.java:108)
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy$1.run(JavaReconcilingStrategy.java:89)
org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:87)
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.initialReconcile(JavaReconcilingStrategy.java:178)
org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.initialReconcile(CompositeReconcilingStrategy.java:114)
org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.initialReconcile(JavaCompositeReconcilingStrategy.java:136)
org.eclipse.jface.text.reconciler.MonoReconciler.initialProcess(MonoReconciler.java:105)
org.eclipse.jdt.internal.ui.text.JavaReconciler.initialProcess(JavaReconciler.java:406)
- locked java.lang.Object@708b7e80
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:173)
|
|
|
Re: Deadlock on Eclipse start-up [message #893879 is a reply to message #893875] |
Thu, 05 July 2012 15:16  |
Eclipse User |
|
|
|
Generally, this could be caused by some kind of circular plug-in dependencies, which cause grief on JVMs <= 6 but starting with version 7 the JVM should be better able to handle this. At this level we are talking about how Equinox [1] orchestrates loading of plug-ins and classes.
From the stack traces the relevant plug-ins seem to be JDT/Core, JDT/Debug and JDT/UI, which is a very common combination so I'd be surprised if just these three can create a deadlock. So the Equinox folks may need to know whether you have any non-standard plug-ins that might be involved.
Unfortunately, we don't see where the lock on DefaultClassLoader@33e2ad75 is held. So maybe the stack trace is insufficient for exhaustive analysis.
If it occurs again you might also take more than one stack dump with some time in between.
After all, upgrading to Java7 might avoid this to happen again.
best,
Stephan
[1] http://www.eclipse.org/forums/index.php/f/31/
|
|
|
Powered by
FUDForum. Page generated in 0.08042 seconds