You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4cxx-dev@logging.apache.org by ca...@apache.org on 2010/06/14 06:24:05 UTC

svn commit: r954356 - in /logging/log4cxx/trunk/src: changes/changes.xml main/cpp/logger.cpp

Author: carnold
Date: Mon Jun 14 04:24:05 2010
New Revision: 954356

URL: http://svn.apache.org/viewvc?rev=954356&view=rev
Log:
LOGCXX-317: Log4cxx triggers locking inversion which can result in a deadlock

Modified:
    logging/log4cxx/trunk/src/changes/changes.xml
    logging/log4cxx/trunk/src/main/cpp/logger.cpp

Modified: logging/log4cxx/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/changes/changes.xml?rev=954356&r1=954355&r2=954356&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/changes/changes.xml (original)
+++ logging/log4cxx/trunk/src/changes/changes.xml Mon Jun 14 04:24:05 2010
@@ -23,7 +23,6 @@
 </properties>
 <body>
 <release version="0.11.0" date="2010-XX-XX" description="Maintenance release">
-<action issue="LOGCXX-365">Unit tests fail on system dates later than 2009-12-31.</action>
 <action issue="LOGCXX-249">Console appender crashes if layout is not set</action>
 <action issue="LOGCXX-262">socketappendertestcase and xmlsocketappendertestcase not run</action>
 <action issue="LOGCXX-263">Bad link to log4cxx-dev archive</action>
@@ -55,6 +54,8 @@
 <action issue="LOGCXX-304">BasicConfigurator::configure results in writer not set warning.</action>
 <action issue="LOGCXX-340">Transcoder::encodeCharsetName bungles encoding</action>
 <action issue="LOGCXX-351">Download page does not have link to KEYS file</action>
+<action issue="LOGCXX-365">Unit tests fail on system dates later than 2009-12-31.</action>
+<action issue="LOGCXX-317">Log4cxx triggers locking inversion which can result in a deadlock.</action>
 </release>
 <release version="0.10.0" date="2008-04-03" description="First Apache release">
 <action issue="LOGCXX-2">logger.h includes config.h</action>

Modified: logging/log4cxx/trunk/src/main/cpp/logger.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/logger.cpp?rev=954356&r1=954355&r2=954356&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/logger.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/logger.cpp Mon Jun 14 04:24:05 2010
@@ -64,6 +64,8 @@ void Logger::releaseRef() const {
 
 void Logger::addAppender(const AppenderPtr& newAppender)
 {
+   log4cxx::spi::LoggerRepository* rep = 0;
+   {
         synchronized sync(mutex);
 
         if (aai == 0)
@@ -71,8 +73,10 @@ void Logger::addAppender(const AppenderP
                   aai = new AppenderAttachableImpl(*pool);
         }
         aai->addAppender(newAppender);
-   if (repository != 0) {
-           repository->fireAddAppenderEvent(this, newAppender);
+        rep = repository;
+   }
+   if (rep != 0) {
+           rep->fireAddAppenderEvent(this, newAppender);
    }
 }