Community
Participate
Working Groups
Build Identifier: M20100909-0800 My Eclipse Helios SR1 environment is suddenly hanging very often. With VisualVM (https://visualvm.dev.java.net/), I found a deadlock in OSGI's default classloader. I work extensively with two Eclipse modeling technologies: QVTO and MoDisco. These technologies, like many others, make extensive use of Eclipse extension points and other mechanisms to load customizations and resources as needed. Most of the time, this is great except when this demand-loading behavior exposes subtle race conditions like this one: Found one Java-level deadlock: ============================= "org.eclipse.m2m.internal.qvt.oml.editor.ui.QvtReconciler": waiting to lock monitor 1012a72c8 (object 124620558, a org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader), which is held by "main" "main": waiting to lock monitor 10116cb80 (object 11c9cd448, a org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader), which is held by "org.eclipse.m2m.internal.qvt.oml.editor.ui.QvtReconciler" Java stack information for the threads listed above: =================================================== "org.eclipse.m2m.internal.qvt.oml.editor.ui.QvtReconciler": at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:468) - waiting to lock <124620558> (a org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:449) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216) at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393) at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:469) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410) at org.eclipse.osgi.internal.loader.buddy.DependentPolicy.loadClass(DependentPolicy.java:54) at org.eclipse.osgi.internal.loader.buddy.PolicyHandler.doBuddyClassLoading(PolicyHandler.java:135) at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:494) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at org.eclipse.emf.ecore.impl.EClassifierImpl.getClassForName(EClassifierImpl.java:433) at org.eclipse.emf.ecore.impl.EClassifierImpl.getInstanceClass(EClassifierImpl.java:413) at org.eclipse.ocl.ecore.internal.UMLReflectionImpl.getOCLTypeFor(UMLReflectionImpl.java:559) at org.eclipse.ocl.ecore.internal.UMLReflectionImpl.getOCLType(UMLReflectionImpl.java:604) at org.eclipse.ocl.ecore.internal.UMLReflectionImpl.getOCLType(UMLReflectionImpl.java:153) at org.eclipse.ocl.ecore.internal.UMLReflectionImpl.getOCLType(UMLReflectionImpl.java:1) at org.eclipse.m2m.internal.qvt.oml.stdlib.QVTUMLReflection.getOCLType(QVTUMLReflection.java:265) at org.eclipse.m2m.internal.qvt.oml.stdlib.QVTUMLReflection.getOCLType(QVTUMLReflection.java:1) at org.eclipse.ocl.AbstractTypeChecker.getRelationship(AbstractTypeChecker.java:152) at org.eclipse.m2m.internal.qvt.oml.ast.env.TypeCheckerImpl.getRelationship(TypeCheckerImpl.java:298) at org.eclipse.m2m.internal.qvt.oml.ast.env.TypeCheckerImpl.getRelationship(TypeCheckerImpl.java:1) at org.eclipse.ocl.AbstractTypeChecker.exactTypeMatch(AbstractTypeChecker.java:658) at org.eclipse.ocl.util.TypeUtil.exactTypeMatch(TypeUtil.java:418) at org.eclipse.m2m.internal.qvt.oml.ast.env.QvtTypeResolverImpl.extractContextualOperations(QvtTypeResolverImpl.java:170) at org.eclipse.m2m.internal.qvt.oml.ast.env.QvtTypeResolverImpl.getLocalAdditionalOperations(QvtTypeResolverImpl.java:203) at org.eclipse.m2m.internal.qvt.oml.ast.env.QvtTypeResolverImpl.getAdditionalOperations(QvtTypeResolverImpl.java:149) at org.eclipse.m2m.internal.qvt.oml.ast.env.QvtTypeResolverImpl.getAdditionalOperations(QvtTypeResolverImpl.java:1) at org.eclipse.ocl.AbstractEnvironment.getAdditionalOperations(AbstractEnvironment.java:476) at org.eclipse.m2m.internal.qvt.oml.ast.env.QvtEnvironmentBase.getAdditionalOperations(QvtEnvironmentBase.java:336) at org.eclipse.m2m.internal.qvt.oml.ast.env.QvtEnvironmentBase.getAdditionalOperations(QvtEnvironmentBase.java:1) at org.eclipse.ocl.AbstractEnvironment.getAdditionalOperations(AbstractEnvironment.java:470) at org.eclipse.m2m.internal.qvt.oml.ast.env.QvtEnvironmentBase.getAdditionalOperations(QvtEnvironmentBase.java:336) at org.eclipse.m2m.internal.qvt.oml.ast.env.QvtEnvironmentBase.getAdditionalOperations(QvtEnvironmentBase.java:1) at org.eclipse.ocl.AbstractEnvironment.getAdditionalOperations(AbstractEnvironment.java:470) at org.eclipse.m2m.internal.qvt.oml.ast.env.QvtEnvironmentBase.getAdditionalOperations(QvtEnvironmentBase.java:336) at org.eclipse.m2m.internal.qvt.oml.ast.env.QvtEnvironmentBase.getAdditionalOperations(QvtEnvironmentBase.java:1) at org.eclipse.ocl.AbstractTypeChecker.getOperations(AbstractTypeChecker.java:740) at org.eclipse.m2m.internal.qvt.oml.ast.env.TypeCheckerImpl.findMostSpecificOperationMatching(TypeCheckerImpl.java:77) at org.eclipse.m2m.internal.qvt.oml.ast.env.QvtOperationalEnv.doLookupOperation(QvtOperationalEnv.java:236) at org.eclipse.m2m.internal.qvt.oml.ast.env.QvtOperationalEnv.tryLookupOperation(QvtOperationalEnv.java:215) at org.eclipse.m2m.internal.qvt.oml.ast.env.QvtOperationalEnv.tryLookupOperation(QvtOperationalEnv.java:1) at org.eclipse.m2m.internal.qvt.oml.ast.parser.QvtOperationalVisitorCS.lookupOperation(QvtOperationalVisitorCS.java:416) at org.eclipse.m2m.internal.qvt.oml.ast.parser.QvtOperationalVisitorCS.genOperationCallExp(QvtOperationalVisitorCS.java:1085) at org.eclipse.m2m.internal.qvt.oml.ast.parser.QvtOperationalVisitorCS.genOperationCallExp(QvtOperationalVisitorCS.java:1) at org.eclipse.ocl.parser.AbstractOCLAnalyzer.operationCallExpCS(AbstractOCLAnalyzer.java:4030) at org.eclipse.m2m.internal.qvt.oml.ast.parser.QvtOperationalVisitorCS.operationCallExpCS(QvtOperationalVisitorCS.java:1021) at org.eclipse.ocl.parser.AbstractOCLAnalyzer.modelPropertyCallExpCS(AbstractOCLAnalyzer.java:3809) at org.eclipse.ocl.parser.AbstractOCLAnalyzer.propertyCallExpCS(AbstractOCLAnalyzer.java:3427) at org.eclipse.m2m.internal.qvt.oml.ast.parser.QvtOperationalVisitorCS.propertyCallExpCS(QvtOperationalVisitorCS.java:931) at org.eclipse.ocl.parser.AbstractOCLAnalyzer.oclExpressionCS(AbstractOCLAnalyzer.java:1958) at org.eclipse.m2m.internal.qvt.oml.ast.parser.QvtOperationalVisitorCS.oclExpressionCS(QvtOperationalVisitorCS.java:712) at org.eclipse.m2m.internal.qvt.oml.ast.parser.QvtOperationalVisitorCS.visitOclExpressionCS(QvtOperationalVisitorCS.java:1293) at org.eclipse.m2m.internal.qvt.oml.ast.parser.QvtOperationalVisitorCS.visitAssignStatementCS(QvtOperationalVisitorCS.java:3450) at org.eclipse.m2m.internal.qvt.oml.ast.parser.QvtOperationalVisitorCS.oclExpressionCS(QvtOperationalVisitorCS.java:652) at org.eclipse.m2m.internal.qvt.oml.ast.parser.QvtOperationalVisitorCS.oclExpressionCS(QvtOperationalVisitorCS.java:1) at org.eclipse.ocl.parser.AbstractOCLAnalyzer.ifExpCS(AbstractOCLAnalyzer.java:2193) at org.eclipse.m2m.internal.qvt.oml.ast.parser.QvtOperationalVisitorCS.ifExpCS(QvtOperationalVisitorCS.java:615) at org.eclipse.ocl.parser.AbstractOCLAnalyzer.oclExpressionCS(AbstractOCLAnalyzer.java:1956) at org.eclipse.m2m.internal.qvt.oml.ast.parser.QvtOperationalVisitorCS.oclExpressionCS(QvtOperationalVisitorCS.java:712) at org.eclipse.m2m.internal.qvt.oml.ast.parser.QvtOperationalVisitorCS.visitOclExpressionCS(QvtOperationalVisitorCS.java:1293) at org.eclipse.m2m.internal.qvt.oml.ast.parser.QvtOperationalVisitorCS.visitObjectExpCS(QvtOperationalVisitorCS.java:1665) at org.eclipse.m2m.internal.qvt.oml.ast.parser.QvtOperationalVisitorCS.visitMappingBodyCS(QvtOperationalVisitorCS.java:3717) at org.eclipse.m2m.internal.qvt.oml.ast.parser.QvtOperationalVisitorCS.visitMappingRuleCS(QvtOperationalVisitorCS.java:3065) at org.eclipse.m2m.internal.qvt.oml.ast.parser.QvtOperationalVisitorCS.visitMappingMethodCS(QvtOperationalVisitorCS.java:2943) at org.eclipse.m2m.internal.qvt.oml.ast.parser.QvtOperationalVisitorCS.visitMappingModule(QvtOperationalVisitorCS.java:1789) at org.eclipse.m2m.internal.qvt.oml.compiler.QVTOCompiler.analyze(QVTOCompiler.java:328) at org.eclipse.m2m.internal.qvt.oml.compiler.QVTOCompiler.doCompile(QVTOCompiler.java:492) at org.eclipse.m2m.internal.qvt.oml.compiler.QVTOCompiler.compileSingleFile(QVTOCompiler.java:373) at org.eclipse.m2m.internal.qvt.oml.compiler.QVTOCompiler.compile(QVTOCompiler.java:259) at org.eclipse.m2m.internal.qvt.oml.editor.ui.QvtCompilerFacade.compile(QvtCompilerFacade.java:76) at org.eclipse.m2m.internal.qvt.oml.editor.ui.QvtReconcilingStrategy.getCompiler(QvtReconcilingStrategy.java:88) at org.eclipse.m2m.internal.qvt.oml.editor.ui.QvtReconcilingStrategy.reconcileInternal(QvtReconcilingStrategy.java:72) at org.eclipse.m2m.internal.qvt.oml.editor.ui.QvtReconcilingStrategy.initialReconcile(QvtReconcilingStrategy.java:60) at org.eclipse.jface.text.reconciler.MonoReconciler.initialProcess(MonoReconciler.java:105) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:173) "main": at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:468) - waiting to lock <11c9cd448> (a org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:449) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216) at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393) at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:33) at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:466) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) at org.eclipse.gmt.modisco.java.actions.DefaultDiscoverer.<clinit>(DefaultDiscoverer.java:75) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.Class.newInstance0(Class.java:355) at java.lang.Class.newInstance(Class.java:308) at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:184) at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:904) at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243) at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55) at org.eclipse.gmt.modisco.infra.discoverymanager.DiscoveryManager.getDiscovererHandlers(DiscoveryManager.java:129) at org.eclipse.gmt.modisco.infra.discoverymanager.ui.actions.ContributionItemForMoDiscoMenu.fill(ContributionItemForMoDiscoMenu.java:79) at org.eclipse.ui.internal.menus.DynamicMenuContributionItem.fill(DynamicMenuContributionItem.java:125) at org.eclipse.jface.action.MenuManager.doItemFill(MenuManager.java:737) at org.eclipse.jface.action.MenuManager.update(MenuManager.java:818) at org.eclipse.jface.action.MenuManager.handleAboutToShow(MenuManager.java:470) at org.eclipse.jface.action.MenuManager.access$1(MenuManager.java:465) at org.eclipse.jface.action.MenuManager$2.menuShown(MenuManager.java:491) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:241) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3776) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1367) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1390) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1371) at org.eclipse.swt.widgets.Menu.menuWillOpen(Menu.java:689) at org.eclipse.swt.widgets.Display.windowProc(Display.java:5030) at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method) at org.eclipse.swt.internal.cocoa.NSMenu.popUpContextMenu(NSMenu.java:68) at org.eclipse.swt.widgets.Menu._setVisible(Menu.java:235) at org.eclipse.swt.widgets.Display.runPopups(Display.java:3699) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3270) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574) at org.eclipse.equinox.launcher.Main.run(Main.java:1407) Reproducible: Sometimes Steps to Reproduce: THis problem has been happening consistently all day today; it's preventing me to complete work for next week's OMG meetings in Santa Clara so it is critical for me. Unfortunately, I don't know how to replicate this bug outside my environment. Fortunately, the stack trace from VisualVM clearly suggests that the OSGI default class loader may need a synchronization wrapper to avoid deadlocks when it is invoked from different threads.
This problem is similar to other classloader deadlock bugs: 300596, 229621, 212262, 227587, 121737. I tried suggestions in the runtime options doc: http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html First, I added the following to my eclipse.ini: -Dosgi.classloader.singleThreadLoads=true -Dosgi.classloader.lock=classname This is really not a good strategy, there are just too many demands on the class loader from different threads that it leads to Eclipse hanging during startup: eclipse.buildId=M20100909-0800 java.version=1.6.0_22 java.vendor=Apple Inc. BootLoader constants: OS=macosx, ARCH=x86_64, WS=cocoa, NL=en_US For the time being, QVTO and MoDisco seem to be running much more smoothly with this option: -Dosgi.classloader.lock=classname I think this bug can be closed as resolved (with the runtime options doc). *** This bug has been marked as a duplicate of bug 300596 ***
Eclipse is hung again -- here are the two threads involved: "Worker-8" prio=5 tid=113b8f800 nid=0x18effa000 in Object.wait() [18eff6000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <11e5ea0d8> (a java.util.HashMap) at java.lang.Object.wait(Object.java:485) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.lockClassName(ClasspathManager.java:510) - locked <11e5ea0d8> (a java.util.HashMap) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassName(ClasspathManager.java:458) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:447) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216) at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393) at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:469) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) at org.eclipse.xtext.parsetree.reconstr.impl.DefaultHiddenTokenHelper.setGrammar(DefaultHiddenTokenHelper.java:49) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.google.inject.SingleMethodInjector$2.invoke(SingleMethodInjector.java:72) at com.google.inject.SingleMethodInjector.inject(SingleMethodInjector.java:91) at com.google.inject.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:99) at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:94) at com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111) at com.google.inject.InjectorImpl$3.get(InjectorImpl.java:549) at com.google.inject.SingleFieldInjector.inject(SingleFieldInjector.java:56) at com.google.inject.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:99) at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:94) at com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111) at com.google.inject.SingleFieldInjector.inject(SingleFieldInjector.java:56) at com.google.inject.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:99) at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:94) at com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111) at com.google.inject.InjectorImpl$3.get(InjectorImpl.java:549) at com.google.inject.SingleFieldInjector.inject(SingleFieldInjector.java:56) at com.google.inject.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:99) at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:94) at com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111) at com.google.inject.FactoryProxy.get(FactoryProxy.java:56) at com.google.inject.SingleParameterInjector.inject(SingleParameterInjector.java:42) at com.google.inject.SingleParameterInjector.getAll(SingleParameterInjector.java:66) at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:84) at com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111) at com.google.inject.SingleFieldInjector.inject(SingleFieldInjector.java:56) at com.google.inject.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:99) at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:94) at com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111) at com.google.inject.FactoryProxy.get(FactoryProxy.java:56) at com.google.inject.InjectorImpl$4$1.call(InjectorImpl.java:758) at com.google.inject.InjectorImpl.callInContext(InjectorImpl.java:804) at com.google.inject.InjectorImpl$4.get(InjectorImpl.java:754) at org.eclipse.xtext.resource.XtextResourceFactory.createResource(XtextResourceFactory.java:19) at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.createResource(ResourceSetImpl.java:425) at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandCreateResource(ResourceSetImpl.java:239) at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource(ResourceSetImpl.java:391) at org.eclipse.xtext.builder.builderState.ResourceDescriptionsUpdater.update(ResourceDescriptionsUpdater.java:139) at org.eclipse.xtext.builder.builderState.ResourceDescriptionsUpdater.transitiveUpdate(ResourceDescriptionsUpdater.java:82) at org.eclipse.xtext.builder.builderState.AbstractBuilderState.transitiveUpdate(AbstractBuilderState.java:158) at org.eclipse.xtext.builder.builderState.PersistableResourceDescriptionsImpl.doUpdate(PersistableResourceDescriptionsImpl.java:48) at org.eclipse.xtext.builder.builderState.PersistableResourceDescriptionsImpl.doUpdate(PersistableResourceDescriptionsImpl.java:1) at org.eclipse.xtext.builder.builderState.AbstractBuilderState.update(AbstractBuilderState.java:108) - locked <11e8b8448> (a org.eclipse.xtext.builder.builderState.PersistableResourceDescriptionsImpl) at org.eclipse.xtext.builder.impl.XtextBuilder.doBuild(XtextBuilder.java:151) at org.eclipse.xtext.builder.impl.XtextBuilder.fullBuild(XtextBuilder.java:180) at org.eclipse.xtext.builder.impl.XtextBuilder.build(XtextBuilder.java:78) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:282) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:363) at org.eclipse.core.internal.resources.Project$1.run(Project.java:545) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975) at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:524) at org.eclipse.core.internal.resources.Project.build(Project.java:123) at org.eclipse.xtext.builder.impl.BuildScheduler$BuildJob.run(BuildScheduler.java:100) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) Locked ownable synchronizers: - None "main" prio=6 tid=114801000 nid=0x7fff7057ec20 waiting for monitor entry [7fff5fbf9000] java.lang.Thread.State: BLOCKED (on object monitor) at java.lang.ClassLoader.checkCerts(ClassLoader.java:783) - waiting to lock <11e5e9ec8> (a org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader) at java.lang.ClassLoader.preDefineClass(ClassLoader.java:488) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:626) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:188) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:580) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:550) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:481) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassName(ClasspathManager.java:460) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:447) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216) at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393) at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:33) at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:466) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) at org.eclipse.xtext.ui.editor.templates.XtextTemplateContextTypeRegistry.registerContextTypes(XtextTemplateContextTypeRegistry.java:42) at org.eclipse.xtext.ui.editor.templates.XtextTemplateContextTypeRegistry.<init>(XtextTemplateContextTypeRegistry.java:38) at $org.eclipse.xtext.ui.editor.templates.XtextTemplateContextTypeRegistry$$FastClassByGuice$$3a543b9d.newInstance(<generated>) at com.google.inject.internal.cglib.reflect.FastConstructor.newInstance(FastConstructor.java:40) at com.google.inject.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:60) at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:85) at com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111) at com.google.inject.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:45) at com.google.inject.InjectorImpl.callInContext(InjectorImpl.java:811) at com.google.inject.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:42) at com.google.inject.Scopes$1$1.get(Scopes.java:54) - locked <167012f58> (a java.lang.Class for com.google.inject.InjectorImpl) at com.google.inject.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:48) at com.google.inject.FactoryProxy.get(FactoryProxy.java:56) at com.google.inject.SingleParameterInjector.inject(SingleParameterInjector.java:42) at com.google.inject.SingleParameterInjector.getAll(SingleParameterInjector.java:66) at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:84) at com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111) at com.google.inject.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:45) at com.google.inject.InjectorImpl.callInContext(InjectorImpl.java:811) at com.google.inject.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:42) at com.google.inject.Scopes$1$1.get(Scopes.java:54) - locked <167012f58> (a java.lang.Class for com.google.inject.InjectorImpl) at com.google.inject.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:48) at com.google.inject.FactoryProxy.get(FactoryProxy.java:56) at com.google.inject.SingleParameterInjector.inject(SingleParameterInjector.java:42) at com.google.inject.SingleParameterInjector.getAll(SingleParameterInjector.java:66) at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:84) at com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111) at com.google.inject.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:45) at com.google.inject.InjectorImpl.callInContext(InjectorImpl.java:811) at com.google.inject.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:42) at com.google.inject.Scopes$1$1.get(Scopes.java:54) - locked <167012f58> (a java.lang.Class for com.google.inject.InjectorImpl) at com.google.inject.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:48) at com.google.inject.FactoryProxy.get(FactoryProxy.java:56) at com.google.inject.SingleFieldInjector.inject(SingleFieldInjector.java:56) at com.google.inject.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:99) at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:94) at com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111) at com.google.inject.FactoryProxy.get(FactoryProxy.java:56) at com.google.inject.SingleFieldInjector.inject(SingleFieldInjector.java:56) at com.google.inject.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:99) at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:94) at com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111) at com.google.inject.FactoryProxy.get(FactoryProxy.java:56) at com.google.inject.SingleFieldInjector.inject(SingleFieldInjector.java:56) at com.google.inject.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:99) at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:94) at com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111) at com.google.inject.SingleFieldInjector.inject(SingleFieldInjector.java:56) at com.google.inject.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:99) at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:94) at com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111) at com.google.inject.InjectorImpl$4$1.call(InjectorImpl.java:758) at com.google.inject.InjectorImpl.callInContext(InjectorImpl.java:804) at com.google.inject.InjectorImpl$4.get(InjectorImpl.java:754) at com.google.inject.InjectorImpl.getInstance(InjectorImpl.java:793) at org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory.create(AbstractGuiceAwareExecutableExtensionFactory.java:50) at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:262) at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55) at org.eclipse.ui.internal.WorkbenchPlugin.createExtension(WorkbenchPlugin.java:259) at org.eclipse.ui.internal.registry.EditorDescriptor.createEditor(EditorDescriptor.java:235) at org.eclipse.ui.internal.EditorManager.createPart(EditorManager.java:845) at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:609) at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:465) at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595) at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:313) at org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:180) at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:270) at org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65) at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:473) at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1254) at org.eclipse.ui.internal.PartStack.handleDeferredEvents(PartStack.java:1222) at org.eclipse.ui.internal.LayoutPart.deferUpdates(LayoutPart.java:400) at org.eclipse.ui.internal.PartSashContainer.handleDeferredEvents(PartSashContainer.java:1409) at org.eclipse.ui.internal.LayoutPart.deferUpdates(LayoutPart.java:400) at org.eclipse.ui.internal.WorkbenchPage.handleDeferredEvents(WorkbenchPage.java:1420) at org.eclipse.ui.internal.WorkbenchPage.deferUpdates(WorkbenchPage.java:1410) at org.eclipse.ui.internal.WorkbenchPage.closeEditors(WorkbenchPage.java:1384) at org.eclipse.ui.internal.WorkbenchPage.closeEditor(WorkbenchPage.java:1439) at org.eclipse.ui.internal.EditorPane.doHide(EditorPane.java:61) at org.eclipse.ui.internal.PartStack.close(PartStack.java:541) at org.eclipse.ui.internal.EditorStack.close(EditorStack.java:206) at org.eclipse.ui.internal.PartStack$1.close(PartStack.java:120) at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation$1.handleEvent(TabbedStackPresentation.java:83) at org.eclipse.ui.internal.presentations.util.AbstractTabFolder.fireEvent(AbstractTabFolder.java:269) at org.eclipse.ui.internal.presentations.util.AbstractTabFolder.fireEvent(AbstractTabFolder.java:278) at org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder.access$1(DefaultTabFolder.java:1) at org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder$1.closeButtonPressed(DefaultTabFolder.java:71) at org.eclipse.ui.internal.presentations.PaneFolder.notifyCloseListeners(PaneFolder.java:631) at org.eclipse.ui.internal.presentations.PaneFolder$3.close(PaneFolder.java:206) at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1595) at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:261) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3776) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1367) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1390) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1375) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1187) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3622) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3277) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574) at org.eclipse.equinox.launcher.Main.run(Main.java:1407) Locked ownable synchronizers: - None Any suggestions for this?
This is a duplicate of bug 212262. Unfortunately the VM lock on the classloader makes using osgi.classloader.lock=classname can cause deadlock on sun based VMs unless you are using Java 7 (I know not available yet). Java 7 allows us to use parallel classloaders that avoid the VM lock on the class loader. The only option is to use the following VM options along with osgi.classloader.lock=classname option. -XX:+UnlockDiagnosticVMOptions -XX:+UnsyncloadClass I'm not sure these options are available on the Mac version of the sun/oracle based VM. *** This bug has been marked as a duplicate of bug 212262 ***