[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.modeling.tmf] Potential for deadlock in DefaultScopeProvider..

Hi guys,

I wanted to mention a deadlock situation that I came across. I'm not sure yet if it's something completely silly that I've done that wouldn't show up in a normal use case, but here are the stacks. The issue seems to be in the case where there are two singleton scope providers, one of which refers to the other. I think I can solve the issue for my usage but I thought I'd point it out for when you are looking at the SimpleCache implementation again -- I see you have a TODO mark there.

cheers,

Miles


Worker-16 [BLOCKED; waiting to lock org.eclipse.xtext.util.SimpleCache@4ebe2938]
org.eclipse.xtext.util.SimpleCache.get(SimpleCache.java)
org.eclipse.xtext.scoping.impl.DefaultScopeProvider.getScope(DefaultScopeProvider.java:79)
org.eclipse.amp.amf.parameters.scoping.AParScopeProvider.getScope(AParScopeProvider.java:65)
org.eclipse.xtext.linking.impl.DefaultLinkingService.getScope(DefaultLinkingService.java:55)
org.eclipse.xtext.linking.impl.DefaultLinkingService.getLinkedObjects(DefaultLinkingService.java:66)
org.eclipse.xtext.linking.impl.Linker.getLinkedObject(Linker.java:145)
org.eclipse.xtext.linking.impl.Linker.ensureIsLinked(Linker.java:102)
org.eclipse.xtext.linking.impl.Linker.ensureLinked(Linker.java:55)
org.eclipse.xtext.linking.impl.Linker.ensureModelLinked(Linker.java:170)
org.eclipse.xtext.linking.impl.Linker.doLinkModel(Linker.java:163)
org.eclipse.xtext.linking.impl.AbstractCleaningLinker.linkModel(AbstractCleaningLinker.java:24)
org.eclipse.xtext.resource.XtextResource.doLinking(XtextResource.java:140)
org.eclipse.xtext.linking.lazy.LazyLinkingResource.doLinking(LazyLinkingResource.java:50)
org.eclipse.xtext.resource.XtextResource.doLoad(XtextResource.java:160)
org.eclipse.xtext.linking.lazy.LazyLinkingResource.doLoad(LazyLinkingResource.java:43)
org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1494)
org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1282)
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:255)
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:270)
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource(ResourceSetImpl.java:397)
org.eclipse.xtext.scoping.impl.ImportUriUtil.getResource(ImportUriUtil.java:54)
org.eclipse.xtext.scoping.impl.DefaultScope$LazyReferencedResourceScope.<init>(DefaultScope.java:58)
org.eclipse.xtext.scoping.impl.DefaultScope.createParent(DefaultScope.java:50)
org.eclipse.xtext.scoping.impl.DefaultScope.<init>(DefaultScope.java:34)
org.eclipse.xtext.scoping.impl.DefaultScope.<init>(DefaultScope.java:30)
org.eclipse.xtext.scoping.impl.DefaultScopeProvider.createScope(DefaultScopeProvider.java:72)
org.eclipse.xtext.scoping.impl.DefaultScopeProvider$2.apply(DefaultScopeProvider.java:67)
org.eclipse.xtext.scoping.impl.DefaultScopeProvider$2.apply(DefaultScopeProvider.java:1)
org.eclipse.xtext.util.SimpleCache.get(SimpleCache.java:33)
org.eclipse.xtext.scoping.impl.DefaultScopeProvider.getScope(DefaultScopeProvider.java:79)
org.eclipse.amp.amf.parameters.scoping.AParScopeProvider.getScope(AParScopeProvider.java:65)
org.eclipse.amp.amf.testing.scoping.ATestScopeProvider.getScope(ATestScopeProvider.java:46)
org.eclipse.xtext.linking.impl.DefaultLinkingService.getScope(DefaultLinkingService.java:55)
org.eclipse.xtext.linking.impl.DefaultLinkingService.getLinkedObjects(DefaultLinkingService.java:66)
org.eclipse.xtext.linking.impl.Linker.getLinkedObject(Linker.java:145)
org.eclipse.xtext.linking.impl.Linker.ensureIsLinked(Linker.java:102)
org.eclipse.xtext.linking.impl.Linker.ensureLinked(Linker.java:55)
org.eclipse.xtext.linking.impl.Linker.ensureModelLinked(Linker.java:170)
org.eclipse.xtext.linking.impl.Linker.doLinkModel(Linker.java:163)
org.eclipse.xtext.linking.impl.AbstractCleaningLinker.linkModel(AbstractCleaningLinker.java:24)
org.eclipse.xtext.resource.XtextResource.doLinking(XtextResource.java:140)
org.eclipse.xtext.linking.lazy.LazyLinkingResource.doLinking(LazyLinkingResource.java:50)
org.eclipse.xtext.resource.XtextResource.doLoad(XtextResource.java:160)
org.eclipse.xtext.linking.lazy.LazyLinkingResource.doLoad(LazyLinkingResource.java:43)
org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1494)
org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1282)
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:255)
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:270)
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource(ResourceSetImpl.java:397)
org.eclipse.amp.amf.testing.ATestInterpreter.load(ATestInterpreter.java:76)
org.eclipse.amp.amf.testing.ide.TestRun$1.run(TestRun.java:127)
org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)



Worker-25


[BLOCKED; waiting to lock org.eclipse.xtext.util.SimpleCache@60fc37f6]
org.eclipse.xtext.util.SimpleCache.isEmpty(SimpleCache.java)
org.eclipse.xtext.scoping.impl.DefaultScopeProvider$1.notifyChanged(DefaultScopeProvider.java:37)
org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:280)
org.eclipse.emf.common.notify.impl.NotifyingListImpl.dispatchNotification(NotifyingListImpl.java:267)
org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:300)
org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:307)
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.createResource(ResourceSetImpl.java:426)
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandCreateResource(ResourceSetImpl.java:239)
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource(ResourceSetImpl.java:391)
org.eclipse.xtext.scoping.impl.ImportUriUtil.getResource(ImportUriUtil.java:54)
org.eclipse.xtext.scoping.impl.DefaultScope$LazyReferencedResourceScope.<init>(DefaultScope.java:58)
org.eclipse.xtext.scoping.impl.DefaultScope.createParent(DefaultScope.java:50)
org.eclipse.xtext.scoping.impl.DefaultScope.<init>(DefaultScope.java:34)
org.eclipse.xtext.scoping.impl.DefaultScope.<init>(DefaultScope.java:30)
org.eclipse.xtext.scoping.impl.DefaultScopeProvider.createScope(DefaultScopeProvider.java:72)
org.eclipse.xtext.scoping.impl.DefaultScopeProvider$2.apply(DefaultScopeProvider.java:67)
org.eclipse.xtext.scoping.impl.DefaultScopeProvider$2.apply(DefaultScopeProvider.java:1)
org.eclipse.xtext.util.SimpleCache.get(SimpleCache.java:33)
org.eclipse.xtext.scoping.impl.DefaultScopeProvider.getScope(DefaultScopeProvider.java:79)
org.eclipse.amp.amf.parameters.scoping.AParScopeProvider.getScope(AParScopeProvider.java:65)
org.eclipse.xtext.linking.impl.DefaultLinkingService.getScope(DefaultLinkingService.java:55)
org.eclipse.xtext.linking.impl.DefaultLinkingService.getLinkedObjects(DefaultLinkingService.java:66)
org.eclipse.xtext.linking.impl.Linker.getLinkedObject(Linker.java:145)
org.eclipse.xtext.linking.impl.Linker.ensureIsLinked(Linker.java:102)
org.eclipse.xtext.linking.impl.Linker.ensureLinked(Linker.java:55)
org.eclipse.xtext.linking.impl.Linker.ensureModelLinked(Linker.java:170)
org.eclipse.xtext.linking.impl.Linker.doLinkModel(Linker.java:163)
org.eclipse.xtext.linking.impl.AbstractCleaningLinker.linkModel(AbstractCleaningLinker.java:24)
org.eclipse.xtext.resource.XtextResource.doLinking(XtextResource.java:140)
org.eclipse.xtext.linking.lazy.LazyLinkingResource.doLinking(LazyLinkingResource.java:50)
org.eclipse.xtext.resource.XtextResource.doLoad(XtextResource.java:160)
org.eclipse.xtext.linking.lazy.LazyLinkingResource.doLoad(LazyLinkingResource.java:43)
org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1494)
org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1282)
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:255)
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:270)
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource(ResourceSetImpl.java:397)
org.eclipse.amp.amf.testing.scoping.ATestScopeProvider.getScope(ATestScopeProvider.java:53)
org.eclipse.xtext.linking.impl.DefaultLinkingService.getScope(DefaultLinkingService.java:55)
org.eclipse.xtext.linking.impl.DefaultLinkingService.getLinkedObjects(DefaultLinkingService.java:66)
org.eclipse.xtext.linking.impl.Linker.getLinkedObject(Linker.java:145)
org.eclipse.xtext.linking.impl.Linker.ensureIsLinked(Linker.java:102)
org.eclipse.xtext.linking.impl.Linker.ensureLinked(Linker.java:55)
org.eclipse.xtext.linking.impl.Linker.ensureModelLinked(Linker.java:170)
org.eclipse.xtext.linking.impl.Linker.doLinkModel(Linker.java:163)
org.eclipse.xtext.linking.impl.AbstractCleaningLinker.linkModel(AbstractCleaningLinker.java:24)
org.eclipse.xtext.resource.XtextResource.doLinking(XtextResource.java:140)
org.eclipse.xtext.linking.lazy.LazyLinkingResource.doLinking(LazyLinkingResource.java:50)
org.eclipse.xtext.resource.XtextResource.doLoad(XtextResource.java:160)
org.eclipse.xtext.linking.lazy.LazyLinkingResource.doLoad(LazyLinkingResource.java:43)
org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1494)
org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1282)
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:255)
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:270)
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource(ResourceSetImpl.java:397)
org.eclipse.amp.amf.testing.ATestInterpreter.load(ATestInterpreter.java:76)
org.eclipse.amp.amf.testing.ide.TestRun$1.run(TestRun.java:127)
org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)