[jboss-dev-forums] [JBoss Microcontainer Development] - Re: Potential deadlock in ClassLoaderManager

adrian@jboss.org do-not-reply at jboss.com
Tue Sep 22 08:18:09 EDT 2009


"wolfc" wrote : 	at org.jboss.classloader.spi.base.ClassLoaderManager.unregisterLoaderThread(ClassLoaderManager.java
  |   | :128)
  |   | 	- locked <0x95a17ae8> (a java.util.Collections$SynchronizedList)
  |   | 	- locked <0x95a17ae8> (a java.util.Collections$SynchronizedList)
  | taskList == toTaskList

Yes, that's what I said above about it looping.

We had that problem before
https://jira.jboss.org/jira/browse/JBCL-81
which I fixed by making the code more like the UCL stuff from 4.2.x

This maybe a different variation of the problem (one which would also make the
4.2.x code loop as well), but I can't tell.

I can't reproduce the problem (although Thomas says he can) and the TRACE
logging he posted on the JIRA issue doesn't match the thread dump.
There is no "Reassigning task:" logging at all in his log which we would expect
from stacktrace since it occurs just before the list.add()

There are some other incongruencies with the log as well
(e.g. the thread dump shows it using a BaseClassLoader as the parent
classloader for the Domain, but the log shows all the parents to be the JDK classloader).

Anyway, I've applied a fix that stops this add() looping if it tries to reassign
ThreadTasks to itself. This is in a snapshot here (number 14):
http://snapshots.jboss.org/maven2/org/jboss/cl/jboss-classloader/2.0.7-SNAPSHOT/
So we can see whether this fixes the problem Thomas is seeing.

View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4256366#4256366

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4256366



More information about the jboss-dev-forums mailing list