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

Hi Miles,

thanks for the information.
Unfortunately I wasn't able to reproduce it (damn concurrency issues...)

I've filed a bugzilla so we can have a more cloer look as soon as it occurs a second time or we find a way to reproduce it.

https://bugs.eclipse.org/bugs/show_bug.cgi?id=289553

Cheers,
Sven

Miles Parker schrieb:
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)






--
Need professional support for Eclipse Modeling?
Go visit: http://xtext.itemis.com