The following test class seems to hang at LogManager.shutdown() when run with the jar produced by the current cvs build (1.3alpha 18/06/03). This does not occur with the released 1.2.8 jar.
Further investigation points towards a deadlock in ReaderWriterLock. Printing out the existing debug lines in ReaderWriterLock to sysout produces the following output when run with the test class and config below: Only tried on win2k pro. with jdk: java version "1.4.0" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-b92) Java HotSpot(TM) Client VM (build 1.4.0-b92, mixed mode) ReaderWriterLock: Asking for write lock ReaderWriterLock: Got write lock ReaderWriterLock: About to release write lock piblicID: [null] systemId: [dummy://log4j.dtd] log4j: Threshold ="null". ReaderWriterLock: Asking for write lock ReaderWriterLock: Got write lock ReaderWriterLock: About to release write lock log4j: Class name: [org.apache.log4j.ConsoleAppender] ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock ReaderWriterLock: About to release read lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock log4j: xml.DOMConfigurator - Handling nested <layout> for appender CONSOLE ReaderWriterLock: About to release read lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock ReaderWriterLock: About to release read lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock log4j: config.PropertySetter - Found setter method for property [layout] in class org.apache.log4j. ConsoleAppender ReaderWriterLock: About to release read lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock ReaderWriterLock: About to release read lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock log4j: xml.DOMConfigurator - Will instantiate instance of class [org.apache.log4j.SimpleLayout] ReaderWriterLock: About to release read lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock ReaderWriterLock: About to release read lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock log4j: config.PropertySetter - Set child component of type [org.apache.log4j.SimpleLayout] for [org .apache.log4j.ConsoleAppender]. ReaderWriterLock: About to release read lock log4j: Adding appender named [CONSOLE] to category [root]. ReaderWriterLock: Asking for write lock ReaderWriterLock: Got write lock ReaderWriterLock: About to release write lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock ReaderWriterLock: About to release read lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock DEBUG - Test debug message ReaderWriterLock: About to release read lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock ReaderWriterLock: About to release read lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock INFO - Test info message ReaderWriterLock: About to release read lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock ReaderWriterLock: About to release read lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock WARN - Test warn message ReaderWriterLock: About to release read lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock ReaderWriterLock: About to release read lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock ERROR - Test error message ReaderWriterLock: About to release read lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock ReaderWriterLock: About to release read lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock FATAL - Test fatal message java.lang.Exception: Test Exception at com.jade.logtest.Tester2.<init>(Tester2.java:16) at com.jade.logtest.Tester2.main(Tester2.java:26) ReaderWriterLock: About to release read lock Tester2: logging finished Tester2: shutting down log4j: ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock ReaderWriterLock: Asking for read lock ReaderWriterLock: Got read lock ReaderWriterLock: Asking for write lock <<<!--- hangs here ---!>>> test class: package com.jade.logtest; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; public class Tester2 { private Logger log = Logger.getLogger(Tester2.class); public Tester2() { log.debug("Test debug message"); log.info("Test info message"); log.warn("Test warn message"); log.error("Test error message"); log.fatal("Test fatal message", new Exception("Test Exception")); System.out.println("Tester2: logging finished"); System.out.println("Tester2: shutting down log4j:"); LogManager.shutdown(); System.out.println("Tester2: log4j has been shutdown"); } public static void main(String[] args) { new Tester2(); } } test config: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true"> <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.SimpleLayout"/> </appender> <root> <appender-ref ref="CONSOLE"/> </root> </log4j:configuration> I'm posting this to the dev list to see if somebody can confirm i'm not being stupid. If so i can log it as a bug if required. Regards Andy The information contained in this e-mail is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. If You are not the intended recipient of this e-mail, the use of this information or any disclosure, copying or distribution is Prohibited and may be unlawful. If you received this in error, please contact the sender and delete the material from any computer. The views expressed in this e-mail may not necessarily be the views of The PCMS Group plc and should not be taken as authority to carry out any instruction contained. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]