Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 361581

Summary: [xtend2] StackOverflowError in XtextReconcilerJob
Product: [Modeling] TMF Reporter: Knut Wannheden <knut.wannheden>
Component: XtextAssignee: Project Inbox <tmf.xtext-inbox>
Status: CLOSED FIXED QA Contact:
Severity: major    
Priority: P3 CC: sebastian.zarnekow
Version: 2.1.0Flags: sebastian.zarnekow: indigo+
Target Milestone: SR2   
Hardware: PC   
OS: Mac OS X - Carbon (unsup.)   
Whiteboard:

Description Knut Wannheden CLA 2011-10-20 14:48:53 EDT
The following setup gives me a StackOverflowError as a popup dialog.

SomeClass.xtend:
class SomeClass {
}

SomeExtensions.xtend:
class SomeExtensions {
	def void addFoo(SomeClass c, String v) {
	}
}

Test.xtend:
class Test {
	extension SomeExtensions
	def foo() { 
	  	new SomeClass()
	}
}

The error occurs when editing Test.xtend.

java.lang.StackOverflowError
	at org.eclipse.xtext.util.Pair.equals(Pair.java:47)
	at org.eclipse.xtext.util.Triple.equals(Triple.java:39)
	at java.util.concurrent.ConcurrentHashMap$Segment.get(ConcurrentHashMap.java:338)
	at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:769)
	at org.eclipse.xtext.util.OnChangeEvictingCache$CacheAdapter.get(OnChangeEvictingCache.java:239)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$1.get(AbstractTypeProvider.java:148)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$CyclicHandlingSupport.getType(AbstractTypeProvider.java:614)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider.doGetType(AbstractTypeProvider.java:340)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider.getTypeForIdentifiable(AbstractTypeProvider.java:455)
	at org.eclipse.xtext.xbase.typing.XbaseTypeProvider._type(XbaseTypeProvider.java:801)
	at org.eclipse.xtext.xbase.typing.XbaseTypeProvider.typeDispatcherInvoke(XbaseTypeProvider.java:164)
	at org.eclipse.xtext.xbase.annotations.typing.XbaseWithAnnotationsTypeProvider.typeDispatcherInvoke(XbaseWithAnnotationsTypeProvider.java:97)
	at org.eclipse.xtext.xtend2.typing.Xtend2TypeProvider.typeDispatcherInvoke(Xtend2TypeProvider.java:97)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$2.doComputation(AbstractTypeProvider.java:284)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$2.doComputation(AbstractTypeProvider.java:1)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$CyclicHandlingSupport$3.get(AbstractTypeProvider.java:617)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$CyclicHandlingSupport$3.get(AbstractTypeProvider.java:1)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$1.get(AbstractTypeProvider.java:152)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$CyclicHandlingSupport.getType(AbstractTypeProvider.java:614)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider.doGetType(AbstractTypeProvider.java:340)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider.getType(AbstractTypeProvider.java:356)
	at org.eclipse.xtext.xbase.typing.XbaseTypeProvider._type(XbaseTypeProvider.java:789)
	at org.eclipse.xtext.xbase.typing.XbaseTypeProvider.typeDispatcherInvoke(XbaseTypeProvider.java:156)
	at org.eclipse.xtext.xbase.annotations.typing.XbaseWithAnnotationsTypeProvider.typeDispatcherInvoke(XbaseWithAnnotationsTypeProvider.java:97)
	at org.eclipse.xtext.xtend2.typing.Xtend2TypeProvider.typeDispatcherInvoke(Xtend2TypeProvider.java:97)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$2.doComputation(AbstractTypeProvider.java:284)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$2.doComputation(AbstractTypeProvider.java:1)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$CyclicHandlingSupport$3.get(AbstractTypeProvider.java:617)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$CyclicHandlingSupport$3.get(AbstractTypeProvider.java:1)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$1.get(AbstractTypeProvider.java:152)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$CyclicHandlingSupport.getType(AbstractTypeProvider.java:614)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider.doGetType(AbstractTypeProvider.java:340)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider.getType(AbstractTypeProvider.java:356)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider.getType(AbstractTypeProvider.java:348)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider.getCommonReturnType(AbstractTypeProvider.java:487)
	at org.eclipse.xtext.xtend2.resource.Xtend2Resource.computeReturnType(Xtend2Resource.java:193)
	at org.eclipse.xtext.xtend2.resource.Xtend2Resource.inferReturnType(Xtend2Resource.java:137)
	at org.eclipse.xtext.xtend2.resource.Xtend2Resource.getEObject(Xtend2Resource.java:98)
	at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getEObject(ResourceSetImpl.java:219)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:202)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:224)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:224)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:224)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:224)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:224)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:224)
Comment 1 Knut Wannheden CLA 2011-10-24 02:43:39 EDT
Anyone else experienced this? I reported it as major because of the error dialog. Also the additional dialog with the question to exit the workbench isn't very nice.

It is also reproducible without an extension:

Foo.xtend:
class Foo {}

Bar.xtend:
class Bar {
  def bar() {
    new Foo()
  }
}
Comment 2 Sebastian Zarnekow CLA 2011-10-24 11:28:28 EDT
(In reply to comment #1)
> It is also reproducible without an extension:
> 
> Foo.xtend:
> class Foo {}
> 
> Bar.xtend:
> class Bar {
>   def bar() {
>     new Foo()
>   }
> }

This example does not lead to a stack overflow. Will try with the other scenario now.
Comment 3 Sebastian Zarnekow CLA 2011-10-24 11:38:22 EDT
(In reply to comment #2)
> Will try with the other scenario now.

Success ...
Comment 4 Sebastian Zarnekow CLA 2011-10-24 12:41:06 EDT
Pushed to master.
Comment 5 Karsten Thoms CLA 2017-09-19 17:43:11 EDT
Closing all bugs that were set to RESOLVED before Neon.0
Comment 6 Karsten Thoms CLA 2017-09-19 17:54:17 EDT
Closing all bugs that were set to RESOLVED before Neon.0