Apparent deadlock on WorkspaceLock [message #192747] |
Wed, 11 February 2004 13:57  |
Eclipse User |
|
|
|
Originally posted by: jverhaeg.metamatrix.com
Not sure what we're doing wrong, but we are seeing an apparent deadlock
during builds sometimes. Although the instance ID's are different in the
thread dump below, it looks like there may be a deadlock shown in the dump
between the "ModelBuffer.Save" and "Snapshot" threads. Please let me know
if there is anything that sticks out in this dump as to what we might be
doing wrong or if there is some known issue, hopefully with a workaround
that would help me figure out a way around this:
Full thread dump Java HotSpot(TM) Client VM (1.4.1_03-b02 mixed mode):
"ModelBuffer.Save" prio=5 tid=0x0409F898 nid=0xb0c in Object.wait()
[5e2f000..5e2fd8c]
at java.lang.Object.wait(Native Method)
- waiting on <10305DD8> (a
org.eclipse.core.internal.utils.Semaphore)
at java.lang.Object.wait(Unknown Source)
at
org.eclipse.core.internal.utils.Semaphore.acquire(Semaphore. java:24)
- locked <10305DD8> (a org.eclipse.core.internal.utils.Semaphore)
at
org.eclipse.core.resources.WorkspaceLock.acquire(WorkspaceLo ck.java:49)
at
org.eclipse.ui.internal.UIWorkspaceLock.acquire(UIWorkspaceL ock.java:46)
at
org.eclipse.core.internal.resources.WorkManager.checkIn(Work Manager.java:79)
at
org.eclipse.core.internal.resources.Workspace.prepareOperati on(Workspace.jav
a:1558)
at
org.eclipse.core.internal.resources.Resource.refreshLocal(Re source.java:1147
)
at
org.eclipse.emf.ecore.resource.impl.URIConverterImpl$Workben chHelper.createP
latformResourceInputStream(URIConverterImpl.java:177)
at
org.eclipse.emf.ecore.resource.impl.URIConverterImpl.createP latformResourceI
nputStream(URIConverterImpl.java:442)
at
org.eclipse.emf.ecore.resource.impl.URIConverterImpl.createI nputStream(URICo
nverterImpl.java:395)
at
org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(Resour ceImpl.java:752)
...
"Snapshot" prio=5 tid=0x02F7A5B8 nid=0xe74 in Object.wait()
[5cef000..5cefd8c]
at java.lang.Object.wait(Native Method)
- waiting on <10305E48> (a
org.eclipse.core.internal.utils.Semaphore)
at java.lang.Object.wait(Unknown Source)
at
org.eclipse.core.internal.utils.Semaphore.acquire(Semaphore. java:24)
- locked <10305E48> (a org.eclipse.core.internal.utils.Semaphore)
at
org.eclipse.core.resources.WorkspaceLock.acquire(WorkspaceLo ck.java:49)
at
org.eclipse.ui.internal.UIWorkspaceLock.acquire(UIWorkspaceL ock.java:46)
at
org.eclipse.core.internal.resources.WorkManager.checkIn(Work Manager.java:79)
at
org.eclipse.core.internal.resources.Workspace.prepareOperati on(Workspace.jav
a:1558)
at
org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1593)
at
org.eclipse.core.internal.resources.DelayedSnapshotRunnable. runSnapshot(Dela
yedSnapshotRunnable.java:68)
at
org.eclipse.core.internal.resources.DelayedSnapshotRunnable. run(DelayedSnaps
hotRunnable.java:44)
at java.lang.Thread.run(Unknown Source)
"Java indexing" daemon prio=4 tid=0x032F32E8 nid=0xfc8 waiting on
condition [387f000..387fd8c]
at java.lang.Thread.sleep(Native Method)
at
org.eclipse.jdt.internal.core.search.processing.JobManager.r un(JobManager.ja
va:349)
at java.lang.Thread.run(Unknown Source)
"Decoration" daemon prio=2 tid=0x03F64DD0 nid=0xad8 in Object.wait()
[38bf000..38bfd8c]
at java.lang.Object.wait(Native Method)
- waiting on <12E1C7C8> (a
org.eclipse.ui.internal.decorators.DecorationScheduler)
at java.lang.Object.wait(Unknown Source)
at
org.eclipse.ui.internal.decorators.DecorationScheduler.next( DecorationSchedu
ler.java:214)
- locked <12E1C7C8> (a
org.eclipse.ui.internal.decorators.DecorationScheduler)
at
org.eclipse.ui.internal.decorators.DecorationScheduler$2.run (DecorationSched
uler.java:240)
at java.lang.Thread.run(Unknown Source)
"Signal Dispatcher" daemon prio=10 tid=0x009EF828 nid=0x8dc waiting on
condition [0..0]
"Finalizer" daemon prio=9 tid=0x0003E898 nid=0xe80 in Object.wait()
[2cbf000..2cbfd8c]
at java.lang.Object.wait(Native Method)
- waiting on <127C1BD8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <127C1BD8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)
"Reference Handler" daemon prio=10 tid=0x009AB248 nid=0xb70 in
Object.wait() [95f000..95fd8c]
at java.lang.Object.wait(Native Method)
- waiting on <127C1C40> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Unknown Source)
at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
- locked <127C1C40> (a java.lang.ref.Reference$Lock)
"main" prio=5 tid=0x00036210 nid=0x924 in Object.wait() [7e000..7fc40]
at java.lang.Object.wait(Native Method)
- waiting on <10910378> (a java.lang.Object)
at java.lang.Object.wait(Unknown Source)
...
"VM Thread" prio=5 tid=0x009EC710 nid=0x858 runnable
"VM Periodic Task Thread" prio=10 tid=0x009EE4E8 nid=0x51c waiting on
condition
"Suspend Checker Thread" prio=10 tid=0x009EEDD8 nid=0x848 runnable
Thank you,
John P. A. Verhaeg
|
|
|
|
|
|
Re: Apparent deadlock on WorkspaceLock [message #200122 is a reply to message #194279] |
Mon, 23 February 2004 15:21   |
Eclipse User |
|
|
|
Originally posted by: jverhaeg.metamatrix.com
This is a multi-part message in MIME format.
------=_NextPart_000_0011_01C3FA18.4FA7C520
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
I can't provide a complete stack trace, but this one shows more than the =
previous one:Full thread dump Java HotSpot(TM) Client VM (1.4.1_03-b02 =
mixed mode):
"ModelBuffer.Save" prio=3D5 tid=3D0x0409F898 nid=3D0xb0c in =
Object.wait() [5e2f000..5e2fd8c]
at java.lang.Object.wait(Native Method)
- waiting on <10305DD8> (a =
org.eclipse.core.internal.utils.Semaphore)
at java.lang.Object.wait(Unknown Source)
at =
org.eclipse.core.internal.utils.Semaphore.acquire(Semaphore. java:24)
- locked <10305DD8> (a =
org.eclipse.core.internal.utils.Semaphore)
at =
org.eclipse.core.resources.WorkspaceLock.acquire(WorkspaceLo ck.java:49)
at =
org.eclipse.ui.internal.UIWorkspaceLock.acquire(UIWorkspaceL ock.java:46)
at =
org.eclipse.core.internal.resources.WorkManager.checkIn(Work Manager.java:=
79)
at =
org.eclipse.core.internal.resources.Workspace.prepareOperati on(Workspace.=
java:1558)
at =
org.eclipse.core.internal.resources.Resource.refreshLocal(Re source.java:1=
147)
at =
org.eclipse.emf.ecore.resource.impl.URIConverterImpl$Workben chHelper.crea=
tePlatformResourceInputStream(URIConverterImpl.java:177)
at =
org.eclipse.emf.ecore.resource.impl.URIConverterImpl.createP latformResour=
ceInputStream(URIConverterImpl.java:442)
at =
org.eclipse.emf.ecore.resource.impl.URIConverterImpl.createI nputStream(UR=
IConverterImpl.java:395)
at =
org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(Resour ceImpl.java:7=
52)
at =
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSe=
tImpl.java:220)
at =
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceS=
etImpl.java:286)
at =
<ResourceSetImplementation>.getEObject(<ResourceSetImplementation >.java)
at =
org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java: 222)
at =
org.eclipse.emf.ecore.util.EcoreEList.resolveProxy(EcoreELis t.java:166)
at =
org.eclipse.emf.ecore.util.EcoreEList.resolve(EcoreEList.jav a:142)
at =
org.eclipse.emf.common.util.BasicEList.get(BasicEList.java:5 02)
at =
org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveHRefMany(XMLS aveImpl.java:=
930)
at =
org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveFeatures(XMLS aveImpl.java:=
646)
at =
<XmiSaveImplementation>.saveElementID(<XmiSaveImplementation >.java)
at =
org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveElement(XMLSa veImpl.java:4=
10)
at =
org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveContainedMany (XMLSaveImpl.=
java:952)
at =
org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveFeatures(XMLS aveImpl.java:=
626)
at =
<XmiSaveImplementation>.saveElementID(<XmiSaveImplementation >.java)
at =
org.eclipse.emf.ecore.xmi.impl.XMISaveImpl.writeTopObjects(X MISaveImpl.ja=
va:71)
at =
org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.traverse(XMLSaveI mpl.java:210)=
at =
org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.save(XMLSaveImpl. java:118)
at =
org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doSave(XMLRes ourceImpl.jav=
a:147)
at =
org.eclipse.emf.ecore.resource.impl.ResourceImpl.save(Resour ceImpl.java:7=
99)
"Snapshot" prio=3D5 tid=3D0x02F7A5B8 nid=3D0xe74 in Object.wait() =
[5cef000..5cefd8c]
at java.lang.Object.wait(Native Method)
- waiting on <10305E48> (a =
org.eclipse.core.internal.utils.Semaphore)
at java.lang.Object.wait(Unknown Source)
at =
org.eclipse.core.internal.utils.Semaphore.acquire(Semaphore. java:24)
- locked <10305E48> (a =
org.eclipse.core.internal.utils.Semaphore)
at =
org.eclipse.core.resources.WorkspaceLock.acquire(WorkspaceLo ck.java:49)
at =
org.eclipse.ui.internal.UIWorkspaceLock.acquire(UIWorkspaceL ock.java:46)
at =
org.eclipse.core.internal.resources.WorkManager.checkIn(Work Manager.java:=
79)
at =
org.eclipse.core.internal.resources.Workspace.prepareOperati on(Workspace.=
java:1558)
at =
org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1593)
at =
org.eclipse.core.internal.resources.DelayedSnapshotRunnable. runSnapshot(D=
elayedSnapshotRunnable.java:68)
at =
org.eclipse.core.internal.resources.DelayedSnapshotRunnable. run(DelayedSn=
apshotRunnable.java:44)
at java.lang.Thread.run(Unknown Source)
"Java indexing" daemon prio=3D4 tid=3D0x032F32E8 nid=3D0xfc8 waiting on =
condition [387f000..387fd8c]
at java.lang.Thread.sleep(Native Method)
at =
org.eclipse.jdt.internal.core.search.processing.JobManager.r un(JobManager=
..java:349)
at java.lang.Thread.run(Unknown Source)
"Decoration" daemon prio=3D2 tid=3D0x03F64DD0 nid=3D0xad8 in =
Object.wait() [38bf000..38bfd8c]
at java.lang.Object.wait(Native Method)
- waiting on <12E1C7C8> (a =
org.eclipse.ui.internal.decorators.DecorationScheduler)
at java.lang.Object.wait(Unknown Source)
at =
org.eclipse.ui.internal.decorators.DecorationScheduler.next( DecorationSch=
eduler.java:214)
- locked <12E1C7C8> (a =
org.eclipse.ui.internal.decorators.DecorationScheduler)
at =
org.eclipse.ui.internal.decorators.DecorationScheduler$2.run (DecorationSc=
heduler.java:240)
at java.lang.Thread.run(Unknown Source)
"Signal Dispatcher" daemon prio=3D10 tid=3D0x009EF828 nid=3D0x8dc =
waiting on condition [0..0]
"Finalizer" daemon prio=3D9 tid=3D0x0003E898 nid=3D0xe80 in =
Object.wait() [2cbf000..2cbfd8c]
at java.lang.Object.wait(Native Method)
- waiting on <127C1BD8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <127C1BD8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)
"Reference Handler" daemon prio=3D10 tid=3D0x009AB248 nid=3D0xb70 in =
Object.wait() [95f000..95fd8c]
at java.lang.Object.wait(Native Method)
- waiting on <127C1C40> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Unknown Source)
at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
- locked <127C1C40> (a java.lang.ref.Reference$Lock)
"main" prio=3D5 tid=3D0x00036210 nid=3D0x924 in Object.wait() =
[7e000..7fc40]
at java.lang.Object.wait(Native Method)
- waiting on <10910378> (a java.lang.Object)
at java.lang.Object.wait(Unknown Source)
at =
EDU.oswego.cs.dl.util.concurrent.LinkedQueue.take(LinkedQueu e.java:122)
- locked <10910378> (a java.lang.Object)
at java.io.InputStream.read(Unknown Source)
at java.io.InputStream.read(Unknown Source)
at =
org.eclipse.core.internal.localstore.FileSystemStore.transfe rStreams(File=
SystemStore.java:326)
- locked <12805748> (a [B)
at =
org.eclipse.core.internal.localstore.FileSystemStore.write(F ileSystemStor=
e.java:367)
at =
org.eclipse.core.internal.localstore.FileSystemResourceManag er.write(File=
SystemResourceManager.java:656)
at =
org.eclipse.core.internal.resources.File.internalSetContents (File.java:23=
8)
at =
org.eclipse.core.internal.resources.File.setContents(File.ja va:274) =
...
at =
org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(Worksp aceModifyOper=
ation.java:71)
at =
org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1595)
at =
org.eclipse.ui.actions.WorkspaceModifyOperation.run(Workspac eModifyOperat=
ion.java:85)
- locked <109104B8> ...
"VM Thread" prio=3D5 tid=3D0x009EC710 nid=3D0x858 runnable
"VM Periodic Task Thread" prio=3D10 tid=3D0x009EE4E8 nid=3D0x51c waiting =
on condition
"Suspend Checker Thread" prio=3D10 tid=3D0x009EEDD8 nid=3D0x848 runnable
"John Arthorne" <John_Arthorne@oti.com_> wrote in message =
news:402D548E.1090904@oti.com_...
> Both of those threads are waiting for the same lock. The lock is=20
> implemented as a semaphore queue, so each thread is actually waiting =
on=20
> a different java object monitor, but it is still the same lock they =
are=20
> queuing on. Can you provide the complete stack trace? Two threads =
have=20
> a "..." indicating something was omitted.
> --
>=20
> John P. A. Verhaeg wrote:
> > Not sure what we're doing wrong, but we are seeing an apparent =
deadlock
> > during builds sometimes. Although the instance ID's are different =
in the
> > thread dump below, it looks like there may be a deadlock shown in =
the dump
> > between the "ModelBuffer.Save" and "Snapshot" threads. Please let =
me know
> > if there is anything that sticks out in this dump as to what we =
might be
> > doing wrong or if there is some known issue, hopefully with a =
workaround
> > that would help me figure out a way around this:
> >=20
> > Full thread dump Java HotSpot(TM) Client VM (1.4.1_03-b02 mixed =
mode):
> >=20
> > "ModelBuffer.Save" prio=3D5 tid=3D0x0409F898 nid=3D0xb0c in =
Object.wait()
> > [5e2f000..5e2fd8c]
> > at java.lang.Object.wait(Native Method)
> > - waiting on <10305DD8> (a
> > org.eclipse.core.internal.utils.Semaphore)
> > at java.lang.Object.wait(Unknown Source)
> > at
> > org.eclipse.core.internal.utils.Semaphore.acquire(Semaphore. java:24)
> > - locked <10305DD8> (a =
org.eclipse.core.internal.utils.Semaphore)
> > at
> > =
org.eclipse.core.resources.WorkspaceLock.acquire(WorkspaceLo ck.java:49)
> > at
> > =
org.eclipse.ui.internal.UIWorkspaceLock.acquire(UIWorkspaceL ock.java:46)
> > at
> > =
org.eclipse.core.internal.resources.WorkManager.checkIn(Work Manager.java:=
79)
> > at
> > =
org.eclipse.core.internal.resources.Workspace.prepareOperati on(Workspace.=
jav
> > a:1558)
> > at
> > =
org.eclipse.core.internal.resources.Resource.refreshLocal(Re source.java:1=
147
> > )
> > at
> > =
org.eclipse.emf.ecore.resource.impl.URIConverterImpl$Workben chHelper.crea=
teP
> > latformResourceInputStream(URIConverterImpl.java:177)
> > at
> > =
org.eclipse.emf.ecore.resource.impl.URIConverterImpl.createP latformResour=
ceI
> > nputStream(URIConverterImpl.java:442)
> > at
> > =
org.eclipse.emf.ecore.resource.impl.URIConverterImpl.createI nputStream(UR=
ICo
> > nverterImpl.java:395)
> > at
> > =
org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(Resour ceImpl.java:7=
52)
> > ...
> >=20
> > "Snapshot" prio=3D5 tid=3D0x02F7A5B8 nid=3D0xe74 in =
Object.wait()
> > [5cef000..5cefd8c]
> > at java.lang.Object.wait(Native Method)
> > - waiting on <10305E48> (a
> > org.eclipse.core.internal.utils.Semaphore)
> > at java.lang.Object.wait(Unknown Source)
> > at
> > org.eclipse.core.internal.utils.Semaphore.acquire(Semaphore. java:24)
> > - locked <10305E48> (a =
org.eclipse.core.internal.utils.Semaphore)
> > at
> > =
org.eclipse.core.resources.WorkspaceLock.acquire(WorkspaceLo ck.java:49)
> > at
> > =
org.eclipse.ui.internal.UIWorkspaceLock.acquire(UIWorkspaceL ock.java:46)
> > at
> > =
org.eclipse.core.internal.resources.WorkManager.checkIn(Work Manager.java:=
79)
> > at
> > =
org.eclipse.core.internal.resources.Workspace.prepareOperati on(Workspace.=
jav
> > a:1558)
> > at
> > =
org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1593)
> > at
> > =
org.eclipse.core.internal.resources.DelayedSnapshotRunnable. runSnapshot(D=
ela
> > yedSnapshotRunnable.java:68)
> > at
> > =
org.eclipse.core.internal.resources.DelayedSnapshotRunnable. run(DelayedSn=
aps
> > hotRunnable.java:44)
> > at java.lang.Thread.run(Unknown Source)
> >=20
> > "Java indexing" daemon prio=3D4 tid=3D0x032F32E8 nid=3D0xfc8 =
waiting on
> > condition [387f000..387fd8c]
> > at java.lang.Thread.sleep(Native Method)
> > at
> > =
org.eclipse.jdt.internal.core.search.processing.JobManager.r un(JobManager=
..ja
> > va:349)
> > at java.lang.Thread.run(Unknown Source)
> >=20
> > "Decoration" daemon prio=3D2 tid=3D0x03F64DD0 nid=3D0xad8 in =
Object.wait()
> > [38bf000..38bfd8c]
> > at java.lang.Object.wait(Native Method)
> > - waiting on <12E1C7C8> (a
> > org.eclipse.ui.internal.decorators.DecorationScheduler)
> > at java.lang.Object.wait(Unknown Source)
> > at
> > =
org.eclipse.ui.internal.decorators.DecorationScheduler.next( DecorationSch=
edu
> > ler.java:214)
> > - locked <12E1C7C8> (a
> > org.eclipse.ui.internal.decorators.DecorationScheduler)
> > at
> > =
org.eclipse.ui.internal.decorators.DecorationScheduler$2.run (DecorationSc=
hed
> > uler.java:240)
> > at java.lang.Thread.run(Unknown Source)
> >=20
> > "Signal Dispatcher" daemon prio=3D10 tid=3D0x009EF828 =
nid=3D0x8dc waiting on
> > condition [0..0]
> >=20
> > "Finalizer" daemon prio=3D9 tid=3D0x0003E898 nid=3D0xe80 in =
Object.wait()
> > [2cbf000..2cbfd8c]
> > at java.lang.Object.wait(Native Method)
> > - waiting on <127C1BD8> (a =
java.lang.ref.ReferenceQueue$Lock)
> > at java.lang.ref.ReferenceQueue.remove(Unknown Source)
> > - locked <127C1BD8> (a java.lang.ref.ReferenceQueue$Lock)
> > at java.lang.ref.ReferenceQueue.remove(Unknown Source)
> > at java.lang.ref.Finalizer$FinalizerThread.run(Unknown =
Source)
> >=20
> > "Reference Handler" daemon prio=3D10 tid=3D0x009AB248 =
nid=3D0xb70 in
> > Object.wait() [95f000..95fd8c]
> > at java.lang.Object.wait(Native Method)
> > - waiting on <127C1C40> (a java.lang.ref.Reference$Lock)
> > at java.lang.Object.wait(Unknown Source)
> > at java.lang.ref.Reference$ReferenceHandler.run(Unknown =
Source)
> > - locked <127C1C40> (a java.lang.ref.Reference$Lock)
> >=20
> > "main" prio=3D5 tid=3D0x00036210 nid=3D0x924 in Object.wait() =
[7e000..7fc40]
> > at java.lang.Object.wait(Native Method)
> > - waiting on <10910378> (a java.lang.Object)
> > at java.lang.Object.wait(Unknown Source)
> > ...
> >=20
> > "VM Thread" prio=3D5 tid=3D0x009EC710 nid=3D0x858 runnable
> >=20
> > "VM Periodic Task Thread" prio=3D10 tid=3D0x009EE4E8 nid=3D0x51c =
waiting on
> > condition
> >=20
> > "Suspend Checker Thread" prio=3D10 tid=3D0x009EEDD8 nid=3D0x848 =
runnable
> >=20
> > Thank you,
> >=20
> > John P. A. Verhaeg
> >=20
> >=20
>
------=_NextPart_000_0011_01C3FA18.4FA7C520
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2800.1400" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY>
<DIV><PRE>I can't provide a complete stack trace, but this one shows =
more than the previous one:</PRE><PRE> </PRE><PRE>Full thread dump =
Java HotSpot(TM) Client VM (1.4.1_03-b02 mixed mode):
"ModelBuffer.Save" prio=3D5 tid=3D0x0409F898 nid=3D0xb0c in =
Object.wait() [5e2f000..5e2fd8c]
at java.lang.Object.wait(Native Method)
- waiting on <10305DD8> (a =
org.eclipse.core.internal.utils.Semaphore)
at java.lang.Object.wait(Unknown Source)
at =
org.eclipse.core.internal.utils.Semaphore.acquire(Semaphore. java:24)
- locked <10305DD8> (a =
org.eclipse.core.internal.utils.Semaphore)
at =
org.eclipse.core.resources.WorkspaceLock.acquire(WorkspaceLo ck.java:49)
at =
org.eclipse.ui.internal.UIWorkspaceLock.acquire(UIWorkspaceL ock.java:46)
at =
org.eclipse.core.internal.resources.WorkManager.checkIn(Work Manager.java:=
79)
at =
org.eclipse.core.internal.resources.Workspace.prepareOperati on(Workspace.=
java:1558)
at =
org.eclipse.core.internal.resources.Resource.refreshLocal(Re source.java:1=
147)
at =
org.eclipse.emf.ecore.resource.impl.URIConverterImpl$Workben chHelper.crea=
tePlatformResourceInputStream(URIConverterImpl.java:177)
at =
org.eclipse.emf.ecore.resource.impl.URIConverterImpl.createP latformResour=
ceInputStream(URIConverterImpl.java:442)
at =
org.eclipse.emf.ecore.resource.impl.URIConverterImpl.createI nputStream(UR=
IConverterImpl.java:395)
at =
org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(Resour ceImpl.java:7=
52)
at =
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSe=
tImpl.java:220)
at =
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceS=
etImpl.java:286)
at =
<ResourceSetImplementation>.getEObject(< ;ResourceSetImplementatio=
n>.java)
at =
org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java: 222)
at =
org.eclipse.emf.ecore.util.EcoreEList.resolveProxy(EcoreELis t.java:166)
at =
org.eclipse.emf.ecore.util.EcoreEList.resolve(EcoreEList.jav a:142)
at =
org.eclipse.emf.common.util.BasicEList.get(BasicEList.java:5 02)
at =
org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveHRefMany(XMLS aveImpl.java:=
930)
at =
org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveFeatures(XMLS aveImpl.java:=
646)
at =
<XmiSaveImplementation>.saveElementID(< XmiSaveImplementation>=
..java)
at =
org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveElement(XMLSa veImpl.java:4=
10)
at =
org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveContainedMany (XMLSaveImpl.=
java:952)
at =
org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveFeatures(XMLS aveImpl.java:=
626)
at =
<XmiSaveImplementation>.saveElementID(< XmiSaveImplementation>=
..java)
at =
org.eclipse.emf.ecore.xmi.impl.XMISaveImpl.writeTopObjects(X MISaveImpl.ja=
va:71)
at =
org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.traverse(XMLSaveI mpl.java:210)=
at =
org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.save(XMLSaveImpl. java:118)
at =
org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doSave(XMLRes ourceImpl.jav=
a:147)
at =
org.eclipse.emf.ecore.resource.impl.ResourceImpl.save(Resour ceImpl.java:7=
99)
"Snapshot" prio=3D5 tid=3D0x02F7A5B8 nid=3D0xe74 in Object.wait() =
[5cef000..5cefd8c]
at java.lang.Object.wait(Native Method)
- waiting on <10305E48> (a =
org.eclipse.core.internal.utils.Semaphore)
at java.lang.Object.wait(Unknown Source)
at =
org.eclipse.core.internal.utils.Semaphore.acquire(Semaphore. java:24)
- locked <10305E48> (a =
org.eclipse.core.internal.utils.Semaphore)
at =
org.eclipse.core.resources.WorkspaceLock.acquire(WorkspaceLo ck.java:49)
at =
org.eclipse.ui.internal.UIWorkspaceLock.acquire(UIWorkspaceL ock.java:46)
at =
org.eclipse.core.internal.resources.WorkManager.checkIn(Work Manager.java:=
79)
at =
org.eclipse.core.internal.resources.Workspace.prepareOperati on(Workspace.=
java:1558)
at =
org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1593)
at =
org.eclipse.core.internal.resources.DelayedSnapshotRunnable. runSnapshot(D=
elayedSnapshotRunnable.java:68)
at =
org.eclipse.core.internal.resources.DelayedSnapshotRunnable. run(DelayedSn=
apshotRunnable.java:44)
at java.lang.Thread.run(Unknown Source)
"Java indexing" daemon prio=3D4 tid=3D0x032F32E8 nid=3D0xfc8 waiting on =
condition [387f000..387fd8c]
at java.lang.Thread.sleep(Native Method)
at =
org.eclipse.jdt.internal.core.search.processing.JobManager.r un(JobManager=
..java:349)
at java.lang.Thread.run(Unknown Source)
"Decoration" daemon prio=3D2 tid=3D0x03F64DD0 nid=3D0xad8 in =
Object.wait() [38bf000..38bfd8c]
at java.lang.Object.wait(Native Method)
- waiting on <12E1C7C8> (a =
org.eclipse.ui.internal.decorators.DecorationScheduler)
at java.lang.Object.wait(Unknown Source)
at =
org.eclipse.ui.internal.decorators.DecorationScheduler.next( DecorationSch=
eduler.java:214)
- locked <12E1C7C8> (a =
org.eclipse.ui.internal.decorators.DecorationScheduler)
at =
org.eclipse.ui.internal.decorators.DecorationScheduler$2.run (DecorationSc=
heduler.java:240)
at java.lang.Thread.run(Unknown Source)
"Signal Dispatcher" daemon prio=3D10 tid=3D0x009EF828 nid=3D0x8dc =
waiting on condition [0..0]
"Finalizer" daemon prio=3D9 tid=3D0x0003E898 nid=3D0xe80 in =
Object.wait() [2cbf000..2cbfd8c]
at java.lang.Object.wait(Native Method)
- waiting on <127C1BD8> (a =
java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <127C1BD8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)
"Reference Handler" daemon prio=3D10 tid=3D0x009AB248 nid=3D0xb70 in =
Object.wait() [95f000..95fd8c]
at java.lang.Object.wait(Native Method)
- waiting on <127C1C40> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Unknown Source)
at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
- locked <127C1C40> (a java.lang.ref.Reference$Lock)
"main" prio=3D5 tid=3D0x00036210 nid=3D0x924 in Object.wait() =
[7e000..7fc40]
at java.lang.Object.wait(Native Method)
- waiting on <10910378> (a java.lang.Object)
at java.lang.Object.wait(Unknown Source)
at =
EDU.oswego.cs.dl.util.concurrent.LinkedQueue.take(LinkedQueu e.java:122)
- locked <10910378> (a java.lang.Object)
at java.io.InputStream.read(Unknown Source)
at java.io.InputStream.read(Unknown Source)
at =
org.eclipse.core.internal.localstore.FileSystemStore.transfe rStreams(File=
SystemStore.java:326)
- locked <12805748> (a [B)
at =
org.eclipse.core.internal.localstore.FileSystemStore.write(F ileSystemStor=
e.java:367)
at =
org.eclipse.core.internal.localstore.FileSystemResourceManag er.write(File=
SystemResourceManager.java:656)
at =
org.eclipse.core.internal.resources.File.internalSetContents (File.java:23=
8)
at =
org.eclipse.core.internal.resources.File.setContents(File.ja va:274) </PRE>=
<PRE> ...
at =
org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(Worksp aceModifyOper=
ation.java:71)
at =
org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1595)
at =
org.eclipse.ui.actions.WorkspaceModifyOperation.run(Workspac eModifyOperat=
ion.java:85)
- locked <109104B8></PRE><PRE> =
...</PRE><PRE>
"VM Thread" prio=3D5 tid=3D0x009EC710 nid=3D0x858 runnable
"VM Periodic Task Thread" prio=3D10 tid=3D0x009EE4E8 nid=3D0x51c waiting =
on condition
"Suspend Checker Thread" prio=3D10 tid=3D0x009EEDD8 nid=3D0x848 runnable
</PRE></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV>"John Arthorne" <<A=20
href=3D"mailto:John_Arthorne@oti.com">John_Arthorne@oti.com</A>_> =
wrote in=20
message <A=20
href=3D"news:402D548E.1090904@oti.com">news:402D548E.1090904@oti.com</A>_=
....</DIV>>=20
Both of those threads are waiting for the same lock. The lock is =
<BR>>=20
implemented as a semaphore queue, so each thread is actually waiting on =
<BR>>=20
a different java object monitor, but it is still the same lock they are =
<BR>>=20
queuing on. Can you provide the complete stack trace? Two =
threads=20
have <BR>> a "..." indicating something was omitted.<BR>> =
--<BR>>=20
<BR>> John P. A. Verhaeg wrote:<BR>> > Not sure what we're =
doing wrong,=20
but we are seeing an apparent deadlock<BR>> > during builds=20
sometimes. Although the instance ID's are different in the<BR>> =
>=20
thread dump below, it looks like there may be a deadlock shown in the=20
dump<BR>> > between the "ModelBuffer.Save" and "Snapshot" =
threads. =20
Please let me know<BR>> > if there is anything that sticks out in =
this=20
dump as to what we might be<BR>> > doing wrong or if there is some =
known=20
issue, hopefully with a workaround<BR>> > that would help me =
figure out a=20
way around this:<BR>> > <BR>> > Full =
thread=20
dump Java HotSpot(TM) Client VM (1.4.1_03-b02 mixed mode):<BR>> > =
<BR>>=20
> "ModelBuffer.Save" prio=3D5 =
tid=3D0x0409F898 nid=3D0xb0c=20
in Object.wait()<BR>> > [5e2f000..5e2fd8c]<BR>>=20
> &a mp;nbsp; at=20
java.lang.Object.wait(Native Method)<BR>>=20
> &a mp;nbsp; - waiting on=20
<10305DD8> (a<BR>> >=20
org.eclipse.core.internal.utils.Semaphore)<BR>>=20
> &a mp;nbsp; at=20
java.lang.Object.wait(Unknown Source)<BR>>=20
> &a mp;nbsp; at<BR>> >=20
org.eclipse.core.internal.utils.Semaphore.acquire(Semaphore. java:24) <BR>&=
gt;=20
> &a mp;nbsp; - locked =
<10305DD8>=20
(a org.eclipse.core.internal.utils.Semaphore)<BR>>=20
> &a mp;nbsp; at<BR>> >=20
org.eclipse.core.resources.WorkspaceLock.acquire(WorkspaceLo ck.java:49) <B=
R>>=20
> &a mp;nbsp; at<BR>> >=20
org.eclipse.ui.internal.UIWorkspaceLock.acquire(UIWorkspaceL ock.java:46) <=
BR>>=20
> &a mp;nbsp; at<BR>> >=20
org.eclipse.core.internal.resources.WorkManager.checkIn(Work Manager.java:=
79)<BR>>=20
> &a mp;nbsp; at<BR>> >=20
org.eclipse.core.internal.resources.Workspace.prepareOperati on(Workspace.=
jav<BR>>=20
> a:1558)<BR>> =
> &a mp;nbsp; =20
at<BR>> >=20
org.eclipse.core.internal.resources.Resource.refreshLocal(Re source.java:1=
147<BR>>=20
> )<BR>> > &a mp;nbsp; =
at<BR>>=20
>=20
org.eclipse.emf.ecore.resource.impl.URIConverterImpl$Workben chHelper.crea=
teP<BR>>=20
> latformResourceInputStream(URIConverterImpl.java:177)<BR>>=20
> &a mp;nbsp; at<BR>> >=20
org.eclipse.emf.ecore.resource.impl.URIConverterImpl.createP latformResour=
ceI<BR>>=20
> nputStream(URIConverterImpl.java:442)<BR>>=20
> &a mp;nbsp; at<BR>> >=20
org.eclipse.emf.ecore.resource.impl.URIConverterImpl.createI nputStream(UR=
ICo<BR>>=20
> nverterImpl.java:395)<BR>>=20
> &a mp;nbsp; at<BR>> >=20
org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(Resour ceImpl.java:7=
52)<BR>>=20
> &a mp;nbsp; ...<BR>> > =
<BR>>=20
> "Snapshot" prio=3D5 tid=3D0x02F7A5B8 =
nid=3D0xe74 in=20
Object.wait()<BR>> > [5cef000..5cefd8c]<BR>>=20
> &a mp;nbsp; at=20
java.lang.Object.wait(Native Method)<BR>>=20
> &a mp;nbsp; - waiting on=20
<10305E48> (a<BR>> >=20
org.eclipse.core.internal.utils.Semaphore)<BR>>=20
> &a mp;nbsp; at=20
java.lang.Object.wait(Unknown Source)<BR>>=20
> &a mp;nbsp; at<BR>> >=20
org.eclipse.core.internal.utils.Semaphore.acquire(Semaphore. java:24) <BR>&=
gt;=20
> &a mp;nbsp; - locked =
<10305E48>=20
(a org.eclipse.core.internal.utils.Semaphore)<BR>>=20
> &a mp;nbsp; at<BR>> >=20
org.eclipse.core.resources.WorkspaceLock.acquire(WorkspaceLo ck.java:49) <B=
R>>=20
> &a mp;nbsp; at<BR>> >=20
org.eclipse.ui.internal.UIWorkspaceLock.acquire(UIWorkspaceL ock.java:46) <=
BR>>=20
> &a mp;nbsp; at<BR>> >=20
org.eclipse.core.internal.resources.WorkManager.checkIn(Work Manager.java:=
79)<BR>>=20
> &a mp;nbsp; at<BR>> >=20
org.eclipse.core.internal.resources.Workspace.prepareOperati on(Workspace.=
jav<BR>>=20
> a:1558)<BR>> =
> &a mp;nbsp; =20
at<BR>> >=20
org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1593) <BR=
>>=20
> &a mp;nbsp; at<BR>> >=20
org.eclipse.core.internal.resources.DelayedSnapshotRunnable. runSnapshot(D=
ela<BR>>=20
> yedSnapshotRunnable.java:68)<BR>>=20
> &a mp;nbsp; at<BR>> >=20
org.eclipse.core.internal.resources.DelayedSnapshotRunnable. run(DelayedSn=
aps<BR>>=20
> hotRunnable.java:44)<BR>>=20
> &a mp;nbsp; at=20
java.lang.Thread.run(Unknown Source)<BR>> > <BR>>=20
> "Java indexing" daemon prio=3D4 =
tid=3D0x032F32E8=20
nid=3D0xfc8 waiting on<BR>> > condition [387f000..387fd8c]<BR>> =
> &a mp;nbsp; at=20
java.lang.Thread.sleep(Native Method)<BR>>=20
> &a mp;nbsp; at<BR>> >=20
org.eclipse.jdt.internal.core.search.processing.JobManager.r un(JobManager=
..ja<BR>>=20
> va:349)<BR>> =
> &a mp;nbsp; at=20
java.lang.Thread.run(Unknown Source)<BR>> > <BR>>=20
> "Decoration" daemon prio=3D2 =
tid=3D0x03F64DD0 nid=3D0xad8=20
in Object.wait()<BR>> > [38bf000..38bfd8c]<BR>>=20
> &a mp;nbsp; at=20
java.lang.Object.wait(Native Method)<BR>>=20
> &a mp;nbsp; - waiting on=20
<12E1C7C8> (a<BR>> >=20
org.eclipse.ui.internal.decorators.DecorationScheduler)<BR>>=20
> &a mp;nbsp; at=20
java.lang.Object.wait(Unknown Source)<BR>>=20
> &a mp;nbsp; at<BR>> >=20
org.eclipse.ui.internal.decorators.DecorationScheduler.next( DecorationSch=
edu<BR>>=20
> ler.java:214)<BR>> =
> &a mp;nbsp; =20
- locked <12E1C7C8> (a<BR>> >=20
org.eclipse.ui.internal.decorators.DecorationScheduler)<BR>>=20
> &a mp;nbsp; at<BR>> >=20
org.eclipse.ui.internal.decorators.DecorationScheduler$2.run (DecorationSc=
hed<BR>>=20
> uler.java:240)<BR>> =
> &a mp;nbsp; =20
at java.lang.Thread.run(Unknown Source)<BR>> > <BR>>=20
> "Signal Dispatcher" daemon prio=3D10 =
tid=3D0x009EF828=20
nid=3D0x8dc waiting on<BR>> > condition [0..0]<BR>> > =
<BR>>=20
> "Finalizer" daemon prio=3D9 =
tid=3D0x0003E898 nid=3D0xe80=20
in Object.wait()<BR>> > [2cbf000..2cbfd8c]<BR>>=20
> &a mp;nbsp; at=20
java.lang.Object.wait(Native Method)<BR>>=20
> &a mp;nbsp; - waiting on=20
<127C1BD8> (a java.lang.ref.ReferenceQueue$Lock)<BR>>=20
> &a mp;nbsp; at=20
java.lang.ref.ReferenceQueue.remove(Unknown Source)<BR>>=20
> &a mp;nbsp; - locked =
<127C1BD8>=20
(a java.lang.ref.ReferenceQueue$Lock)<BR>>=20
> &a mp;nbsp; at=20
java.lang.ref.ReferenceQueue.remove(Unknown Source)<BR>>=20
> &a mp;nbsp; at=20
java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)<BR>> > =
<BR>> > "Reference Handler" daemon =
prio=3D10=20
tid=3D0x009AB248 nid=3D0xb70 in<BR>> > Object.wait() =
[95f000..95fd8c]<BR>>=20
> &a mp;nbsp; at=20
java.lang.Object.wait(Native Method)<BR>>=20
> &a mp;nbsp; - waiting on=20
<127C1C40> (a java.lang.ref.Reference$Lock)<BR>>=20
> &a mp;nbsp; at=20
java.lang.Object.wait(Unknown Source)<BR>>=20
> &a mp;nbsp; at=20
java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)<BR>>=20
> &a mp;nbsp; - locked =
<127C1C40>=20
(a java.lang.ref.Reference$Lock)<BR>> > <BR>>=20
> "main" prio=3D5 tid=3D0x00036210 =
nid=3D0x924 in=20
Object.wait() [7e000..7fc40]<BR>>=20
> &a mp;nbsp; at=20
java.lang.Object.wait(Native Method)<BR>>=20
> &a mp;nbsp; - waiting on=20
<10910378> (a java.lang.Object)<BR>>=20
> &a mp;nbsp; at=20
java.lang.Object.wait(Unknown Source)<BR>>=20
> &a mp;nbsp; ...<BR>> > =
<BR>>=20
> "VM Thread" prio=3D5 tid=3D0x009EC710 =
nid=3D0x858=20
runnable<BR>> > <BR>> > "VM Periodic =
Task=20
Thread" prio=3D10 tid=3D0x009EE4E8 nid=3D0x51c waiting on<BR>> >=20
condition<BR>> > <BR>> > "Suspend =
Checker=20
Thread" prio=3D10 tid=3D0x009EEDD8 nid=3D0x848 runnable<BR>> > =
<BR>> >=20
Thank you,<BR>> > <BR>> > John P. A. Verhaeg<BR>> > =
<BR>>=20
> <BR>> </BODY></HTML>
------=_NextPart_000_0011_01C3FA18.4FA7C520--
|
|
|
Re: Apparent deadlock on WorkspaceLock [message #200342 is a reply to message #200122] |
Mon, 23 February 2004 18:45  |
Eclipse User |
|
|
|
Originally posted by: John_Arthorne.oti.com_
So the two background threads (ModelBuffer.Save and the Worker thread
doing a snapshot) are waiting on the workspace lock. Both are blocked
by the UI (main) thread, which is blocked trying to read from a stream.
LinkedQueue.take is a blocking read call, so some other thread is
failing to populate that queue as expected. Without knowing much more
about the code, my guess is that whoever is failing to add items to the
LinkedQueue is causing the deadlock.
--
"main" prio=5 tid=0x00036210 nid=0x924 in Object.wait() [7e000..7fc40]
at java.lang.Object.wait(Native Method)
- waiting on <10910378> (a java.lang.Object)
at java.lang.Object.wait(Unknown Source)
at
EDU.oswego.cs.dl.util.concurrent.LinkedQueue.take(LinkedQueu e.java:122)
- locked <10910378> (a java.lang.Object)
at java.io.InputStream.read(Unknown Source)
John P. A. Verhaeg wrote:
> I can't provide a complete stack trace, but this one shows more than the previous one:
>
>
>
> Full thread dump Java HotSpot(TM) Client VM (1.4.1_03-b02 mixed mode):
>
> "ModelBuffer.Save" prio=5 tid=0x0409F898 nid=0xb0c in Object.wait() [5e2f000..5e2fd8c]
> at java.lang.Object.wait(Native Method)
> - waiting on <10305DD8> (a org.eclipse.core.internal.utils.Semaphore)
> at java.lang.Object.wait(Unknown Source)
> at org.eclipse.core.internal.utils.Semaphore.acquire(Semaphore. java:24)
> - locked <10305DD8> (a org.eclipse.core.internal.utils.Semaphore)
> at org.eclipse.core.resources.WorkspaceLock.acquire(WorkspaceLo ck.java:49)
> at org.eclipse.ui.internal.UIWorkspaceLock.acquire(UIWorkspaceL ock.java:46)
> at org.eclipse.core.internal.resources.WorkManager.checkIn(Work Manager.java:79)
> at org.eclipse.core.internal.resources.Workspace.prepareOperati on(Workspace.java:1558)
> at org.eclipse.core.internal.resources.Resource.refreshLocal(Re source.java:1147)
> at org.eclipse.emf.ecore.resource.impl.URIConverterImpl$Workben chHelper.createPlatformResourceInputStream(URIConverterImpl. java:177)
> at org.eclipse.emf.ecore.resource.impl.URIConverterImpl.createP latformResourceInputStream(URIConverterImpl.java:442)
> at org.eclipse.emf.ecore.resource.impl.URIConverterImpl.createI nputStream(URIConverterImpl.java:395)
> at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(Resour ceImpl.java:752)
> at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:220)
> at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:286)
> at <ResourceSetImplementation>.getEObject(<ResourceSetImplementation >.java)
> at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java: 222)
> at org.eclipse.emf.ecore.util.EcoreEList.resolveProxy(EcoreELis t.java:166)
> at org.eclipse.emf.ecore.util.EcoreEList.resolve(EcoreEList.jav a:142)
> at org.eclipse.emf.common.util.BasicEList.get(BasicEList.java:5 02)
> at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveHRefMany(XMLS aveImpl.java:930)
> at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveFeatures(XMLS aveImpl.java:646)
> at <XmiSaveImplementation>.saveElementID(<XmiSaveImplementation >.java)
> at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveElement(XMLSa veImpl.java:410)
> at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveContainedMany (XMLSaveImpl.java:952)
> at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveFeatures(XMLS aveImpl.java:626)
> at <XmiSaveImplementation>.saveElementID(<XmiSaveImplementation >.java)
> at org.eclipse.emf.ecore.xmi.impl.XMISaveImpl.writeTopObjects(X MISaveImpl.java:71)
> at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.traverse(XMLSaveI mpl.java:210)
> at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.save(XMLSaveImpl. java:118)
> at org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doSave(XMLRes ourceImpl.java:147)
> at org.eclipse.emf.ecore.resource.impl.ResourceImpl.save(Resour ceImpl.java:799)
>
> "Snapshot" prio=5 tid=0x02F7A5B8 nid=0xe74 in Object.wait() [5cef000..5cefd8c]
> at java.lang.Object.wait(Native Method)
> - waiting on <10305E48> (a org.eclipse.core.internal.utils.Semaphore)
> at java.lang.Object.wait(Unknown Source)
> at org.eclipse.core.internal.utils.Semaphore.acquire(Semaphore. java:24)
> - locked <10305E48> (a org.eclipse.core.internal.utils.Semaphore)
> at org.eclipse.core.resources.WorkspaceLock.acquire(WorkspaceLo ck.java:49)
> at org.eclipse.ui.internal.UIWorkspaceLock.acquire(UIWorkspaceL ock.java:46)
> at org.eclipse.core.internal.resources.WorkManager.checkIn(Work Manager.java:79)
> at org.eclipse.core.internal.resources.Workspace.prepareOperati on(Workspace.java:1558)
> at org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1593)
> at org.eclipse.core.internal.resources.DelayedSnapshotRunnable. runSnapshot(DelayedSnapshotRunnable.java:68)
> at org.eclipse.core.internal.resources.DelayedSnapshotRunnable. run(DelayedSnapshotRunnable.java:44)
> at java.lang.Thread.run(Unknown Source)
>
> "Java indexing" daemon prio=4 tid=0x032F32E8 nid=0xfc8 waiting on condition [387f000..387fd8c]
> at java.lang.Thread.sleep(Native Method)
> at org.eclipse.jdt.internal.core.search.processing.JobManager.r un(JobManager.java:349)
> at java.lang.Thread.run(Unknown Source)
>
> "Decoration" daemon prio=2 tid=0x03F64DD0 nid=0xad8 in Object.wait() [38bf000..38bfd8c]
> at java.lang.Object.wait(Native Method)
> - waiting on <12E1C7C8> (a org.eclipse.ui.internal.decorators.DecorationScheduler)
> at java.lang.Object.wait(Unknown Source)
> at org.eclipse.ui.internal.decorators.DecorationScheduler.next( DecorationScheduler.java:214)
> - locked <12E1C7C8> (a org.eclipse.ui.internal.decorators.DecorationScheduler)
> at org.eclipse.ui.internal.decorators.DecorationScheduler$2.run (DecorationScheduler.java:240)
> at java.lang.Thread.run(Unknown Source)
>
> "Signal Dispatcher" daemon prio=10 tid=0x009EF828 nid=0x8dc waiting on condition [0..0]
>
> "Finalizer" daemon prio=9 tid=0x0003E898 nid=0xe80 in Object.wait() [2cbf000..2cbfd8c]
> at java.lang.Object.wait(Native Method)
> - waiting on <127C1BD8> (a java.lang.ref.ReferenceQueue$Lock)
> at java.lang.ref.ReferenceQueue.remove(Unknown Source)
> - locked <127C1BD8> (a java.lang.ref.ReferenceQueue$Lock)
> at java.lang.ref.ReferenceQueue.remove(Unknown Source)
> at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)
>
> "Reference Handler" daemon prio=10 tid=0x009AB248 nid=0xb70 in Object.wait() [95f000..95fd8c]
> at java.lang.Object.wait(Native Method)
> - waiting on <127C1C40> (a java.lang.ref.Reference$Lock)
> at java.lang.Object.wait(Unknown Source)
> at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
> - locked <127C1C40> (a java.lang.ref.Reference$Lock)
>
> "main" prio=5 tid=0x00036210 nid=0x924 in Object.wait() [7e000..7fc40]
> at java.lang.Object.wait(Native Method)
> - waiting on <10910378> (a java.lang.Object)
> at java.lang.Object.wait(Unknown Source)
> at EDU.oswego.cs.dl.util.concurrent.LinkedQueue.take(LinkedQueu e.java:122)
> - locked <10910378> (a java.lang.Object)
> at java.io.InputStream.read(Unknown Source)
> at java.io.InputStream.read(Unknown Source)
> at org.eclipse.core.internal.localstore.FileSystemStore.transfe rStreams(FileSystemStore.java:326)
> - locked <12805748> (a [B)
> at org.eclipse.core.internal.localstore.FileSystemStore.write(F ileSystemStore.java:367)
> at org.eclipse.core.internal.localstore.FileSystemResourceManag er.write(FileSystemResourceManager.java:656)
> at org.eclipse.core.internal.resources.File.internalSetContents (File.java:238)
> at org.eclipse.core.internal.resources.File.setContents(File.ja va:274)
>
> ...
> at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(Worksp aceModifyOperation.java:71)
> at org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1595)
> at org.eclipse.ui.actions.WorkspaceModifyOperation.run(Workspac eModifyOperation.java:85)
> - locked <109104B8>
>
> ...
>
> "VM Thread" prio=5 tid=0x009EC710 nid=0x858 runnable
>
> "VM Periodic Task Thread" prio=10 tid=0x009EE4E8 nid=0x51c waiting on condition
> "Suspend Checker Thread" prio=10 tid=0x009EEDD8 nid=0x848 runnable
>
>
>
> "John Arthorne" <John_Arthorne@oti.com <mailto:John_Arthorne@oti.com>_>
> wrote in message news:402D548E.1090904@oti.com_...
> > Both of those threads are waiting for the same lock. The lock is
> > implemented as a semaphore queue, so each thread is actually waiting on
> > a different java object monitor, but it is still the same lock they are
> > queuing on. Can you provide the complete stack trace? Two threads have
> > a "..." indicating something was omitted.
> > --
> >
> > John P. A. Verhaeg wrote:
> > > Not sure what we're doing wrong, but we are seeing an apparent deadlock
> > > during builds sometimes. Although the instance ID's are different
> in the
> > > thread dump below, it looks like there may be a deadlock shown in
> the dump
> > > between the "ModelBuffer.Save" and "Snapshot" threads. Please let
> me know
> > > if there is anything that sticks out in this dump as to what we
> might be
> > > doing wrong or if there is some known issue, hopefully with a
> workaround
> > > that would help me figure out a way around this:
> > >
> > > Full thread dump Java HotSpot(TM) Client VM (1.4.1_03-b02 mixed
> mode):
> > >
> > > "ModelBuffer.Save" prio=5 tid=0x0409F898 nid=0xb0c in Object.wait()
> > > [5e2f000..5e2fd8c]
> > > at java.lang.Object.wait(Native Method)
> > > - waiting on <10305DD8> (a
> > > org.eclipse.core.internal.utils.Semaphore)
> > > at java.lang.Object.wait(Unknown Source)
> > > at
> > > org.eclipse.core.internal.utils.Semaphore.acquire(Semaphore. java:24)
> > > - locked <10305DD8> (a
> org.eclipse.core.internal.utils.Semaphore)
> > > at
> > > org.eclipse.core.resources.WorkspaceLock.acquire(WorkspaceLo ck.java:49)
> > > at
> > >
> org.eclipse.ui.internal.UIWorkspaceLock.acquire(UIWorkspaceL ock.java:46)
> > > at
> > >
> org.eclipse.core.internal.resources.WorkManager.checkIn(Work Manager.java:79)
> > > at
> > >
> org.eclipse.core.internal.resources.Workspace.prepareOperati on(Workspace.jav
> > > a:1558)
> > > at
> > >
> org.eclipse.core.internal.resources.Resource.refreshLocal(Re source.java:1147
> > > )
> > > at
> > >
> org.eclipse.emf.ecore.resource.impl.URIConverterImpl$Workben chHelper.createP
> > > latformResourceInputStream(URIConverterImpl.java:177)
> > > at
> > >
> org.eclipse.emf.ecore.resource.impl.URIConverterImpl.createP latformResourceI
> > > nputStream(URIConverterImpl.java:442)
> > > at
> > >
> org.eclipse.emf.ecore.resource.impl.URIConverterImpl.createI nputStream(URICo
> > > nverterImpl.java:395)
> > > at
> > >
> org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(Resour ceImpl.java:752)
> > > ...
> > >
> > > "Snapshot" prio=5 tid=0x02F7A5B8 nid=0xe74 in Object.wait()
> > > [5cef000..5cefd8c]
> > > at java.lang.Object.wait(Native Method)
> > > - waiting on <10305E48> (a
> > > org.eclipse.core.internal.utils.Semaphore)
> > > at java.lang.Object.wait(Unknown Source)
> > > at
> > > org.eclipse.core.internal.utils.Semaphore.acquire(Semaphore. java:24)
> > > - locked <10305E48> (a
> org.eclipse.core.internal.utils.Semaphore)
> > > at
> > > org.eclipse.core.resources.WorkspaceLock.acquire(WorkspaceLo ck.java:49)
> > > at
> > >
> org.eclipse.ui.internal.UIWorkspaceLock.acquire(UIWorkspaceL ock.java:46)
> > > at
> > >
> org.eclipse.core.internal.resources.WorkManager.checkIn(Work Manager.java:79)
> > > at
> > >
> org.eclipse.core.internal.resources.Workspace.prepareOperati on(Workspace.jav
> > > a:1558)
> > > at
> > > org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1593)
> > > at
> > >
> org.eclipse.core.internal.resources.DelayedSnapshotRunnable. runSnapshot(Dela
> > > yedSnapshotRunnable.java:68)
> > > at
> > >
> org.eclipse.core.internal.resources.DelayedSnapshotRunnable. run(DelayedSnaps
> > > hotRunnable.java:44)
> > > at java.lang.Thread.run(Unknown Source)
> > >
> > > "Java indexing" daemon prio=4 tid=0x032F32E8 nid=0xfc8 waiting on
> > > condition [387f000..387fd8c]
> > > at java.lang.Thread.sleep(Native Method)
> > > at
> > >
> org.eclipse.jdt.internal.core.search.processing.JobManager.r un(JobManager.ja
> > > va:349)
> > > at java.lang.Thread.run(Unknown Source)
> > >
> > > "Decoration" daemon prio=2 tid=0x03F64DD0 nid=0xad8 in
> Object.wait()
> > > [38bf000..38bfd8c]
> > > at java.lang.Object.wait(Native Method)
> > > - waiting on <12E1C7C8> (a
> > > org.eclipse.ui.internal.decorators.DecorationScheduler)
> > > at java.lang.Object.wait(Unknown Source)
> > > at
> > >
> org.eclipse.ui.internal.decorators.DecorationScheduler.next( DecorationSchedu
> > > ler.java:214)
> > > - locked <12E1C7C8> (a
> > > org.eclipse.ui.internal.decorators.DecorationScheduler)
> > > at
> > >
> org.eclipse.ui.internal.decorators.DecorationScheduler$2.run (DecorationSched
> > > uler.java:240)
> > > at java.lang.Thread.run(Unknown Source)
> > >
> > > "Signal Dispatcher" daemon prio=10 tid=0x009EF828 nid=0x8dc
> waiting on
> > > condition [0..0]
> > >
> > > "Finalizer" daemon prio=9 tid=0x0003E898 nid=0xe80 in Object.wait()
> > > [2cbf000..2cbfd8c]
> > > at java.lang.Object.wait(Native Method)
> > > - waiting on <127C1BD8> (a java.lang.ref.ReferenceQueue$Lock)
> > > at java.lang.ref.ReferenceQueue.remove(Unknown Source)
> > > - locked <127C1BD8> (a java.lang.ref.ReferenceQueue$Lock)
> > > at java.lang.ref.ReferenceQueue.remove(Unknown Source)
> > > at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)
> > >
> > > "Reference Handler" daemon prio=10 tid=0x009AB248 nid=0xb70 in
> > > Object.wait() [95f000..95fd8c]
> > > at java.lang.Object.wait(Native Method)
> > > - waiting on <127C1C40> (a java.lang.ref.Reference$Lock)
> > > at java.lang.Object.wait(Unknown Source)
> > > at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
> > > - locked <127C1C40> (a java.lang.ref.Reference$Lock)
> > >
> > > "main" prio=5 tid=0x00036210 nid=0x924 in Object.wait()
> [7e000..7fc40]
> > > at java.lang.Object.wait(Native Method)
> > > - waiting on <10910378> (a java.lang.Object)
> > > at java.lang.Object.wait(Unknown Source)
> > > ...
> > >
> > > "VM Thread" prio=5 tid=0x009EC710 nid=0x858 runnable
> > >
> > > "VM Periodic Task Thread" prio=10 tid=0x009EE4E8 nid=0x51c
> waiting on
> > > condition
> > >
> > > "Suspend Checker Thread" prio=10 tid=0x009EEDD8 nid=0x848 runnable
> > >
> > > Thank you,
> > >
> > > John P. A. Verhaeg
> > >
> > >
> >
|
|
|
Powered by
FUDForum. Page generated in 0.03356 seconds