Bug 403239 - Deadlock: locked ResourceServiceProviderDescriptor and InternalInjectorCreator
Summary: Deadlock: locked ResourceServiceProviderDescriptor and InternalInjectorCreator
Status: NEW
Alias: None
Product: TMF
Classification: Modeling
Component: Xtext (show other bugs)
Version: 2.3.1   Edit
Hardware: PC Windows 7
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Project Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-03-13 13:12 EDT by Stephan Herrmann CLA
Modified: 2013-03-13 13:12 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Stephan Herrmann CLA 2013-03-13 13:12:43 EDT
I happened to run Eclipse in the debugger when this deadlock occurred.
The only custom code that I could find in the involved stacks is from
Jan's GraphView. From briefly looking around I had the impression
that "Worker-2" was trying to analyse a resource foo.gvstyle,
while "main" was initializing a graph view.

Sorry, didn't have more time to collect info.

I do have a few tiny changes in GraphView, but I don't believe these
are involved in the stack, just mentioning in case line numbers don't match,
feel free to ask if you suspect anything there.

Here're the deadly embracing threads:

Thread [main] (Suspended)	
	owns: XbaseResource  (id=161)	
	owns: Class<T> (com.google.inject.internal.InternalInjectorCreator) (id=162)	
	waiting for: ResourceServiceProviderDescriptor  (id=160)	
	ResourceServiceProviderDescriptor.get() line: 38	
	ResourceServiceProviderDescriptor.get() line: 1	
	ResourceServiceProviderRegistryImpl$InternalData.getServiceProvider(URI, String) line: 40	
	ResourceServiceProviderRegistryImpl.getResourceServiceProvider(URI, String) line: 75	
	ResourceServiceProviderRegistryImpl.getResourceServiceProvider(URI) line: 91	
	UriValidator.isValid(URI, IStorage) line: 27	
	Storage2UriMapperJavaImpl(Storage2UriMapperImpl).isValidUri(URI, IStorage) line: 97	
	Storage2UriMapperJavaImpl(Storage2UriMapperImpl).getUri(IStorage) line: 81	
	JavaProjectsStateHelper(AbstractStorage2UriMapperClient).getUri(IStorage) line: 27	
	JavaProjectsStateHelper$2.visit(IResource) line: 107	
	Resource$2.visit(IResourceProxy) line: 126	
	Resource$1.visitElement(ElementTree, IPathRequestor, Object) line: 85	
	ElementTreeIterator.doIteration(DataTreeNode, IElementContentVisitor) line: 82	
	ElementTreeIterator.doIteration(DataTreeNode, IElementContentVisitor) line: 86	
	ElementTreeIterator.iterate(IElementContentVisitor) line: 127	
	Folder(Resource).accept(IResourceProxyVisitor, int, int) line: 95	
	Folder(Resource).accept(IResourceProxyVisitor, int) line: 52	
	Folder(Resource).accept(IResourceVisitor, int, int) line: 124	
	Folder(Resource).accept(IResourceVisitor) line: 108	
	JavaProjectsStateHelper.initContainedURIs(String) line: 104	
	JavaProjectsState.doInitContainedURIs(String) line: 32	
	JavaProjectsState(AbstractAllContainersState).initContainedURIs(String, Collection<URI>) line: 147	
	JavaProjectsState(AbstractAllContainersState).isEmpty(String) line: 143	
	ContainerState.isEmpty() line: 32	
	StateBasedContainer.isEmpty() line: 72	
	StateBasedContainerManager.getVisibleContainers(List<String>, IResourceDescriptions) line: 88	
	StateBasedContainerManager.getVisibleContainers(IResourceDescription, IResourceDescriptions) line: 55	
	TypesAwareDefaultGlobalScopeProvider(DefaultGlobalScopeProvider).getVisibleContainers(Resource) line: 72	
	TypesAwareDefaultGlobalScopeProvider(DefaultGlobalScopeProvider).getScope(IScope, Resource, boolean, EClass, Predicate<IEObjectDescription>) line: 49	
	TypesAwareDefaultGlobalScopeProvider(DefaultGlobalScopeProvider).getScope(Resource, boolean, EClass, Predicate<IEObjectDescription>) line: 61	
	TypesAwareDefaultGlobalScopeProvider(AbstractGlobalScopeProvider).getScope(Resource, EReference, Predicate<IEObjectDescription>) line: 48	
	TypesAwareDefaultGlobalScopeProvider.getScope(Resource, EReference, Predicate<IEObjectDescription>) line: 41	
	XbaseImportedNamespaceScopeProvider(AbstractGlobalScopeDelegatingScopeProvider).getGlobalScope(Resource, EReference, Predicate<IEObjectDescription>) line: 46	
	XbaseImportedNamespaceScopeProvider(AbstractGlobalScopeDelegatingScopeProvider).getGlobalScope(Resource, EReference) line: 42	
	XbaseImportedNamespaceScopeProvider(ImportedNamespaceAwareLocalScopeProvider).getResourceScope(Resource, EReference) line: 96	
	XbaseImportedNamespaceScopeProvider(ImportedNamespaceAwareLocalScopeProvider).getScope(EObject, EReference) line: 89	
	GraphViewStyleScopeProvider(XtypeScopeProvider).getScope(EObject, EReference) line: 33	
	GraphViewStyleScopeProvider(XbaseScopeProvider).getScope(EObject, EReference) line: 187	
	XbaseLinkingScopeProvider.getScope(EObject, EReference) line: 42	
	DefaultLinkingService.getScope(EObject, EReference) line: 59	
	DefaultLinkingService.getLinkedObjects(EObject, EReference, INode) line: 119	
	XbaseResource(LazyLinkingResource).getEObject(String) line: 179	
	XbaseResource.access$0(XbaseResource, String) line: 1	
	XbaseResource$2.exec(XbaseResource) line: 239	
	XbaseResource$2.exec(Object) line: 1	
	OnChangeEvictingCache.execWithoutCacheClear(Param, IUnitOfWork<Result,Param>) line: 124	
	XbaseResource.getEObject(String) line: 237	
	XtextResourceSet(ResourceSetImpl).getEObject(URI, boolean) line: 223	
	EcoreUtil.resolve(EObject, ResourceSet) line: 197	
	EcoreUtil.resolve(EObject, EObject) line: 257	
	StyleSheetImpl(BasicEObjectImpl).eResolveProxy(InternalEObject) line: 1473	
	StyleSheetImpl.getDiagramMapping() line: 164	
	StyleSheetImpl.eGet(int, boolean, boolean) line: 244	
	StyleSheetImpl(BasicEObjectImpl).eGet(EStructuralFeature, boolean, boolean) line: 1011	
	StyleSheetImpl(BasicEObjectImpl).eGet(EStructuralFeature, boolean) line: 1003	
	ECrossReferenceEList$ResolvingFeatureIteratorImpl<E>(EContentsEList$FeatureIteratorImpl<E>).hasNext() line: 403	
	EcoreUtil.resolveCrossReferences(EObject) line: 302	
	EcoreUtil.resolveAll(EObject) line: 292	
	DefaultDiagramConfigurationProvider.loadDefaultsIfNecessary() line: 137	
	DefaultDiagramConfigurationProvider.getStyleSheet() line: 129	
	StyleProvider.loadStyles(IDiagramConfigurationProvider) line: 45	
	StyleProvider.setGraphViewDefinitionProvider(IDiagramConfigurationProvider) line: 40	
	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 57	
	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43	
	Method.invoke(Object, Object...) line: 601	
	SingleMethodInjector$1.invoke(Object, Object...) line: 71	
	SingleMethodInjector.inject(Errors, InternalContext, Object) line: 90	
	MembersInjectorImpl<T>.injectMembers(T, Errors, InternalContext, boolean) line: 110	
	ConstructorInjector<T>.construct(Errors, InternalContext, Class<?>, boolean) line: 94	
	ConstructorBindingImpl$Factory<T>.get(Errors, InternalContext, Dependency<?>, boolean) line: 254	
	ProviderToInternalFactoryAdapter$1.call(InternalContext) line: 46	
	InjectorImpl.callInContext(ContextualCallable<T>) line: 1031	
	ProviderToInternalFactoryAdapter<T>.get() line: 40	
	Scopes$1$1.get() line: 65	
	InternalFactoryToProviderAdapter<T>.get(Errors, InternalContext, Dependency<?>, boolean) line: 40	
	SingleFieldInjector.inject(Errors, InternalContext, Object) line: 53	
	MembersInjectorImpl<T>.injectMembers(T, Errors, InternalContext, boolean) line: 110	
	ConstructorInjector<T>.construct(Errors, InternalContext, Class<?>, boolean) line: 94	
	ConstructorBindingImpl$Factory<T>.get(Errors, InternalContext, Dependency<?>, boolean) line: 254	
	SingleFieldInjector.inject(Errors, InternalContext, Object) line: 53	
	MembersInjectorImpl<T>.injectMembers(T, Errors, InternalContext, boolean) line: 110	
	ConstructorInjector<T>.construct(Errors, InternalContext, Class<?>, boolean) line: 94	
	ConstructorBindingImpl$Factory<T>.get(Errors, InternalContext, Dependency<?>, boolean) line: 254	
	InjectorImpl$4$1.call(InternalContext) line: 978	
	InjectorImpl.callInContext(ContextualCallable<T>) line: 1024	
	InjectorImpl$4.get() line: 974	
	GraphViewEditPartFactory$1.caseDiagramInstance(DiagramInstance) line: 53	
	GraphViewEditPartFactory$1.caseDiagramInstance(DiagramInstance) line: 1	
	GraphViewEditPartFactory$1(InstancemodelSwitch<T>).doSwitch(int, EObject) line: 103	
	GraphViewEditPartFactory$1(InstancemodelSwitch<T>).doSwitch(EClass, EObject) line: 75	
	GraphViewEditPartFactory$1(InstancemodelSwitch<T>).doSwitch(EObject) line: 63	
	GraphViewEditPartFactory.createEditPart(EditPart, Object) line: 67	
	GestureGraphicalViewer(AbstractEditPartViewer).setContents(Object) line: 626	
	GraphView.setViewerContents(Object, ClassLoader, boolean) line: 225	
	XtextEditorSelectionStrategy$1.exec(XtextResource) line: 60	
	XtextEditorSelectionStrategy$1.exec(Object) line: 1	
	XtextDocument$XtextDocumentLocker(AbstractReadWriteAcces<P>).readOnly(IUnitOfWork<T,P>) line: 32	
	XtextDocument.readOnly(IUnitOfWork<T,XtextResource>) line: 78	
	XtextEditorSelectionStrategy.editorSelectionChanged(ISelection, boolean) line: 56	
	ElementSelectionConverter.selectionChanged(IWorkbenchPart, ISelection) line: 84	
	SelectionService.notifyPostSelectionListeners(String, IWorkbenchPart, ISelection) line: 173	
	SelectionService.updateSelection(IWorkbenchPart) line: 120	
	WorkbenchPage$E4PartListener.partActivated(MPart) line: 170	
	PartServiceImpl$2.run() line: 193	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartServiceImpl.firePartActivated(MPart) line: 191	
	PartServiceImpl.activate(MPart, boolean, boolean) line: 596	
	PartServiceImpl.switchPerspective(MPerspective) line: 515	
	PerspectiveStackRenderer.showTab(MUIElement) line: 124	
	PerspectiveStackRenderer(LazyStackRenderer).postProcess(MUIElement) line: 98	
	PerspectiveStackRenderer.postProcess(MUIElement) line: 77	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 645	
	PartRenderingEngine.safeCreateGui(MUIElement) line: 731	
	PartRenderingEngine.access$2(PartRenderingEngine, MUIElement) line: 702	
	PartRenderingEngine$7.run() line: 696	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement) line: 681	
	SashRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 59	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 641	
	PartRenderingEngine.safeCreateGui(MUIElement) line: 731	
	PartRenderingEngine.access$2(PartRenderingEngine, MUIElement) line: 702	
	PartRenderingEngine$7.run() line: 696	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement) line: 681	
	WBWRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 59	
	WBWRenderer.processContents(MElementContainer<MUIElement>) line: 644	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 641	
	PartRenderingEngine.safeCreateGui(MUIElement) line: 731	
	PartRenderingEngine.access$2(PartRenderingEngine, MUIElement) line: 702	
	PartRenderingEngine$7.run() line: 696	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement) line: 681	
	PartRenderingEngine$9.run() line: 987	
	Realm.runWithDefault(Realm, Runnable) line: 332	
	PartRenderingEngine.run(MApplicationElement, IEclipseContext) line: 942	
	E4Workbench.createAndRunUI(MApplicationElement) line: 86	
	Workbench$5.run() line: 588	
	Realm.runWithDefault(Realm, Runnable) line: 332	
	Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 543	
	PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 149	
	IDEApplication.start(IApplicationContext) line: 124	
	EclipseAppHandle.run(Object) line: 196	
	EclipseAppLauncher.runApplication(Object) line: 110	
	EclipseAppLauncher.start(Object) line: 79	
	EclipseStarter.run(Object) line: 353	
	EclipseStarter.run(String[], Runnable) line: 180	
	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 57	
	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43	
	Method.invoke(Object, Object...) line: 601	
	Main.invokeFramework(String[], URL[]) line: 629	
	Main.basicRun(String[]) line: 584	
	Main.run(String[]) line: 1438	
	Main.main(String[]) line: 1414	

    
    Thread [Worker-2] (Suspended)	
	owns: ResourceServiceProviderDescriptor  (id=160)	
	waiting for: Class<T> (com.google.inject.internal.InternalInjectorCreator) (id=162)	
	Scopes$1$1.get() line: 63	
	InternalFactoryToProviderAdapter<T>.get(Errors, InternalContext, Dependency<?>, boolean) line: 40	
	SingleFieldInjector.inject(Errors, InternalContext, Object) line: 53	
	MembersInjectorImpl<T>.injectMembers(T, Errors, InternalContext, boolean) line: 110	
	ConstructorInjector<T>.construct(Errors, InternalContext, Class<?>, boolean) line: 94	
	ConstructorBindingImpl$Factory<T>.get(Errors, InternalContext, Dependency<?>, boolean) line: 254	
	InjectorImpl$3.get(Errors, InternalContext, Dependency<?>, boolean) line: 737	
	SingleFieldInjector.inject(Errors, InternalContext, Object) line: 53	
	MembersInjectorImpl<T>.injectMembers(T, Errors, InternalContext, boolean) line: 110	
	ConstructorInjector<T>.construct(Errors, InternalContext, Class<?>, boolean) line: 94	
	ConstructorBindingImpl$Factory<T>.get(Errors, InternalContext, Dependency<?>, boolean) line: 254	
	InjectorImpl$3.get(Errors, InternalContext, Dependency<?>, boolean) line: 737	
	SingleParameterInjector<T>.inject(Errors, InternalContext) line: 38	
	SingleParameterInjector<T>.getAll(Errors, InternalContext, SingleParameterInjector<?>[]) line: 62	
	ConstructorInjector<T>.construct(Errors, InternalContext, Class<?>, boolean) line: 84	
	ConstructorBindingImpl$Factory<T>.get(Errors, InternalContext, Dependency<?>, boolean) line: 254	
	InjectorImpl$3.get(Errors, InternalContext, Dependency<?>, boolean) line: 737	
	InjectorImpl$4$1.call(InternalContext) line: 978	
	InjectorImpl.callInContext(ContextualCallable<T>) line: 1024	
	InjectorImpl$4.get() line: 974	
	InjectorImpl.getInstance(Class<T>) line: 1013	
	GraphViewStyleExecutableExtensionFactory(AbstractGuiceAwareExecutableExtensionFactory).create() line: 50	
	ConfigurationElement.createExecutableExtension(String) line: 262	
	ConfigurationElementHandle.createExecutableExtension(String) line: 55	
	ResourceServiceProviderDescriptor.get() line: 40	
	ResourceServiceProviderDescriptor.get() line: 1	
	ResourceServiceProviderRegistryImpl$InternalData.getServiceProvider(URI, String) line: 40	
	ResourceServiceProviderRegistryImpl.getResourceServiceProvider(URI, String) line: 75	
	ResourceServiceProviderRegistryImpl.getResourceServiceProvider(URI) line: 91	
	UriValidator.isValid(URI, IStorage) line: 27	
	Storage2UriMapperJavaImpl(Storage2UriMapperImpl).isValidUri(URI, IStorage) line: 97	
	Storage2UriMapperJavaImpl(Storage2UriMapperImpl).getUri(IStorage) line: 81	
	JdtToBeBuiltComputer(ToBeBuiltComputer).getUri(IStorage) line: 154	
	JdtToBeBuiltComputer(ToBeBuiltComputer).updateStorage(IProgressMonitor, ToBeBuilt, IStorage) line: 121	
	ToBeBuiltComputer$2.visit(IResource) line: 107	
	Resource$2.visit(IResourceProxy) line: 126	
	Resource$1.visitElement(ElementTree, IPathRequestor, Object) line: 85	
	ElementTreeIterator.doIteration(DataTreeNode, IElementContentVisitor) line: 82	
	ElementTreeIterator.doIteration(DataTreeNode, IElementContentVisitor) line: 86	
	ElementTreeIterator.doIteration(DataTreeNode, IElementContentVisitor) line: 86	
	ElementTreeIterator.iterate(IElementContentVisitor) line: 127	
	Project(Resource).accept(IResourceProxyVisitor, int, int) line: 95	
	Project(Resource).accept(IResourceProxyVisitor, int) line: 52	
	Project(Resource).accept(IResourceVisitor, int, int) line: 124	
	Project(Resource).accept(IResourceVisitor) line: 108	
	JdtToBeBuiltComputer(ToBeBuiltComputer).updateProject(IProject, IProgressMonitor) line: 102	
	JdtToBeBuiltComputer.updateProject(IProject, IProgressMonitor) line: 84	
	XtextBuilder.fullBuild(IProgressMonitor, boolean) line: 187	
	XtextBuilder.build(int, Map, IProgressMonitor) line: 85	
	BuildManager$2.run() line: 726	
	SafeRunner.run(ISafeRunnable) line: 42	
	BuildManager.basicBuild(int, IncrementalProjectBuilder, Map<String,String>, MultiStatus, IProgressMonitor) line: 199	
	BuildManager.basicBuild(IBuildConfiguration, int, String, Map<String,String>, IProgressMonitor) line: 321	
	BuildManager.build(IBuildConfiguration, int, String, Map<String,String>, IProgressMonitor) line: 396	
	Project$1.run(IProgressMonitor) line: 618	
	Workspace.run(IWorkspaceRunnable, ISchedulingRule, int, IProgressMonitor) line: 2344	
	Project.internalBuild(IBuildConfiguration, int, String, Map<String,String>, IProgressMonitor) line: 597	
	Project.build(int, String, Map<String,String>, IProgressMonitor) line: 124	
	BuildScheduler$BuildJob.run(IProgressMonitor) line: 178	
	Worker.run() line: 53