Bug 103410 - ConcurrentModificationException initializing PDEClasspathContainer
Summary: ConcurrentModificationException initializing PDEClasspathContainer
Status: RESOLVED FIXED
Alias: None
Product: PDE
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 3.1   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.1.1   Edit
Assignee: PDE-UI-Inbox CLA Friend
QA Contact:
URL:
Whiteboard:
Keywords:
: 104471 (view as bug list)
Depends on:
Blocks:
 
Reported: 2005-07-11 18:04 EDT by Igor Fedorenko CLA Friend
Modified: 2005-07-26 14:45 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Igor Fedorenko CLA Friend 2005-07-11 18:04:41 EDT
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)
Comment 1 Olivier Thomann CLA Friend 2005-07-11 21:20:50 EDT
Moving to PDE/UI
Comment 2 Wassim Melhem CLA Friend 2005-07-11 22:31:46 EDT
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.
Comment 3 Konrad Kolosowski CLA Friend 2005-07-26 14:45:05 EDT
*** Bug 104471 has been marked as a duplicate of this bug. ***