Hi.
I’ve come across a deadlock when the SVGAnimationEngine class calls
RunnableQueue.setIdleRunnable to start the animation ticking, while at
the same time the RunnableQueue is suspended:
Found one Java-level deadlock:
=============================
"Thread-1149":
waiting to lock monitor 0x080bb9d8 (object 0xa1cc1b20, a
org.apache.batik.util.RunnableQueue),
which is held by "RunnableQueue-26"
"RunnableQueue-26":
waiting to lock monitor 0x080bbb68 (object 0xa1cc1a28, a
org.apache.batik.bridge.UpdateManager),
which is held by "Thread-1149"
Java stack information for the threads listed above:
===================================================
"Thread-1149":
at
org.apache.batik.util.RunnableQueue.setIdleRunnable(RunnableQueue.java:494)
- waiting to lock <0xa1cc1b20> (a org.apache.batik.util.RunnableQueue)
at
org.apache.batik.bridge.SVGAnimationEngine.start(SVGAnimationEngine.java:428)
at
org.apache.batik.bridge.BaseScriptingEnvironment.dispatchSVGLoadEvent(BaseScriptingEnvironment.java:550)
at
org.apache.batik.bridge.UpdateManager.dispatchSVGLoadEvent(UpdateManager.java:239)
at
org.apache.batik.bridge.UpdateManager.dispatchSVGLoadEvent(UpdateManager.java:220)
- locked <0xa1cc1a28> (a org.apache.batik.bridge.UpdateManager)
at
org.apache.batik.swing.svg.SVGLoadEventDispatcher.run(SVGLoadEventDispatcher.java:100)
"RunnableQueue-26":
at
org.apache.batik.bridge.UpdateManager$UpdateManagerRunHander.executionSuspended(UpdateManager.java:877)
- waiting to lock <0xa1cc1a28> (a
org.apache.batik.bridge.UpdateManager)
at
org.apache.batik.util.RunnableQueue.executionSuspended(RunnableQueue.java:508)
- locked <0xa1cc1b20> (a org.apache.batik.util.RunnableQueue)
at org.apache.batik.util.RunnableQueue.run(RunnableQueue.java:167)
at java.lang.Thread.run(Thread.java:619)
I’m not so good at threading issues: what’s the correct solution? Does
RunnableQueue.setIdleRunnable really need to be synchronized?
Thanks,
Cameron
--
Cameron McCormack, http://mcc.id.au/
xmpp:[EMAIL PROTECTED] ▪ ICQ 26955922 ▪ MSN [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]