Bug 81762 - [model] AIOOB in breakpoints view
Summary: [model] AIOOB in breakpoints view
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.1   Edit
Hardware: All All
: P3 normal (vote)
Target Milestone: 3.1 M5   Edit
Assignee: Jerome Lanneluc CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-12-21 19:11 EST by Brock Janiczak CLA
Modified: 2005-02-15 06:27 EST (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Brock Janiczak CLA 2004-12-21 19:11:59 EST
Version: 3.1.0
Build id: 200412210800

When opening up my workspace i got the following exception.  Removing all
breakpoints and restarting fixed the problem.  Sorry, no steps to reproduce.

java.lang.ArrayIndexOutOfBoundsException: 170
    at
org.eclipse.jdt.internal.core.util.MementoTokenizer.nextToken(MementoTokenizer.java:48)
    at
org.eclipse.jdt.internal.core.ClassFile.getHandleFromMemento(ClassFile.java:378)
    at
org.eclipse.jdt.internal.core.JavaElement.getHandleFromMemento(JavaElement.java:312)
    at
org.eclipse.jdt.internal.core.PackageFragment.getHandleFromMemento(PackageFragment.java:247)
    at
org.eclipse.jdt.internal.core.JavaElement.getHandleFromMemento(JavaElement.java:312)
    at
org.eclipse.jdt.internal.core.PackageFragmentRoot.getHandleFromMemento(PackageFragmentRoot.java:505)
    at
org.eclipse.jdt.internal.core.JavaProject.getHandleFromMemento(JavaProject.java:1492)
    at
org.eclipse.jdt.internal.core.JavaElement.getHandleFromMemento(JavaElement.java:312)
    at
org.eclipse.jdt.internal.core.JavaModel.getHandleFromMemento(JavaModel.java:173)
    at
org.eclipse.jdt.internal.core.JavaElement.getHandleFromMemento(JavaElement.java:312)
    at org.eclipse.jdt.core.JavaCore.create(JavaCore.java:1088)
    at org.eclipse.jdt.core.JavaCore.create(JavaCore.java:1065)
    at
org.eclipse.jdt.internal.debug.ui.BreakpointUtils.getType(BreakpointUtils.java:93)
    at
org.eclipse.jdt.internal.debug.ui.BreakpointUtils.getMember(BreakpointUtils.java:127)
    at
org.eclipse.jdt.internal.debug.ui.JDIModelPresentation.getLineBreakpointText(JDIModelPresentation.java:1474)
    at
org.eclipse.jdt.internal.debug.ui.JDIModelPresentation.getBreakpointText(JDIModelPresentation.java:1397)
    at
org.eclipse.jdt.internal.debug.ui.JDIModelPresentation.getText(JDIModelPresentation.java:232)
    at
org.eclipse.debug.internal.ui.LazyModelPresentation.getText(LazyModelPresentation.java:157)
    at
org.eclipse.debug.internal.ui.DelegatingModelPresentation.getText(DelegatingModelPresentation.java:160)
    at
org.eclipse.debug.internal.ui.views.breakpoints.BreakpointsView$4.getText(BreakpointsView.java:178)
    at
org.eclipse.debug.internal.ui.views.breakpoints.BreakpointsSorter.compare(BreakpointsSorter.java:99)
    at org.eclipse.jface.viewers.ViewerSorter$1.compare(ViewerSorter.java:177)
    at java.util.Arrays.mergeSort(Unknown Source)
    at java.util.Arrays.sort(Unknown Source)
    at org.eclipse.jface.viewers.ViewerSorter.sort(ViewerSorter.java:175)
    at
org.eclipse.jface.viewers.StructuredViewer.getSortedChildren(StructuredViewer.java:827)
    at
org.eclipse.jface.viewers.AbstractTreeViewer.updateChildren(AbstractTreeViewer.java:1532)
    at
org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1109)
    at
org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1086)
    at
org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1047)
    at
org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1034)
    at org.eclipse.jface.viewers.StructuredViewer$7.run(StructuredViewer.java:1172)
    at
org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1109)
    at
org.eclipse.jface.viewers.CheckboxTreeViewer.preservingSelection(CheckboxTreeViewer.java:365)
    at
org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1170)
    at
org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1129)
    at
org.eclipse.debug.internal.ui.views.breakpoints.BreakpointsView$2.refresh(BreakpointsView.java:121)
    at
org.eclipse.jface.viewers.ContentViewer.setLabelProvider(ContentViewer.java:279)
    at
org.eclipse.jface.viewers.StructuredViewer.setLabelProvider(StructuredViewer.java:1690)
    at org.eclipse.jface.viewers.TreeViewer.setLabelProvider(TreeViewer.java:257)
    at
org.eclipse.debug.internal.ui.views.breakpoints.BreakpointsView.createViewer(BreakpointsView.java:161)
    at
org.eclipse.debug.ui.AbstractDebugView$ViewerPage.createControl(AbstractDebugView.java:254)
    at
org.eclipse.debug.ui.AbstractDebugView.createDefaultPage(AbstractDebugView.java:342)
    at org.eclipse.ui.part.PageBookView.createPartControl(PageBookView.java:388)
    at
org.eclipse.debug.ui.AbstractDebugView.createPartControl(AbstractDebugView.java:303)
    at
org.eclipse.debug.internal.ui.views.breakpoints.BreakpointsView.createPartControl(BreakpointsView.java:98)
    at org.eclipse.ui.internal.PartPane$2.run(PartPane.java:148)
    at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1044)
    at org.eclipse.core.runtime.Platform.run(Platform.java:747)
    at org.eclipse.ui.internal.PartPane.doCreateChildControl(PartPane.java:144)
    at org.eclipse.ui.internal.ViewPane.doCreateChildControl(ViewPane.java:135)
    at org.eclipse.ui.internal.PartPane.createChildControl(PartPane.java:349)
    at org.eclipse.ui.internal.ViewFactory$1.run(ViewFactory.java:398)
    at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1044)
    at org.eclipse.core.runtime.Platform.run(Platform.java:747)
    at org.eclipse.ui.internal.ViewFactory.busyRestoreView(ViewFactory.java:287)
    at org.eclipse.ui.internal.ViewFactory$2.run(ViewFactory.java:582)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
    at org.eclipse.ui.internal.ViewFactory.restoreView(ViewFactory.java:579)
    at
org.eclipse.ui.internal.ViewFactory$ViewReference.getPart(ViewFactory.java:106)
    at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:329)
    at org.eclipse.ui.internal.ViewPane.setVisible(ViewPane.java:607)
    at
org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:126)
    at
org.eclipse.ui.internal.presentations.newapi.PresentablePartFolder.select(PresentablePartFolder.java:266)
    at
org.eclipse.ui.internal.presentations.newapi.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65)
    at
org.eclipse.ui.internal.presentations.newapi.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:381)
    at
org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1034)
    at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:535)
    at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:472)
    at
org.eclipse.ui.internal.PartSashContainer.createControl(PartSashContainer.java:477)
    at
org.eclipse.ui.internal.PerspectiveHelper.activate(PerspectiveHelper.java:230)
    at org.eclipse.ui.internal.Perspective.onActivate(Perspective.java:779)
    at org.eclipse.ui.internal.WorkbenchPage.onActivate(WorkbenchPage.java:2028)
    at org.eclipse.ui.internal.WorkbenchWindow$4.run(WorkbenchWindow.java:2158)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
    at
org.eclipse.ui.internal.WorkbenchWindow.setActivePage(WorkbenchWindow.java:2144)
    at
org.eclipse.ui.internal.WorkbenchWindow.restoreState(WorkbenchWindow.java:1676)
    at org.eclipse.ui.internal.Workbench.restoreState(Workbench.java:1414)
    at org.eclipse.ui.internal.Workbench.access$10(Workbench.java:1370)
    at org.eclipse.ui.internal.Workbench$15.run(Workbench.java:1273)
    at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1044)
    at org.eclipse.core.runtime.Platform.run(Platform.java:747)
    at org.eclipse.ui.internal.Workbench.restoreState(Workbench.java:1207)
    at
org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(WorkbenchConfigurer.java:171)
    at
org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:659)
    at org.eclipse.ui.internal.Workbench.init(Workbench.java:886)
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1516)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:285)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:144)
    at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:102)
    at
org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:220)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:273)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:129)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.core.launcher.Main.basicRun(Main.java:185)
    at org.eclipse.core.launcher.Main.run(Main.java:710)
    at org.eclipse.core.launcher.Main.main(Main.java:694)
Comment 1 Darin Wright CLA 2004-12-22 08:35:06 EST
Moving to JCORE, exception is in handle restoration code.
Comment 2 Jerome Lanneluc CLA 2005-01-04 07:11:51 EST
It looks like the memento was bogus. Will add a protection against
ArrayIndexOutOfBoundsException.
Comment 3 Jerome Lanneluc CLA 2005-01-04 11:31:21 EST
Protected all calls to MementoTokenizer#nextToken() with a hasMoreTokens() check.
Added regression test MementoTests#testInvalidMemento()
Comment 4 David Audel CLA 2005-02-15 06:27:41 EST
Verified in I20050214-0927