Bug 93826 - ArrayIndexOutOfBoundsException when opening type hierarchy
Summary: ArrayIndexOutOfBoundsException when opening type hierarchy
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.1   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.1 M7   Edit
Assignee: Jerome Lanneluc CLA
QA Contact:
URL:
Whiteboard:
Keywords:
: 93995 (view as bug list)
Depends on:
Blocks:
 
Reported: 2005-05-05 14:09 EDT by Darin Wright CLA
Modified: 2005-05-12 11:20 EDT (History)
3 users (show)

See Also:


Attachments
thread dump (563.54 KB, text/plain)
2005-05-06 13:03 EDT, Darin Wright CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Darin Wright CLA 2005-05-05 14:09:26 EDT
N20050505

I opened a type hierarchy on org.eclipse.core.expressions.Expressions and got 
an error dialog with a corresponding exception in the log.

java.lang.ArrayIndexOutOfBoundsException: 0
at org.eclipse.jdt.internal.core.util.BindingKeyParser.parseInnerType
(BindingKeyParser.java:629)
at org.eclipse.jdt.internal.core.util.BindingKeyParser.parse
(BindingKeyParser.java:527)
at org.eclipse.jdt.internal.core.util.BindingKeyParser.parse
(BindingKeyParser.java(Inlined Compiled Code))
at org.eclipse.jdt.core.BindingKey.isParameterizedType(BindingKey.java(Inlined 
Compiled Code))
at org.eclipse.jdt.ui.JavaElementLabels.getTypeLabel(JavaElementLabels.java
(Compiled Code))
at org.eclipse.jdt.ui.JavaElementLabels.getElementLabel(JavaElementLabels.java
(Compiled Code))
at org.eclipse.jdt.ui.JavaElementLabels.getElementLabel(JavaElementLabels.java
(Inlined Compiled Code))
at org.eclipse.jdt.ui.JavaElementLabels.getTextLabel(JavaElementLabels.java
(Compiled Code))
at org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider.getText
(JavaUILabelProvider.java(Compiled Code))
at org.eclipse.jdt.internal.ui.typehierarchy.HierarchyLabelProvider.getText
(HierarchyLabelProvider.java:126)
at org.eclipse.jface.viewers.DecoratingLabelProvider.getText
(DecoratingLabelProvider.java(Inlined Compiled Code))
at org.eclipse.jface.viewers.DecoratingLabelProvider.updateLabel
(DecoratingLabelProvider.java(Compiled Code))
at org.eclipse.jface.viewers.StructuredViewer.buildLabel(StructuredViewer.java
(Compiled Code))
at org.eclipse.jface.viewers.TreeViewer.doUpdateItem(TreeViewer.java(Compiled 
Code))
at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run
(AbstractTreeViewer.java(Inlined Compiled Code))
at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java
(Inlined Compiled Code))
at org.eclipse.core.runtime.Platform.run(Platform.java(Inlined Compiled Code))
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java(Inlined Compiled 
Code))
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java(Inlined Compiled 
Code))
at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem
(AbstractTreeViewer.java(Compiled Code))
at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run
(StructuredViewer.java(Inlined Compiled Code))
at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java
(Inlined Compiled Code))
at org.eclipse.core.runtime.Platform.run(Platform.java(Inlined Compiled Code))
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java(Inlined Compiled 
Code))
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java(Inlined Compiled 
Code))
at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java
(Compiled Code))
at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem
(AbstractTreeViewer.java:535)
at org.eclipse.jface.viewers.AbstractTreeViewer$1.run
(AbstractTreeViewer.java:514)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java(Compiled 
Code))
at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren
(AbstractTreeViewer.java:494)
at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpandToLevel
(AbstractTreeViewer.java:1120)
at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpandToLevel
(AbstractTreeViewer.java:1129)
at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpandToLevel
(AbstractTreeViewer.java:1129)
at org.eclipse.jface.viewers.AbstractTreeViewer.expandToLevel
(AbstractTreeViewer.java:658)
at org.eclipse.jface.viewers.AbstractTreeViewer.expandToLevel
(AbstractTreeViewer.java:641)
at 
org.eclipse.jdt.internal.ui.typehierarchy.TraditionalHierarchyViewer.updateCont
ent(TraditionalHierarchyViewer.java:61)
at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart$11.run
(TypeHierarchyViewPart.java:1090)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java(Compiled 
Code))
at 
org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart.updateHierarchy
Viewer(TypeHierarchyViewPart.java:1093)
at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart.updateInput
(TypeHierarchyViewPart.java:541)
at 
org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart.setInputElement
(TypeHierarchyViewPart.java:486)
at org.eclipse.jdt.internal.ui.util.OpenTypeHierarchyUtil.openInViewPart
(OpenTypeHierarchyUtil.java:98)
at org.eclipse.jdt.internal.ui.util.OpenTypeHierarchyUtil.open
(OpenTypeHierarchyUtil.java:75)
at org.eclipse.jdt.ui.actions.OpenTypeHierarchyAction.run
(OpenTypeHierarchyAction.java:181)
at org.eclipse.jdt.ui.actions.OpenTypeHierarchyAction.run
(OpenTypeHierarchyAction.java:143)
at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun
(SelectionDispatchAction.java:226)
at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run
(SelectionDispatchAction.java:198)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:996)
at org.eclipse.ui.commands.ActionHandler.execute(ActionHandler.java:182)
at org.eclipse.ui.internal.handlers.LegacyHandlerWrapper.execute
(LegacyHandlerWrapper.java:108)
at org.eclipse.core.commands.Command.execute(Command.java:312)
at org.eclipse.core.commands.ParameterizedCommand.execute
(ParameterizedCommand.java:396)
at org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand
(WorkbenchKeyboard.java:452)
at org.eclipse.ui.internal.keys.WorkbenchKeyboard.press
(WorkbenchKeyboard.java:722)
at org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent
(WorkbenchKeyboard.java:766)
at org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings
(WorkbenchKeyboard.java:543)
at org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$3
(WorkbenchKeyboard.java:486)
at org.eclipse.ui.internal.keys.WorkbenchKeyboard$KeyDownFilter.handleEvent
(WorkbenchKeyboard.java:110)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java(Compiled Code))
at org.eclipse.swt.widgets.Display.filterEvent(Display.java(Inlined Compiled 
Code))
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java(Inlined Compiled Code))
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java(Compiled Code))
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java(Compiled Code))
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:879)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:875)
at org.eclipse.swt.widgets.Widget.wmKeyDown(Widget.java:1467)
at org.eclipse.swt.widgets.Control.WM_KEYDOWN(Control.java:3342)
at org.eclipse.swt.widgets.Control.windowProc(Control.java(Compiled Code))
at org.eclipse.swt.widgets.Display.windowProc(Display.java(Compiled Code))
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java(Inlined Compiled 
Code))
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java(Compiled Code))
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java(Compiled 
Code))
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1556)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:314)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143)
at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:103)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run
(PlatformActivator.java:230)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:345)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:158)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:58)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:60)
at java.lang.reflect.Method.invoke(Method.java:391)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:328)
at org.eclipse.core.launcher.Main.basicRun(Main.java:272)
at org.eclipse.core.launcher.Main.run(Main.java:974)
at org.eclipse.core.launcher.Main.main(Main.java:950)
Comment 1 Jerome Lanneluc CLA 2005-05-06 10:56:51 EDT
I cannot reproduce this problem. Do you have more details on the projects that
are  in your workspace (source vs binary, version number if checked out from
CVS, etc...) ?
Comment 2 Darin Wright CLA 2005-05-06 12:49:33 EDT
I can't reproduce this in N20050506.
Comment 3 Darin Wright CLA 2005-05-06 12:53:51 EDT
Oops, I can reproduce. The hierarchy was on

org.eclipse.core.expressions.Expression - *NOT* Expression*s* as originally 
indicated. I have the following plugins in source, checked out from HEAD.

org.eclipse.jdt.doc.isv
org.eclipse.platform-feature
org.eclipse.releng
org.eclipse.test.performance.win32
platform-ant-home
platform-debug-home
org.apache.ant
org.eclipse.ant.core
org.eclipse.ant.tests.core
org.eclipse.ant.tests.ui
org.eclipse.ant.ui
org.eclipse.core.variables
org.eclipse.debug.core
org.eclipse.debug.ui
org.eclipse.jdt.debug
org.eclipse.jdt.debug.tests
org.eclipse.jdt.debug.ui
org.eclipse.jdt.launching
org.eclipse.jdt.ui.examples.javafamily
org.eclipse.platform.doc.isv
org.eclipse.test.performance
org.eclipse.ui.console
org.eclipse.ui.externaltools
Comment 4 Darin Wright CLA 2005-05-06 13:03:06 EDT
I made the same exception occurr twice, but it does not happen everytime. Not 
sure what the requirements are. However, while attempting to cause it to 
happen I ended up with what seems like a deadlock. I restarted my workbench 
with the hierachy for Expression open, which showed a background job restoring 
the type hierachy for Expression. I pressed "cancel" (in the progress view) 
and tried to open another type hierarchy on a different class. The UI seemed 
to block forever with a busy cursor. Had to kill Eclispe. I will attach the 
thread dump.
Comment 5 Darin Wright CLA 2005-05-06 13:03:47 EDT
Created attachment 20783 [details]
thread dump
Comment 6 Jerome Lanneluc CLA 2005-05-09 03:31:45 EDT
*** Bug 93995 has been marked as a duplicate of this bug. ***
Comment 7 Jerome Lanneluc CLA 2005-05-09 05:18:47 EDT
Thanks Darin.

Fixed IndexBasedHierarchyBuilder#searchAllPossibleSubTypes(...) to use the
characters between the last $ and the ".class" as the type name for a local or
anonymous type (and not an empty name as it used to be).

Added regression test TypeHierarchyTests#testAnonymousType7().
Comment 8 Frederic Fusier CLA 2005-05-12 11:20:47 EDT
Verified for 3.1 M7 using build I20050509-2010 + jdt.core HEAD.