Community
Participate
Eclipse IDE
Not sure if it is PDE or JDT to blame, but I occasionally get this exception right after I start Eclipse 3.1. I'm using latest IBM J9 VM java version "1.4.2" Java(TM) 2 Runtime Environment, Standard Edition (build 2.2) IBM J9SE VM (build 2.2, J2RE 1.4.2 IBM J9 2.2 Windows XP x86-32 j9n142-20050609 (JIT enabled) J9VM - 20050524_1738_lHdSMR JIT - r7_level20050518_1803) The stack trace which I believe comes from both colliding threads !ENTRY org.eclipse.core.runtime 4 2 2005-07-11 17:50:45.254 !MESSAGE An internal error occurred during: "Initializing Java tooling". !STACK 0 java.util.ConcurrentModificationException: concurrent access to HashMap attempted by Thread[Worker-2,5,main] at java.util.HashMap.onExit(HashMap.java:223) at java.util.HashMap.transfer(HashMap.java:558) at java.util.HashMap.resize(HashMap.java:541) at java.util.HashMap.addEntry(HashMap.java:901) at java.util.HashMap.put(HashMap.java:474) at org.eclipse.pde.internal.core.PDEClasspathContainer.getDiscouragedRule(PDEClasspathContainer.java:129) at org.eclipse.pde.internal.core.PDEClasspathContainer.getAccessRules(PDEClasspathContainer.java:110) at org.eclipse.pde.internal.core.PDEClasspathContainer.addLibraryEntry(PDEClasspathContainer.java:95) at org.eclipse.pde.internal.core.PDEClasspathContainer.addExternalPlugin(PDEClasspathContainer.java:67) at org.eclipse.pde.internal.core.RequiredPluginsClasspathContainer.addPlugin(RequiredPluginsClasspathContainer.java:239) at org.eclipse.pde.internal.core.RequiredPluginsClasspathContainer.addDependency(RequiredPluginsClasspathContainer.java:211) at org.eclipse.pde.internal.core.RequiredPluginsClasspathContainer.addDependency(RequiredPluginsClasspathContainer.java:224) at org.eclipse.pde.internal.core.RequiredPluginsClasspathContainer.addHostPlugin(RequiredPluginsClasspathContainer.java:316) at org.eclipse.pde.internal.core.RequiredPluginsClasspathContainer.computePluginEntries(RequiredPluginsClasspathContainer.java:124) at org.eclipse.pde.internal.core.RequiredPluginsClasspathContainer.getClasspathEntries(RequiredPluginsClasspathContainer.java:99) at org.eclipse.jdt.internal.core.JavaModelManager.containerPutIfInitializingWithSameEntries(JavaModelManager.java:297) at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3855) at org.eclipse.pde.internal.core.ModelEntry.updateClasspathContainer(ModelEntry.java:110) at org.eclipse.pde.internal.core.RequiredPluginsInitializer.initialize(RequiredPluginsInitializer.java:40) at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:1591) at org.eclipse.jdt.internal.core.JavaModelManager.initializeAllContainers(JavaModelManager.java:1551) at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:1038) at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1326) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:2039) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1947) at org.eclipse.jdt.internal.core.search.JavaSearchScope.add(JavaSearchScope.java:108) at org.eclipse.jdt.internal.core.search.JavaWorkspaceScope.initialize(JavaWorkspaceScope.java:84) at org.eclipse.jdt.internal.core.search.JavaSearchScope.<init>(JavaSearchScope.java:62) at org.eclipse.jdt.internal.core.search.JavaSearchScope.<init>(JavaSearchScope.java:58) at org.eclipse.jdt.internal.core.JavaModelManager.getWorkspaceScope(JavaModelManager.java:1421) at org.eclipse.jdt.internal.core.search.BasicSearchEngine.createWorkspaceScope(BasicSearchEngine.java:157) at org.eclipse.jdt.core.search.SearchEngine.createWorkspaceScope(SearchEngine.java:392) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:2623) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:76) !ENTRY org.eclipse.ui 4 4 2005-07-11 17:50:45.269 !MESSAGE Unhandled event loop exception !ENTRY org.eclipse.ui 4 0 2005-07-11 17:50:45.269 !MESSAGE concurrent access to HashMap attempted by Thread[main,6,main] !STACK 0 java.util.ConcurrentModificationException: concurrent access to HashMap attempted by Thread[main,6,main] at java.util.HashMap.onEntry(HashMap.java:211) at java.util.HashMap.transfer(HashMap.java:554) at java.util.HashMap.resize(HashMap.java:541) at java.util.HashMap.addEntry(HashMap.java:901) at java.util.HashMap.put(HashMap.java:474) at org.eclipse.pde.internal.core.PDEClasspathContainer.getDiscouragedRule(PDEClasspathContainer.java:129) at org.eclipse.pde.internal.core.PDEClasspathContainer.getAccessRules(PDEClasspathContainer.java:110) at org.eclipse.pde.internal.core.PDEClasspathContainer.addLibraryEntry(PDEClasspathContainer.java:95) at org.eclipse.pde.internal.core.PDEClasspathContainer.addExternalPlugin(PDEClasspathContainer.java:67) at org.eclipse.pde.internal.core.RequiredPluginsClasspathContainer.addPlugin(RequiredPluginsClasspathContainer.java:239) at org.eclipse.pde.internal.core.RequiredPluginsClasspathContainer.addDependency(RequiredPluginsClasspathContainer.java:211) at org.eclipse.pde.internal.core.RequiredPluginsClasspathContainer.addDependency(RequiredPluginsClasspathContainer.java:224) at org.eclipse.pde.internal.core.RequiredPluginsClasspathContainer.computePluginEntries(RequiredPluginsClasspathContainer.java:130) at org.eclipse.pde.internal.core.RequiredPluginsClasspathContainer.getClasspathEntries(RequiredPluginsClasspathContainer.java:99) at org.eclipse.jdt.internal.core.JavaModelManager.containerPutIfInitializingWithSameEntries(JavaModelManager.java:297) at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3855) at org.eclipse.pde.internal.core.ModelEntry.updateClasspathContainer(ModelEntry.java:110) at org.eclipse.pde.internal.core.RequiredPluginsInitializer.initialize(RequiredPluginsInitializer.java:40) at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:1591) at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:1040) at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1326) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:2039) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1947) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots(DeltaProcessingState.java:265) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:715) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1719) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3760) at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3934) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize(JREContainerInitializer.java:54) at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:1591) at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:1040) at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1326) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:2039) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1947) at org.eclipse.jdt.internal.core.JavaModelManager.determineIfOnClasspath(JavaModelManager.java:611) at org.eclipse.jdt.internal.core.JavaModelManager.create(JavaModelManager.java:500) at org.eclipse.jdt.internal.core.JavaModelManager.create(JavaModelManager.java:429) at org.eclipse.jdt.core.JavaCore.create(JavaCore.java:1240) at org.eclipse.jdt.internal.ui.ResourceAdapterFactory.getAdapter(ResourceAdapterFactory.java:32) at org.eclipse.core.internal.runtime.AdapterFactoryProxy.getAdapter(AdapterFactoryProxy.java:57) at org.eclipse.core.internal.runtime.AdapterManager.getAdapter(AdapterManager.java:248) at org.eclipse.core.runtime.PlatformObject.getAdapter(PlatformObject.java:65) at org.eclipse.jdt.internal.ui.filters.NamePatternFilter.select(NamePatternFilter.java:62) at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart$PackageExplorerProblemTreeViewer.filter(PackageExplorerPart.java:324) at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart$PackageExplorerProblemTreeViewer.isExpandable(PackageExplorerPart.java:313) at org.eclipse.jface.viewers.AbstractTreeViewer.updatePlus(AbstractTreeViewer.java:1845) at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:536) at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:514) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69) at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:494) at org.eclipse.jface.viewers.AbstractTreeViewer.handleTreeExpand(AbstractTreeViewer.java:948) at org.eclipse.jface.viewers.AbstractTreeViewer$4.treeExpanded(AbstractTreeViewer.java:959) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:180) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:843) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:867) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:852) at org.eclipse.swt.widgets.Tree.wmNotifyChild(Tree.java:3704) at org.eclipse.swt.widgets.Control.WM_NOTIFY(Control.java:3568) at org.eclipse.swt.widgets.Composite.WM_NOTIFY(Composite.java:1035) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3089) at org.eclipse.swt.widgets.Display.windowProc(Display.java:3706) at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:1580) at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:219) at org.eclipse.swt.widgets.Tree.WM_LBUTTONDOWN(Tree.java:2815) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3071) at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:2391) at org.eclipse.swt.widgets.Display.windowProc(Display.java:3706) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1656) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2711) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1699) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1663) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:367) 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:226) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:376) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:163) 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:334) at org.eclipse.core.launcher.Main.basicRun(Main.java:278) at org.eclipse.core.launcher.Main.run(Main.java:973) at org.eclipse.core.launcher.Main.main(Main.java:948)
Moving to PDE/UI
since HashMap is not synchronized, we have to synchronize the getter method because it performs both put() and get() on the hashmap in some cases.
*** Bug 104471 has been marked as a duplicate of this bug. ***