Sorry,

1.2.5 is the version that we are experiencing the problem with. As an additional 
point, the service hangs
after it has dealt with about 3 million messages and 160000 clients. The service lasts 
about a week and
then hangs, not very recreatable.

Thanks,

Paul

Ceki Gülcü wrote:

> Which version of log4j?
>
> At 19:19 08.10.2002 +0100, you wrote:
> >Hi all,
> >
> >I was wondering if anyone could give me their opinion on this deadlock
> >that we've encountered when using log4j. The process that is using the
> >logger is a multithreaded messaging service running on the VisiBroker
> >orb. Log4j is configured to "catch" any output so it tries to print out
> >the stack trace of an exception that has been thrown by the orb. At the
> >same time, we are debugging some information to the log. The two calls
> >seem to colide.
> >
> >As I understand it, the object 0x43a0eca8 has been locked by the first
> >thread, which is debugging that a call is being invoked on a remote
> >object. The first thread is waiting for the stream (object 0x43a0b278)
> >to become free so it can write the message to the log. The second thread
> >is waiting for object 0x43a0eca8 and has the stream object 0x43a0b0278
> >locked. The result is this deadlock. I can provide a full threaddump of
> >the process if required.
> >
> >I am looking for advice in two areas :
> >
> >1) If anyone has seen this before, or knows what the problem could be
> >then any information will be greatly appreciated.
> >2) I am attempting to recreate the problem with a simple multithreaded
> >program that logs messages to a file at the same time as throwing
> >exceptions and printing their stack traces. The problem doesn't occur in
> >my test program, despite the expectation that this deadlock would be
> >more likely to occur in a program with a higher density of calls. Any
> >ideas?
> >
> >Deadlock information from java
> >Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1_04-b02)
> >Java HotSpot(TM) Client VM (build 1.3.1_04-b02, mixed mode)
> 
>>-------------------------------------------------------------------------------------
> >
> >FOUND A JAVA LEVEL DEADLOCK:
> >----------------------------
> >"VBJ ThreadPool Worker":
> >   waiting to lock monitor 0x8090784 (object 0x43a0b278, a
> >java.io.PrintStream),
> >   which is locked by "VBJ ThreadPool Worker"
> >"VBJ ThreadPool Worker":
> >   waiting to lock monitor 0x809074c (object 0x43a0eca8, a
> >org.apache.log4j.spi.RootCategory),
> >   which is locked by "VBJ ThreadPool Worker"
> >
> >JAVA STACK INFORMATION FOR THREADS LISTED ABOVE:
> >------------------------------------------------
> >Java Stack for "VBJ ThreadPool Worker":
> >==========
> >         at java.io.PrintStream.println(PrintStream.java:544)
> >         - waiting to lock <43a0b278> (a java.io.PrintStream)
> >         at org.apache.log4j.helpers.LogLog.error(LogLog.java:134)
> >         at
> >org.apache.log4j.helpers.OnlyOnceErrorHandler.error(OnlyOnceErrorHandler.java:69)
> >
> >         at
> >org.apache.log4j.helpers.OnlyOnceErrorHandler.error(OnlyOnceErrorHandler.java:59)
> >
> >         at
> >org.apache.log4j.helpers.QuietWriter.write(QuietWriter.java:41)
> >         at
> >org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:292)
> >         at
> >org.apache.log4j.WriterAppender.append(WriterAppender.java:150)
> >         at
> >org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:221)
> >         at
> 
>>org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:57)
> >
> >         at org.apache.log4j.Category.callAppenders(Category.java:187)
> >         at org.apache.log4j.Category.forcedLog(Category.java:372)
> >         at org.apache.log4j.Category.debug(Category.java:241)
> >         at com.prismt.util.Debug.debug(Debug.java:143)
> >         at
> >com.prismt.orb.portable.PersistentLocator.preinvoke(PersistentLocator.java:39)
> >
> >         at
> >com.inprise.vbroker.poa.POAImpl.preinvokeLocator(POAImpl.java:1906)
> >         at com.inprise.vbroker.poa.POAImpl.preinvoke(POAImpl.java:2104)
> >         at
> 
>>com.inprise.vbroker.ProtocolEngine.ServerEngineImpl.preinvoke(ServerEngineImpl.java:248)
> >
> >         at
> >com.inprise.vbroker.GIOP.GiopProtocolAdapter.doRequest(GiopProtocolAdapter.java:390)
> >
> >         at
> 
>>com.inprise.vbroker.GIOP.GiopProtocolAdapter.dispatchMessage(GiopProtocolAdapter.java:527)
> >
> >         at
> >com.inprise.vbroker.orb.TPDispatcherImpl$TPDispatcher.run(TPDispatcherImpl.java:100)
> >
> >         at
> >com.inprise.vbroker.orb.ThreadPool$PoolWorker.run(ThreadPool.java:76)
> >Java Stack for "VBJ ThreadPool Worker":
> >==========
> >         at org.apache.log4j.Category.callAppenders(Category.java:185)
> >         at org.apache.log4j.Category.forcedLog(Category.java:372)
> >         at org.apache.log4j.Category.error(Category.java:286)
> >         at com.prismt.util.Debug$DiagStream.write(Debug.java:266)
> >         - locked <43a0b238> (a com.prismt.util.Debug$DiagStream)
> >         at java.io.PrintStream.write(PrintStream.java:217)
> >         - locked <43a0b278> (a java.io.PrintStream)
> >         at java.io.OutputStreamWriter.write(OutputStreamWriter.java:179)
> >
> >         at java.io.BufferedWriter.flushBuffer(BufferedWriter.java:109)
> >         - locked <43a0b728> (a java.io.OutputStreamWriter)
> >         at java.io.BufferedWriter.write(BufferedWriter.java:204)
> >         - locked <43a0b728> (a java.io.OutputStreamWriter)
> >         at java.io.Writer.write(Writer.java:124)
> >         at java.io.PrintStream.write(PrintStream.java:262)
> >         - locked <43a0b278> (a java.io.PrintStream)
> >         at java.io.PrintStream.print(PrintStream.java:421)
> >         at java.io.PrintStream.println(PrintStream.java:558)
> >         - locked <43a0b278> (a java.io.PrintStream)
> >         at java.lang.Throwable.printStackTrace(Throwable.java:176)
> >         - locked <43a0b278> (a java.io.PrintStream)
> >         at
> >com.inprise.vbroker.GIOP.GiopProtocolAdapter.doRequest(GiopProtocolAdapter.java:469)
> >
> >         at
> 
>>com.inprise.vbroker.GIOP.GiopProtocolAdapter.dispatchMessage(GiopProtocolAdapter.java:527)
> >
> >         at
> >com.inprise.vbroker.orb.TPDispatcherImpl$TPDispatcher.run(TPDispatcherImpl.java:100)
> >
> >         at
> >com.inprise.vbroker.orb.ThreadPool$PoolWorker.run(ThreadPool.java:76)
> >
> >Found 1 deadlock.
> >
> >Thanks,
> >
> >Paul
> >--
> >Paul Graham
> >Software Engineer
> >Prismtech Ltd, UK
> >http://www.prismtechnologies.com
> >
> >
> >
> >--
> >To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> >For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
> --
> Ceki
>
> TCP implementations will follow a general principle of robustness: be
> conservative in what you do, be liberal in what you accept from
> others. -- Jon Postel, RFC 793
>
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

--
Paul Graham
Software Engineer
Prismtech Ltd, UK
http://www.prismtechnologies.com



--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to