Bugs item #623223, was opened at 2002-10-14 22:45
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=376685&aid=623223&group_id=22866

Category: JBossServer
Group: v2.4 (stable)
Status: Open
Resolution: None
Priority: 5
Submitted By: Jerome Lacoste (lacostej)
Assigned to: Nobody/Anonymous (nobody)
Summary: possible deadlock in log4j related code

Initial Comment:
OS: Windows NT 4
JDK 1.4.1 
JBoss 2.4.7 binary distribution with Jetty 4.0.4

There is a possible deadlock in log4j related code. We
started experiencing this after adding a new MBean
service to our application. It is 100% reproducible.

The deadlock is due to the fact that the log4j
CategoryStreame uses a hack to log some lost messages.
This hack tries to renter log4j logging by calling
log() on the wrapped category. Upon certain conditions,
this will cause a deadlock.

Details:

Hitting Ctrl-Break on the hung program gives me the
following output:
 [...]
 Java stack information for the threads listed above:
 ===================================================
 "Thread-23":
        at
org.apache.log4j.Category.callAppenders(Category.java:253)
        - waiting to lock <0328F228> (a
 org.apache.log4j.spi.RootCategory)
        at
org.apache.log4j.Category.forcedLog(Category.java:445)
        at org.apache.log4j.Category.log(Category.java:864)
        at
 org.jboss.logging.log4j.CategoryStream.write(CategoryStream.java:91)
        - locked <0329D410> (a
 org.jboss.logging.log4j.CategoryStream)          at
 org.jboss.logging.log4j.CategoryStream.println(CategoryStream.java:49)
        at
 org.hsqldb.Embedded_ServerConnection.run(Embedded_ServerConnection.java:161)
        at java.lang.Thread.run(Thread.java:536)
 "Thread-2":
        at java.io.PrintStream.flush(PrintStream.java:133)
        - waiting to lock <0329D410> (a
 org.jboss.logging.log4j.CategoryStream)
        at
 sun.nio.cs.StreamEncoder$CharsetSE.implFlush(StreamEncoder.java:408)
        at
sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:150)
        - locked <0349E880> (a java.io.OutputStreamWriter)
        at
java.io.OutputStreamWriter.flush(OutputStreamWriter.java:213)
        at
 org.apache.log4j.helpers.QuietWriter.flush(QuietWriter.java:49)
        at
 org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:309)
        at
 org.apache.log4j.WriterAppender.append(WriterAppender.java:157)
        at
 org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
        - locked <0349DB48> (a
org.apache.log4j.ConsoleAppender)
        at

org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:57)
        at
org.apache.log4j.Category.callAppenders(Category.java:255)
        - locked <0328F228> (a
org.apache.log4j.spi.RootCategory)
        at
org.apache.log4j.Category.forcedLog(Category.java:445)
 [...]
 Found 1 deadlock.

 After having a look at the stack trace, it looks like
the lock is coming from this piece of code, within
org.jboss.logging.util.CategoryStream
 
   // HACK, something is logging exceptions line by
line (including
        // blanks), but I can't seem to find it, so for
now just ignore
        // empty lines... they aren't very useful.
        if (len != 0) {
            String msg = new String(b, off, len);
            category.log(priority, msg);
        }
        inWrite = false;

Hacks ain't good :)
Removing the call to category.log() removes the
deadlock in our current tests. But this does not solve
the problem.
I guess there are 2 solutions:
- find which logs were concerned by the hack, and
correct the problem, removing the hack
- try to make log4j reentrant.

The problem may be present in other versions of JBoss
(including the latest) as the current version of
CategoryStream still contains the HACK.

Patch coming.


----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=376685&aid=623223&group_id=22866


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to