Bug 62861 - ArrayIndexOutOfBoundsException in SearchableEnvironment
Summary: ArrayIndexOutOfBoundsException in SearchableEnvironment
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.0   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.0 RC1   Edit
Assignee: Jerome Lanneluc CLA
QA Contact:
URL:
Whiteboard:
Keywords:
: 64445 (view as bug list)
Depends on:
Blocks:
 
Reported: 2004-05-19 05:59 EDT by Philipe Mulet CLA
Modified: 2004-05-31 09:23 EDT (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Philipe Mulet CLA 2004-05-19 05:59:32 EDT
Build I20040506

According to bug 62232, the following stack trace got observed in .log file.
No steps to reproduce.

!MESSAGE Exception in Decorator
!ENTRY org.eclipse.ui 4 4 May 18, 2004 10:00:06.146
!MESSAGE 1
!STACK 0
java.lang.ArrayIndexOutOfBoundsException: 1
	at org.eclipse.jdt.internal.core.SearchableEnvironment.find
(SearchableEnvironment.java:109)
	at org.eclipse.jdt.internal.core.SearchableEnvironment.findType
(SearchableEnvironment.java:157)
	at 
org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType
(LookupEnvironment.java:95)
	at 
org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage
(PackageBinding.java:170)
	at 
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findOnDemandImpor
t(CompilationUnitScope.java:361)
	at 
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findSingleTypeImp
ort(CompilationUnitScope.java:419)
	at 
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.resolveSingleType
Import(CompilationUnitScope.java:547)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage
(Scope.java:1436)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.findSupertype
(ClassScope.java:815)
	at 
org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectSuperInterfaces
(ClassScope.java:652)
	at 
org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy
(ClassScope.java:701)
	at 
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierar
chy(CompilationUnitScope.java:242)
	at 
org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings
(LookupEnvironment.java:225)
	at org.eclipse.jdt.internal.core.hierarchy.HierarchyResolver.accept
(HierarchyResolver.java:202)
	at 
org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType
(LookupEnvironment.java:107)
	at 
org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage
(PackageBinding.java:170)
	at 
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findOnDemandImpor
t(CompilationUnitScope.java:361)
	at 
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findSingleTypeImp
ort(CompilationUnitScope.java:419)
	at 
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInImports
(CompilationUnitScope.java:297)
	at 
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInTypes
(CompilationUnitScope.java:347)
	at org.eclipse.jdt.internal.core.hierarchy.HierarchyResolver.resolve
(HierarchyResolver.java:710)
	at org.eclipse.jdt.internal.core.hierarchy.HierarchyResolver.resolve
(HierarchyResolver.java:522)
	at 
org.eclipse.jdt.internal.core.hierarchy.HierarchyBuilder.buildSupertypes
(HierarchyBuilder.java:113)
	at 
org.eclipse.jdt.internal.core.hierarchy.IndexBasedHierarchyBuilder.build
(IndexBasedHierarchyBuilder.java:135)
	at org.eclipse.jdt.internal.core.hierarchy.TypeHierarchy.compute
(TypeHierarchy.java:319)
	at org.eclipse.jdt.internal.core.hierarchy.TypeHierarchy.refresh
(TypeHierarchy.java:1234)
	at 
org.eclipse.jdt.internal.core.CreateTypeHierarchyOperation.executeOperation
(CreateTypeHierarchyOperation.java:90)
	at org.eclipse.jdt.internal.core.JavaModelOperation.run
(JavaModelOperation.java:700)
	at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation
(JavaModelOperation.java:739)
	at org.eclipse.jdt.internal.core.SourceType.newSupertypeHierarchy
(SourceType.java:604)
	at org.eclipse.jdt.internal.core.SourceType.newSupertypeHierarchy
(SourceType.java:556)
	at 
org.eclipse.jdt.internal.corext.util.SuperTypeHierarchyCache.getTypeHierarchy
(SuperTypeHierarchyCache.java:95)
	at 
org.eclipse.jdt.internal.corext.util.SuperTypeHierarchyCache.getTypeHierarchy
(SuperTypeHierarchyCache.java:81)
	at 
org.eclipse.jdt.ui.OverrideIndicatorLabelDecorator.getOverrideIndicators
(OverrideIndicatorLabelDecorator.java:142)
	at 
org.eclipse.jdt.ui.OverrideIndicatorLabelDecorator.computeAdornmentFlags
(OverrideIndicatorLabelDecorator.java:117)
	at org.eclipse.jdt.ui.OverrideIndicatorLabelDecorator.decorate
(OverrideIndicatorLabelDecorator.java:203)
	at 
org.eclipse.ui.internal.decorators.LightweightDecoratorDefinition.decorate
(LightweightDecoratorDefinition.java:155)
	at 
org.eclipse.ui.internal.decorators.LightweightDecoratorManager$LightweightRunna
ble.run(LightweightDecoratorManager.java:60)
	at org.eclipse.core.internal.runtime.InternalPlatform.run
(InternalPlatform.java:607)
	at org.eclipse.core.runtime.Platform.run(Platform.java:668)
	at 
org.eclipse.ui.internal.decorators.LightweightDecoratorManager.decorate
(LightweightDecoratorManager.java:258)
	at 
org.eclipse.ui.internal.decorators.LightweightDecoratorManager.getDecorations
(LightweightDecoratorManager.java:241)
	at org.eclipse.ui.internal.decorators.DecorationScheduler$1.run
(DecorationScheduler.java:283)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:66)
Comment 1 Jerome Lanneluc CLA 2004-05-19 11:38:50 EDT
From this stack trace, I cannot construct a test case that shows this 
ArrayIndexOutOfBoundsException. 

Ian would you have the source of the classes in this hierarchy ?
Comment 2 Christof Marti CLA 2004-05-25 13:28:11 EDT
M9 + HEAD of Text plugins

Happend when I tried to open 10 copies of org.eclipse.swt/Eclipse
SWT/win32/org/eclipse/swt/graphics/TextLayout.java with "close editors
automatically" enabled and "n. of opened editors" set to 1 (see
Workbench->Editors preference page). (This happend by accident...)

java.lang.ArrayIndexOutOfBoundsException: 1
	at
org.eclipse.jdt.internal.core.SearchableEnvironment.find(SearchableEnvironment.java:109)
	at
org.eclipse.jdt.internal.core.SearchableEnvironment.findType(SearchableEnvironment.java:157)
	at
org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:95)
	at
org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:170)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:1448)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:1271)
	at
org.eclipse.jdt.internal.compiler.ast.SingleTypeReference.getTypeBinding(SingleTypeReference.java:43)
	at
org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.resolveTypesFor(SourceTypeBinding.java:829)
	at
org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.getMethods(SourceTypeBinding.java:535)
	at
org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.getExactMethod(SourceTypeBinding.java:462)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.findExactMethod(Scope.java:233)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getMethod(Scope.java:1232)
	at
org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType(MessageSend.java:238)
	at org.eclipse.jdt.internal.compiler.ast.Expression.resolve(Expression.java:445)
	at org.eclipse.jdt.internal.compiler.ast.Block.resolve(Block.java:101)
	at
org.eclipse.jdt.internal.compiler.ast.WhileStatement.resolve(WhileStatement.java:213)
	at org.eclipse.jdt.internal.compiler.ast.Block.resolve(Block.java:101)
	at
org.eclipse.jdt.internal.compiler.ast.WhileStatement.resolve(WhileStatement.java:213)
	at org.eclipse.jdt.internal.compiler.ast.Block.resolve(Block.java:101)
	at org.eclipse.jdt.internal.compiler.ast.IfStatement.resolve(IfStatement.java:226)
	at org.eclipse.jdt.internal.compiler.ast.Block.resolve(Block.java:101)
	at
org.eclipse.jdt.internal.compiler.ast.ForStatement.resolve(ForStatement.java:300)
	at
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatements(AbstractMethodDeclaration.java:381)
	at
org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements(MethodDeclaration.java:137)
	at
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:358)
	at
org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:922)
	at
org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:971)
	at
org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:273)
	at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:562)
	at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:601)
	at
org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:166)
	at
org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:206)
	at
org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:76)
	at
org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700)
	at
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:739)
	at
org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:1097)
	at
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:88)
	at
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.initialReconcile(JavaReconcilingStrategy.java:156)
	at
org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.initialReconcile(CompositeReconcilingStrategy.java:114)
	at
org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.initialReconcile(JavaCompositeReconcilingStrategy.java:122)
	at
org.eclipse.jface.text.reconciler.MonoReconciler.initialProcess(MonoReconciler.java:104)
	at
org.eclipse.jdt.internal.ui.text.JavaReconciler.initialProcess(JavaReconciler.java:280)
	at
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:166)
!ENTRY org.eclipse.core.runtime 4 2 May 25, 2004 18:51:42.410
!MESSAGE An internal error occurred during: "Java AST creation".
!STACK 0
java.lang.ArrayIndexOutOfBoundsException: 1
	at
org.eclipse.jdt.internal.core.SearchableEnvironment.find(SearchableEnvironment.java:109)
	at
org.eclipse.jdt.internal.core.SearchableEnvironment.findType(SearchableEnvironment.java:157)
	at
org.eclipse.jdt.core.dom.CompilationUnitResolver$CancelableNameEnvironment.findType(CompilationUnitResolver.java:70)
	at
org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:95)
	at
org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:170)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:1448)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:1271)
	at
org.eclipse.jdt.internal.compiler.ast.SingleTypeReference.getTypeBinding(SingleTypeReference.java:43)
	at
org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.resolveTypesFor(SourceTypeBinding.java:829)
	at
org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.getMethods(SourceTypeBinding.java:535)
	at
org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.getExactMethod(SourceTypeBinding.java:462)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.findExactMethod(Scope.java:233)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getMethod(Scope.java:1232)
	at
org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType(MessageSend.java:238)
	at org.eclipse.jdt.internal.compiler.ast.Expression.resolve(Expression.java:445)
	at org.eclipse.jdt.internal.compiler.ast.Block.resolve(Block.java:101)
	at
org.eclipse.jdt.internal.compiler.ast.WhileStatement.resolve(WhileStatement.java:213)
	at org.eclipse.jdt.internal.compiler.ast.Block.resolve(Block.java:101)
	at
org.eclipse.jdt.internal.compiler.ast.WhileStatement.resolve(WhileStatement.java:213)
	at org.eclipse.jdt.internal.compiler.ast.Block.resolve(Block.java:101)
	at org.eclipse.jdt.internal.compiler.ast.IfStatement.resolve(IfStatement.java:226)
	at org.eclipse.jdt.internal.compiler.ast.Block.resolve(Block.java:101)
	at
org.eclipse.jdt.internal.compiler.ast.ForStatement.resolve(ForStatement.java:300)
	at
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatements(AbstractMethodDeclaration.java:381)
	at
org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements(MethodDeclaration.java:137)
	at
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:358)
	at
org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:922)
	at
org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:971)
	at
org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:273)
	at
org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:436)
	at
org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:313)
	at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:653)
	at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java:573)
	at
org.eclipse.jdt.internal.ui.javaeditor.ASTProvider.createAST(ASTProvider.java:437)
	at org.eclipse.jdt.internal.ui.javaeditor.ASTProvider.getAST(ASTProvider.java:389)
	at org.eclipse.jdt.internal.ui.javaeditor.ASTProvider.getAST(ASTProvider.java:383)
	at
org.eclipse.jdt.internal.ui.viewsupport.SelectionListenerWithASTManager$PartListenerGroup.calculateASTandInform(SelectionListenerWithASTManager.java:125)
	at
org.eclipse.jdt.internal.ui.viewsupport.SelectionListenerWithASTManager$1.run(SelectionListenerWithASTManager.java:102)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:66)
Comment 3 Gunnar Wagenknecht CLA 2004-05-26 09:51:33 EDT
M9 

I'm also observed this exception in the log. The stack trace matches the one 
from the initial bug description.
Comment 4 Jerome Lanneluc CLA 2004-05-26 11:20:46 EDT
This sounds like a concurrency problem: a working copy is closed while it is 
used by the SearchableEnvironment.

Added protection in SearchableEnvironment#find(...) to ensure that the index 
is inside bounds. However I've never been able to reproduce this problem.
Comment 5 Olivier Thomann CLA 2004-05-28 15:33:48 EDT
Could not reproduce anymore.
Verified in 200405281200
Comment 6 Jerome Lanneluc CLA 2004-05-31 09:23:46 EDT
*** Bug 64445 has been marked as a duplicate of this bug. ***