Community
Participate
Working Groups
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)
Moving to JCORE, exception is in handle restoration code.
It looks like the memento was bogus. Will add a protection against ArrayIndexOutOfBoundsException.
Protected all calls to MementoTokenizer#nextToken() with a hasMoreTokens() check. Added regression test MementoTests#testInvalidMemento()
Verified in I20050214-0927