Community
Participate
Working Groups
Build ID: M20071023-1652 Just happened when reopening eclipse. Stack trace follows. More information: java.util.ConcurrentModificationException: concurrent access to HashMap attempted by Thread[main,6,main] at java.util.HashMap.onExit(HashMap.java:217) at java.util.HashMap.transfer(HashMap.java:514) at java.util.HashMap.resize(HashMap.java:500) at java.util.HashMap.addEntry(HashMap.java:800) at java.util.HashMap.put(HashMap.java:441) at org.eclipse.jdt.core.JavaCore.getClasspathContainerInitializer(JavaCore.java:1597) at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:2199) at org.eclipse.jdt.internal.core.JavaModelManager$9.run(JavaModelManager.java:2148) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797) at org.eclipse.jdt.internal.core.JavaModelManager.initializeAllContainers(JavaModelManager.java:2164) at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:1544) at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1571) at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2558) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1848) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots(DeltaProcessingState.java:202) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:717) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:785) at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:4519) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize(JREContainerInitializer.java:69) at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:2218) at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:1546) at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1571) at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2558) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1848) at org.eclipse.jdt.internal.core.JavaProject.buildStructure(JavaProject.java:395) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:229) at org.eclipse.jdt.internal.core.Openable.openParent(Openable.java:423) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:218) at org.eclipse.jdt.internal.core.JarPackageFragment.generateInfos(JarPackageFragment.java:160) at org.eclipse.jdt.internal.core.Openable.openParent(Openable.java:423) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:218) at org.eclipse.jdt.internal.core.BinaryMember.generateInfos(BinaryMember.java:44) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:505) at org.eclipse.jdt.internal.core.BinaryType.getElementInfo(BinaryType.java:258) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:235) at org.eclipse.jdt.internal.core.JavaElement.exists(JavaElement.java:153) at org.eclipse.jdt.internal.debug.ui.BreakpointUtils.getMember(BreakpointUtils.java:137) at org.eclipse.jdt.internal.debug.ui.JDIModelPresentation.getLineBreakpointText(JDIModelPresentation.java:1530) at org.eclipse.jdt.internal.debug.ui.JDIModelPresentation.getBreakpointText(JDIModelPresentation.java:1444) at org.eclipse.jdt.internal.debug.ui.JDIModelPresentation.getText(JDIModelPresentation.java:216) at org.eclipse.debug.internal.ui.LazyModelPresentation.getText(LazyModelPresentation.java:163) at org.eclipse.debug.internal.ui.DelegatingModelPresentation.getText(DelegatingModelPresentation.java:162) at org.eclipse.debug.internal.ui.views.breakpoints.BreakpointsLabelProvider.getText(BreakpointsLabelProvider.java:86) at org.eclipse.debug.internal.ui.views.breakpoints.BreakpointsComparator.compare(BreakpointsComparator.java:94) at org.eclipse.jface.viewers.ViewerComparator$1.compare(ViewerComparator.java:187) at java.util.Arrays.mergeSort(Arrays.java:1299) at java.util.Arrays.mergeSort(Arrays.java:1310) at java.util.Arrays.sort(Arrays.java:1238) at org.eclipse.jface.viewers.ViewerComparator.sort(ViewerComparator.java:185) at org.eclipse.jface.viewers.AbstractTreeViewer.getSortedChildren(AbstractTreeViewer.java:604) at org.eclipse.jface.viewers.AbstractTreeViewer.updateChildren(AbstractTreeViewer.java:2500) at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1829) at org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:704) at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1804) at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1760) at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1746) at org.eclipse.jface.viewers.StructuredViewer$7.run(StructuredViewer.java:1433) at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1368) at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:390) at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1330) at org.eclipse.jface.viewers.CheckboxTreeViewer.preservingSelection(CheckboxTreeViewer.java:371) at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1431) at org.eclipse.jface.viewers.ColumnViewer.refresh(ColumnViewer.java:536) at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1390) at org.eclipse.debug.internal.ui.views.breakpoints.BreakpointsViewer.refresh(BreakpointsViewer.java:340) at org.eclipse.jface.viewers.ContentViewer.setLabelProvider(ContentViewer.java:282) at org.eclipse.jface.viewers.StructuredViewer.setLabelProvider(StructuredViewer.java:2074) at org.eclipse.jface.viewers.ColumnViewer.setLabelProvider(ColumnViewer.java:376) at org.eclipse.debug.internal.ui.views.breakpoints.BreakpointsView.createViewer(BreakpointsView.java:153) at org.eclipse.debug.ui.AbstractDebugView$ViewerPage.createControl(AbstractDebugView.java:270) at org.eclipse.debug.ui.AbstractDebugView.createDefaultPage(AbstractDebugView.java:358) at org.eclipse.ui.part.PageBookView.createPartControl(PageBookView.java:473) at org.eclipse.debug.ui.AbstractDebugView.createPartControl(AbstractDebugView.java:319) at org.eclipse.debug.internal.ui.views.breakpoints.BreakpointsView.createPartControl(BreakpointsView.java:129) at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:370) at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:227) at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:592) at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:299) at org.eclipse.ui.internal.ViewPane.setVisible(ViewPane.java:531) at org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:179) at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:268) at org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65) at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:400) at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1256) at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:668) at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:576) at org.eclipse.ui.internal.PartSashContainer.createControl(PartSashContainer.java:564) at org.eclipse.ui.internal.PerspectiveHelper.activate(PerspectiveHelper.java:270) at org.eclipse.ui.internal.Perspective.onActivate(Perspective.java:931) at org.eclipse.ui.internal.WorkbenchPage.onActivate(WorkbenchPage.java:2515) at org.eclipse.ui.internal.WorkbenchWindow$23.run(WorkbenchWindow.java:2837) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67) at org.eclipse.ui.internal.WorkbenchWindow.setActivePage(WorkbenchWindow.java:2818) at org.eclipse.ui.internal.WorkbenchWindow$17.runWithException(WorkbenchWindow.java:2135) at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3296) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2974) at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:801) at org.eclipse.ui.internal.Workbench$25.runWithException(Workbench.java:1342) at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3296) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2974) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2309) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219) at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:615) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447) at org.eclipse.equinox.launcher.Main.run(Main.java:1173) at org.eclipse.equinox.launcher.Main.main(Main.java:1148) ----------------------------------------------- eclipse.buildId=M20071023-1652 java.fullversion=J2RE 1.5.0 IBM J9 2.3 Linux x86-32 j9vmxi3223-20061001 (JIT enabled) J9VM - 20060915_08260_lHdSMR JIT - 20060908_1811_r8 GC - 20060906_AA BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=en_US Framework arguments: -showlocation Command-line arguments: -os linux -ws gtk -arch x86
Exception appears to be in the Java model
Created attachment 83610 [details] Proposed fix The fix consists in using a Hashtable (which is synchronized) instead of a HashMap. No regression tests can be written for this bug since this is a timing issue.
Fix released for 3.4M4
The fix is trivial. Without it, there is a risk of ConcurrentModificationException at startup which looks really bad to the end user (it prevented the Breakpoint view from opening in this case). Please approve for 3.3.2.
+1 for 3.3.2
Fix released for 3.3.2
Verified for 3.4 M4 using build I20071211-0010