Bug 263094 - Deadlock reading/changing java classpath entries
Summary: Deadlock reading/changing java classpath entries
Status: VERIFIED DUPLICATE of bug 249930
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.4.2   Edit
Hardware: PC Windows XP
: P3 critical (vote)
Target Milestone: 3.5 M6   Edit
Assignee: Jerome Lanneluc CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-01-30 15:36 EST by Robert Taniwa CLA
Modified: 2009-03-10 09:21 EDT (History)
3 users (show)

See Also:


Attachments
Reformated stack trace (9.49 KB, text/plain)
2009-02-02 05:12 EST, Jerome Lanneluc CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Robert Taniwa CLA 2009-01-30 15:36:21 EST
In our adopter product we have a headless batch tool that is experiencing fairly frequent deadlocks. This appears to have started only recently, and looks like it could be related to contention in the Java project/classpath area. Here is a stack obtained via jdb of the hang, and we will be attempting to generate a javacore:

main:
  [1] java.lang.Object.wait (native method)
  [2] java.lang.Object.wait (Object.java:196)
  [3] org.eclipse.core.internal.jobs.Semaphore.acquire (Semaphore.java:38)
  [4] org.eclipse.core.internal.jobs.OrderedLock.doAcquire (OrderedLock.java:169)
  [5] org.eclipse.core.internal.jobs.OrderedLock.acquire (OrderedLock.java:105)
  [6] org.eclipse.core.internal.jobs.OrderedLock.acquire (OrderedLock.java:82)
  [7] org.eclipse.core.internal.resources.WorkManager.checkIn (WorkManager.java:118
)
  [8] org.eclipse.core.internal.resources.Workspace.prepareOperation (Workspace.jav
a:1,747)
  [9] org.eclipse.core.internal.resources.File.setContents (File.java:364)
  [10] org.eclipse.jdt.internal.core.JavaProject.setSharedProperty (JavaProject.jav
a:2,944)
  [11] org.eclipse.jdt.internal.core.JavaProject.writeFileEntries (JavaProject.java
:2,710)
  [12] org.eclipse.jdt.internal.core.JavaModelManager$7.run (JavaModelManager.java:
1,202)
  [13] org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1,800)
  [14] org.eclipse.jdt.internal.core.JavaModelManager$PerProjectInfo.writeAndCacheC
lasspath (JavaModelManager.java:1,196)
  [15] org.eclipse.jdt.internal.core.SetClasspathOperation.executeOperation (SetCla
sspathOperation.java:61)
  [16] org.eclipse.jdt.internal.core.JavaModelOperation.run (JavaModelOperation.jav
a:709)
  [17] org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1,800)
  [18] org.eclipse.jdt.internal.core.JavaModelOperation.runOperation (JavaModelOper
ation.java:775)
  [19] org.eclipse.jdt.internal.core.JavaProject.setRawClasspath (JavaProject.java:
2,874)
  [20] org.eclipse.jdt.internal.core.JavaProject.setRawClasspath (JavaProject.java:
2,905)
  [21] org.eclipse.jst.j2ee.project.facet.J2EEFacetInstallDelegate.addToClasspath (
J2EEFacetInstallDelegate.java:57)
  [22] org.eclipse.jst.j2ee.ejb.project.facet.EjbFacetInstallDelegate.execute (EjbF
acetInstallDelegate.java:146)
  [23] org.eclipse.wst.common.project.facet.core.internal.FacetedProject.callDelega
te (FacetedProject.java:1,394)
  [24] org.eclipse.wst.common.project.facet.core.internal.FacetedProject.modifyInte
rnal (FacetedProject.java:401)
  [25] org.eclipse.wst.common.project.facet.core.internal.FacetedProject.mergeChang
esInternal (FacetedProject.java:1,134)
  [26] org.eclipse.wst.common.project.facet.core.internal.FacetedProject.access$2 (
FacetedProject.java:1,070)
  [27] org.eclipse.wst.common.project.facet.core.internal.FacetedProject$1.run (Fac
etedProject.java:309)
  [28] org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1,800)
  [29] org.eclipse.wst.common.project.facet.core.internal.FacetedProject.modify (Fa
cetedProject.java:319)
  [30] org.eclipse.wst.common.componentcore.internal.operation.FacetProjectCreation
Operation.execute (FacetProjectCreationOperation.java:83)
  [31] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl$1.run (DataModelPausibleOperationImpl.java:376)
  [32] org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1,800)
  [33] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl.runOperation (DataModelPausibleOperationImpl.java:401)
  [34] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl.runOperation (DataModelPausibleOperationImpl.java:352)
  [35] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl.doExecute (DataModelPausibleOperationImpl.java:242)
  [36] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl.executeImpl (DataModelPausibleOperationImpl.java:214)
  [37] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl.cacheThreadAndContinue (DataModelPausibleOperationImpl.java:89)
  [38] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl.execute (DataModelPausibleOperationImpl.java:202)
  [39] org.eclipse.jst.j2ee.internal.archive.operations.J2EEArtifactImportOperation
.createVirtualComponent (J2EEArtifactImportOperation.java:103)
  [40] org.eclipse.jst.j2ee.internal.archive.operations.J2EEArtifactImportOperation
.doExecute (J2EEArtifactImportOperation.java:90)
  [41] org.eclipse.jst.j2ee.internal.archive.operations.J2EEArtifactImportOperation
.execute (J2EEArtifactImportOperation.java:63)
  [42] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl$1.run (DataModelPausibleOperationImpl.java:376)
  [43] org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1,800)
  [44] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl.runOperation (DataModelPausibleOperationImpl.java:401)
  [45] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl.runOperation (DataModelPausibleOperationImpl.java:352)
  [46] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl.doExecute (DataModelPausibleOperationImpl.java:242)
  [47] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl.executeImpl (DataModelPausibleOperationImpl.java:214)
  [48] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl.cacheThreadAndContinue (DataModelPausibleOperationImpl.java:89)
  [49] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl.execute (DataModelPausibleOperationImpl.java:202)
  [50] org.eclipse.jst.j2ee.internal.archive.operations.EARComponentImportOperation
.doExecute (EARComponentImportOperation.java:136)
  [51] org.eclipse.jst.j2ee.internal.archive.operations.J2EEArtifactImportOperation
.execute (J2EEArtifactImportOperation.java:63)
  [52] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl$1.run (DataModelPausibleOperationImpl.java:376)
  [53] org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1,800)
  [54] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl.runOperation (DataModelPausibleOperationImpl.java:401)
  [55] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl.runOperation (DataModelPausibleOperationImpl.java:352)
  [56] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl.doExecute (DataModelPausibleOperationImpl.java:242)
  [57] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl.executeImpl (DataModelPausibleOperationImpl.java:214)
  [58] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl.cacheThreadAndContinue (DataModelPausibleOperationImpl.java:89)
  [59] org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperat
ionImpl.execute (DataModelPausibleOperationImpl.java:202)
.......

JIT Compilation Thread:
Signal Dispatcher:
  [1] com.ibm.misc.SignalDispatcher.waitForSignal (native method)
  [2] com.ibm.misc.SignalDispatcher.run (SignalDispatcher.java:54)
Gc Slave Thread:
State Data Manager:
  [1] java.lang.Thread.sleep (native method)
  [2] java.lang.Thread.sleep (Thread.java:850)
  [3] org.eclipse.osgi.internal.baseadaptor.StateManager.run (StateManager.java:297
)
  [4] java.lang.Thread.run (Thread.java:735)
Framework Event Dispatcher:
  [1] java.lang.Object.wait (native method)
  [2] java.lang.Object.wait (Object.java:167)
  [3] org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent (Ev
entManager.java:377)
  [4] org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run (EventManage
r.java:317)
Start Level Event Dispatcher:
  [1] java.lang.Object.wait (native method)
  [2] java.lang.Object.wait (Object.java:167)
  [3] org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent (Ev
entManager.java:377)
  [4] org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run (EventManage
r.java:317)
Worker-0:
  [1] org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.j
ava:1,870)
  [2] org.eclipse.jdt.internal.core.DeltaProcessingState.getRootInfos (DeltaProcess
ingState.java:265)
  [3] org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots (DeltaProc
essingState.java:210)
  [4] org.eclipse.jdt.internal.core.DeltaProcessor.processResourceDelta (DeltaProce
ssor.java:1,741)
  [5] org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged (DeltaProcessor.
java:1,923)
  [6] org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged (DeltaProc
essingState.java:431)
  [7] org.eclipse.core.internal.events.NotificationManager$2.run (NotificationManag
er.java:288)
  [8] org.eclipse.core.runtime.SafeRunner.run (SafeRunner.java:37)
  [9] org.eclipse.core.internal.events.NotificationManager.notify (NotificationMana
ger.java:282)
  [10] org.eclipse.core.internal.events.NotificationManager.broadcastChanges (Notif
icationManager.java:148)
  [11] org.eclipse.core.internal.resources.Workspace.broadcastPostChange (Workspace
.java:313)
  [12] org.eclipse.core.internal.resources.Workspace.endOperation (Workspace.java:1
,022)
  [13] org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1,809)
  [14] org.eclipse.core.internal.events.NotificationManager$NotifyJob.run (Notifica
tionManager.java:39)
  [15] org.eclipse.core.internal.jobs.Worker.run (Worker.java:55)
Worker-1:
  [1] java.lang.Object.wait (native method)
  [2] java.lang.Object.wait (Object.java:196)
  [3] org.eclipse.core.internal.jobs.ThreadJob.joinRun (ThreadJob.java:189)
  [4] org.eclipse.core.internal.jobs.ImplicitJobs.begin (ImplicitJobs.java:87)
  [5] org.eclipse.core.internal.jobs.JobManager.beginRule (JobManager.java:230)
  [6] org.eclipse.core.internal.utils.StringPoolJob.run (StringPoolJob.java:99)
  [7] org.eclipse.core.internal.jobs.Worker.run (Worker.java:55)
Thread-5:
  [1] java.lang.Thread.sleep (native method)
  [2] java.lang.Thread.sleep (Thread.java:850)
  [3] org.eclipse.wst.common.project.facet.core.runtime.internal.RuntimeManagerImpl
$RuntimeValidationThread.run (RuntimeManagerImpl.java:1,207)
Comment 1 Jerome Lanneluc CLA 2009-02-02 05:12:41 EST
Created attachment 124398 [details]
Reformated stack trace
Comment 2 Jerome Lanneluc CLA 2009-02-02 07:12:58 EST
It looks like a dup of bug 249930.
Comment 3 Jerome Lanneluc CLA 2009-02-06 06:34:23 EST
Marking as a dup of bug 249930 since after I provided a binary patch to Robert, he confirmed that the deadlock problem went away.

*** This bug has been marked as a duplicate of bug 249930 ***
Comment 4 Olivier Thomann CLA 2009-03-10 09:21:36 EDT
Verified.