Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 312221 - [JavaVMTypes]: BasicIndexOutOfBoundsException when using JavaVMTypes and refering class with "suppresswarnings" annotation
Summary: [JavaVMTypes]: BasicIndexOutOfBoundsException when using JavaVMTypes and refe...
Status: CLOSED WORKSFORME
Alias: None
Product: TMF
Classification: Modeling
Component: Xtext (show other bugs)
Version: 1.0.0   Edit
Hardware: PC Windows 7
: P3 normal (vote)
Target Milestone: M7   Edit
Assignee: Project Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-05-10 04:56 EDT by Eckle CLA
Modified: 2013-01-15 02:05 EST (History)
2 users (show)

See Also:
sebastian.zarnekow: helios+


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Eckle CLA 2010-05-10 04:56:50 EDT
Build Identifier: 

When using the JavaVMTypes in xtext 1.0.0 M6 to reference a type, a BasicIndexOutOfBoundsException is thrown many times, when saving the file.
This happens only, if the project containing this referenced type is open.

xtext file:
//----------------
...
import "http://www.eclipse.org/xtext/common/JavaVMTypes" as javatypes
...
Foo:
as' qualifiedClass=[javatypes::JvmDeclaredType|QID]



Stacktrace:

564528 [Worker-11] WARN  org.eclipse.xtext.linking.lazy.LazyLinkingResource  - resolution of uriFragment 'xtextLink_:://@entities.0::http://...Foo«10::/10' failed.
org.eclipse.emf.common.util.BasicEList$BasicIndexOutOfBoundsException: index=0, size=0
	at org.eclipse.emf.common.util.BasicEList.get(BasicEList.java:352)
	at org.eclipse.xtext.common.types.access.impl.AbstractClassMirror.getEObject(AbstractClassMirror.java:59)
	at org.eclipse.xtext.common.types.access.TypeResource.getEObject(TypeResource.java:36)
	at org.eclipse.xtext.common.types.access.jdt.JdtTypeProvider.findTypeBySignature(JdtTypeProvider.java:67)
	at org.eclipse.xtext.common.types.access.jdt.JdtTypeProvider.findTypeByName(JdtTypeProvider.java:56)
	at org.eclipse.xtext.common.types.xtext.AbstractTypeScope.getContentByName(AbstractTypeScope.java:42)
	at org.eclipse.xtext.linking.impl.ImportedNamesAdapter$WrappingScope.getContentByName(ImportedNamesAdapter.java:52)
	at org.eclipse.xtext.scoping.impl.AbstractScope.getContentByName(AbstractScope.java:80)
	at org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider$5.getContentByName(ImportedNamespaceAwareLocalScopeProvider.java:224)
	at org.eclipse.xtext.scoping.impl.AbstractScope.getContentByName(AbstractScope.java:80)
	at org.eclipse.xtext.scoping.impl.AbstractScope.getContentByName(AbstractScope.java:80)
	at org.eclipse.xtext.linking.impl.DefaultLinkingService.getLinkedObjects(DefaultLinkingService.java:106)
	at org.eclipse.xtext.linking.lazy.LazyLinkingResource.getEObject(LazyLinkingResource.java:79)
	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:262)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eResolveProxy(BasicEObjectImpl.java:1483)
	at ...FooImpl.getQualifiedClass(FooImpl.java:77)
	at ...FooImpl.eGet(FooImpl.java:121)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1021)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1013)
	at org.eclipse.emf.ecore.util.EContentsEList$FeatureIteratorImpl.hasNext(EContentsEList.java:409)
	at org.eclipse.emf.ecore.util.EObjectValidator.validate_EveryReferenceIsContained(EObjectValidator.java:788)
	at org.eclipse.emf.ecore.util.EObjectValidator.validate_EveryDefaultConstraint(EObjectValidator.java:361)
	at org.eclipse.emf.ecore.util.EObjectValidator$DynamicEClassValidator.validate(EObjectValidator.java:1426)
	at org.eclipse.emf.ecore.util.EObjectValidator$DynamicEClassValidator.validate(EObjectValidator.java:1429)
	at org.eclipse.emf.ecore.util.EObjectValidator$DynamicEClassValidator.validate(EObjectValidator.java:1429)
	at org.eclipse.emf.ecore.util.EObjectValidator$DynamicEClassValidator.validate(EObjectValidator.java:1429)
	at org.eclipse.emf.ecore.util.EObjectValidator.validate(EObjectValidator.java:339)
	at org.eclipse.xtext.validation.CompositeEValidator.validate(CompositeEValidator.java:119)
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:165)
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:143)
	at org.eclipse.xtext.validation.CancelableDiagnostician.validate(CancelableDiagnostician.java:36)
	at org.eclipse.emf.ecore.util.Diagnostician.doValidateContents(Diagnostician.java:180)
	at org.eclipse.xtext.validation.CancelableDiagnostician.doValidateContents(CancelableDiagnostician.java:48)
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:168)
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:143)
	at org.eclipse.xtext.validation.CancelableDiagnostician.validate(CancelableDiagnostician.java:36)
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:126)
	at org.eclipse.xtext.validation.ResourceValidatorImpl.validate(ResourceValidatorImpl.java:102)
	at org.eclipse.xtext.builder.builderState.MarkerUpdaterImpl.addMarkers(MarkerUpdaterImpl.java:93)
	at org.eclipse.xtext.builder.builderState.MarkerUpdaterImpl.updateMarker(MarkerUpdaterImpl.java:63)
	at org.eclipse.xtext.builder.builderState.PersistableResourceDescriptionsImpl.doValidate(PersistableResourceDescriptionsImpl.java:124)
	at org.eclipse.xtext.builder.builderState.PersistableResourceDescriptionsImpl.update(PersistableResourceDescriptionsImpl.java:113)
	at org.eclipse.xtext.builder.impl.XtextBuilder.doBuild(XtextBuilder.java:123)
	at org.eclipse.xtext.builder.impl.XtextBuilder.incrementalBuild(XtextBuilder.java:110)
	at org.eclipse.xtext.builder.impl.XtextBuilder.build(XtextBuilder.java:77)
	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:627)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201)
	at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309)
	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341)
	at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140)
	at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)


Reproducible: Always

Steps to Reproduce:
1. make a DSL that uses JavaVMTypes 
2. use content-assist to find the class that is in an open project and contains suppresswarnings as annotation at any method.
3. save the modified file.
Comment 1 Sebastian Zarnekow CLA 2010-05-10 04:59:14 EDT
Is this bug still reproducable with Xtext 1.0M7?
Comment 2 Eckle CLA 2010-05-10 05:01:11 EDT
as information: we have bound an builderparticipant to the xtext builder,
running some code generation with xpand.


@Sebastian: sorry, we are using xtext 1.0.0m6, i changed the version above.
Comment 3 Eckle CLA 2010-05-10 05:02:45 EDT
workaround:  change the annotation from e.g. @SuppressWarnings("unchecked") to @SuppressWarnings({"unchecked"})
Comment 4 Sebastian Zarnekow CLA 2010-05-10 05:13:02 EDT
Some significant changes made it into M7. I'm pretty sure this one was fixed as well. Do you have the possibility to verify that it is still present in M7? Otherwise I'ld like to close it.
Comment 5 Eckle CLA 2010-05-10 09:24:57 EDT
ok, i quick checked it with m7 and it was not reproducable.
can be closed
Comment 6 Sebastian Zarnekow CLA 2010-05-10 09:29:18 EDT
This has already been fixed.
Comment 7 Stephan Herrmann CLA 2013-01-14 12:57:41 EST
Here's a similar failure I just observed with xtend 2.3.1 (I believe) invoked via xtend-maven-plugin:2.3.0.

I *think* the last action before desaster was to remove the xtend-gen folder, as to revert accidental persisting in svn. This was difficult to resolve, as the exception gave no clue on where in a big build the thing blew up. The Eclipse console showing maven log was overflowing in a fraction of a second, producing millions of instances of this stack trace.

Once I was in this state, no "mvn clean install" would ever get me out of the bad state. Only an unreproduceable sequence of eclipse actions (clean, refresh, clean, build, clean other project etc. you get the idea) got me back into a state where "mvn clean install" would run to completion.

I'm sorry these are no useful steps for reproducing (therefor not re-opening this bug), but couldn't you add some catch code that would give a useful error message? E.g.: which type was being sought? What data was corrupt as to trigger the IOOBE? What triggered the entire lookup?

resolution of uriFragment 'xtextLink_::0.1.0.6.3.3.0.2.2.7.0::1::/0' failed.
org.eclipse.emf.common.util.BasicEList$BasicIndexOutOfBoundsException: index=0, size=0
	at org.eclipse.emf.common.util.BasicEList.get(BasicEList.java:352)
	at org.eclipse.xtext.common.types.access.impl.AbstractClassMirror.getEObject(AbstractClassMirror.java:83)
	at org.eclipse.xtext.common.types.access.TypeResource.getEObject(TypeResource.java:54)
	at org.eclipse.xtext.common.types.access.impl.ClasspathTypeProvider.findTypeByClass(ClasspathTypeProvider.java:126)
	at org.eclipse.xtext.common.types.access.impl.ClasspathTypeProvider.findTypeByName(ClasspathTypeProvider.java:82)
	at org.eclipse.xtext.common.types.xtext.AbstractTypeScope.getSingleElement(AbstractTypeScope.java:54)
	at org.eclipse.xtext.common.types.xtext.AbstractTypeScope.getElements(AbstractTypeScope.java:68)
	at org.eclipse.xtext.scoping.impl.AbstractScope$2.get(AbstractScope.java:135)
	at org.eclipse.xtext.scoping.impl.AbstractScope$2.get(AbstractScope.java:1)
	at org.eclipse.xtext.scoping.impl.AbstractScope$ParentIterable.iterator(AbstractScope.java:59)
	at com.google.common.collect.Iterables$3.next(Iterables.java:505)
	at com.google.common.collect.Iterables$3.next(Iterables.java:498)
	at com.google.common.collect.Iterators$5.hasNext(Iterators.java:540)
	at org.eclipse.xtext.scoping.impl.ImportScope.getLocalElementsByName(ImportScope.java:154)
	at org.eclipse.xtend.core.scoping.XtendImportedNamespaceScopeProvider$1.getLocalElementsByName(XtendImportedNamespaceScopeProvider.java:157)
	at org.eclipse.xtext.scoping.impl.ImportScope.getSingleLocalElementByName(ImportScope.java:140)
	at org.eclipse.xtend.core.scoping.XtendImportedNamespaceScopeProvider$1.getSingleLocalElementByName(XtendImportedNamespaceScopeProvider.java:150)
	at org.eclipse.xtext.scoping.impl.AbstractScope.getSingleElement(AbstractScope.java:102)
	at org.eclipse.xtext.scoping.impl.AbstractScope.getSingleElement(AbstractScope.java:105)
	at org.eclipse.xtext.scoping.impl.AbstractScope.getSingleElement(AbstractScope.java:105)
	at org.eclipse.xtext.scoping.impl.AbstractScope.getSingleElement(AbstractScope.java:105)
	at org.eclipse.xtext.linking.impl.DefaultLinkingService.getLinkedObjects(DefaultLinkingService.java:121)
	at org.eclipse.xtext.linking.lazy.LazyLinkingResource.getEObject(LazyLinkingResource.java:179)
	at org.eclipse.xtext.xbase.resource.XbaseResource.access$0(XbaseResource.java:1)
	at org.eclipse.xtext.xbase.resource.XbaseResource$2.exec(XbaseResource.java:239)
	at org.eclipse.xtext.xbase.resource.XbaseResource$2.exec(XbaseResource.java:1)
	at org.eclipse.xtext.util.OnChangeEvictingCache.execWithoutCacheClear(OnChangeEvictingCache.java:124)
	at org.eclipse.xtext.xbase.resource.XbaseResource.getEObject(XbaseResource.java:237)
	at org.eclipse.xtend.core.resource.XtendResource.getEObject(XtendResource.java:88)
	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:262)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eResolveProxy(BasicEObjectImpl.java:1475)
	at org.eclipse.xtext.common.types.impl.JvmTypeReferenceImplCustom.eResolveProxy(JvmTypeReferenceImplCustom.java:37)
	at org.eclipse.xtext.common.types.impl.JvmParameterizedTypeReferenceImpl.getType(JvmParameterizedTypeReferenceImpl.java:110)
	at org.eclipse.xtext.xbase.scoping.featurecalls.JvmFeatureScopeProvider.linearizeTypeHierarchy(JvmFeatureScopeProvider.java:134)
	at org.eclipse.xtext.xbase.scoping.featurecalls.JvmFeatureScopeProvider.createFeatureScopeForTypeRef(JvmFeatureScopeProvider.java:109)
	at org.eclipse.xtext.xbase.scoping.featurecalls.JvmFeatureScopeProvider.createFeatureScope(JvmFeatureScopeProvider.java:73)
	at org.eclipse.xtext.xbase.scoping.XbaseScopeProvider$JvmFeatureScopeAcceptor.createScope(XbaseScopeProvider.java:776)
	at org.eclipse.xtext.xbase.scoping.XbaseScopeProvider.createFeatureScopeForTypeRef(XbaseScopeProvider.java:380)
	at org.eclipse.xtext.xbase.scoping.XbaseScopeProvider.createFeatureCallScopeForReceiver(XbaseScopeProvider.java:403)
	at org.eclipse.xtext.xbase.scoping.XbaseScopeProvider.createFeatureCallScope(XbaseScopeProvider.java:335)
	at org.eclipse.xtext.xbase.scoping.XbaseScopeProvider.getScope(XbaseScopeProvider.java:179)
	at org.eclipse.xtext.xbase.annotations.scoping.XbaseWithAnnotationsScopeProvider.getScope(XbaseWithAnnotationsScopeProvider.java:50)
	at org.eclipse.xtext.xbase.linking.XbaseLinkingScopeProvider.getScope(XbaseLinkingScopeProvider.java:42)
	at org.eclipse.xtext.linking.impl.DefaultLinkingService.getScope(DefaultLinkingService.java:59)
	at org.eclipse.xtext.linking.impl.DefaultLinkingService.getLinkedObjects(DefaultLinkingService.java:119)
	at org.eclipse.xtext.linking.lazy.LazyLinkingResource.getEObject(LazyLinkingResource.java:179)
	at org.eclipse.xtext.xbase.resource.XbaseResource.access$0(XbaseResource.java:1)
	at org.eclipse.xtext.xbase.resource.XbaseResource$2.exec(XbaseResource.java:239)
	at org.eclipse.xtext.xbase.resource.XbaseResource$2.exec(XbaseResource.java:1)
	at org.eclipse.xtext.util.OnChangeEvictingCache.execWithoutCacheClear(OnChangeEvictingCache.java:124)
	at org.eclipse.xtext.xbase.resource.XbaseResource.getEObject(XbaseResource.java:237)
	at org.eclipse.xtend.core.resource.XtendResource.getEObject(XtendResource.java:88)
	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:262)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eResolveProxy(BasicEObjectImpl.java:1475)
	at org.eclipse.xtext.xbase.impl.XAbstractFeatureCallImpl.getFeature(XAbstractFeatureCallImpl.java:175)
	at org.eclipse.xtext.xbase.impl.XAbstractFeatureCallImpl.eGet(XAbstractFeatureCallImpl.java:434)
	at org.eclipse.xtext.xbase.impl.XMemberFeatureCallImpl.eGet(XMemberFeatureCallImpl.java:320)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1013)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1005)
	at org.eclipse.emf.ecore.util.EContentsEList$FeatureIteratorImpl.hasNext(EContentsEList.java:409)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolveCrossReferences(EcoreUtil.java:307)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolveAll(EcoreUtil.java:287)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolveAll(EcoreUtil.java:274)
	at org.eclipse.xtend.core.compiler.batch.XtendBatchCompiler.compile(XtendBatchCompiler.java:232)
	at org.eclipse.xtend.maven.AbstractXtend2CompilerMojo.compile(AbstractXtend2CompilerMojo.java:104)
	at org.eclipse.xtend.maven.XtendCompile.compileSources(XtendCompile.java:53)
	at org.eclipse.xtend.maven.XtendCompile.internalExecute(XtendCompile.java:45)
	at org.eclipse.xtend.maven.AbstractXtend2CompilerMojo.execute(AbstractXtend2CompilerMojo.java:69)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:107)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:534)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
	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.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Comment 8 Sebastian Zarnekow CLA 2013-01-15 02:05:50 EST
Hi Stephan,

thanks for coming back to this issue.

In the current master branch, we do already log the questionable type and add the stack only if debug log is enabled.

I hope that this will make it easier to identify class path problems in the future.