Package: log4cxx Severity: normal Hi,
the bug reported in #578649 is most likeley due to Jira issue https://issues.apache.org/jira/browse/LOGCXX-322 I am seeing this problem here too, and a preliminary patch solving this for me was published here http://mail-archives.apache.org/mod_mbox/logging-log4cxx-dev/200901.mbox/%3c1232120052.30824.62.ca...@bjhlinux%3e Attaching a ready-to-plug-in dpatch patch file. Please consider adding this patch to the Debian package. Thx, Stephan -- System Information: Debian Release: squeeze/sid APT prefers unstable APT policy: (500, 'unstable') Architecture: amd64 (x86_64) Kernel: Linux 2.6.32-bpo.5-amd64 (SMP w/2 CPU cores) Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash
#! /bin/sh /usr/share/dpatch/dpatch-run ## 130-bugfix-LOGCXX-322.dpatch by Stephan Sürken <stephan.suer...@1und1.de> ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: This is from a patch for Jira issue ## DP: https://issues.apache.org/jira/browse/LOGCXX-322 ## DP: published in the mailing list thread ## DP: http://mail-archives.apache.org/mod_mbox/logging-log4cxx-dev/200901.mbox/%3c1232120052.30824.62.ca...@bjhlinux%3e ## DP: It's not yet (2010 Jul) accepted into svn, but it does fixes possible serious segfaults on program exit. @DPATCH@ diff -urNad log4cxx-0.10.0~/src/main/cpp/aprinitializer.cpp log4cxx-0.10.0/src/main/cpp/aprinitializer.cpp --- log4cxx-0.10.0~/src/main/cpp/aprinitializer.cpp 2008-04-01 00:34:09.000000000 +0200 +++ log4cxx-0.10.0/src/main/cpp/aprinitializer.cpp 2010-07-06 16:04:28.000000000 +0200 @@ -42,7 +42,7 @@ } APRInitializer::~APRInitializer() { - apr_terminate(); + //apr_terminate(); isDestructed = true; } diff -urNad log4cxx-0.10.0~/src/main/cpp/level.cpp log4cxx-0.10.0/src/main/cpp/level.cpp --- log4cxx-0.10.0~/src/main/cpp/level.cpp 2008-04-01 00:34:09.000000000 +0200 +++ log4cxx-0.10.0/src/main/cpp/level.cpp 2010-07-06 16:04:34.000000000 +0200 @@ -30,44 +30,44 @@ IMPLEMENT_LOG4CXX_OBJECT_WITH_CUSTOM_CLASS(Level, LevelClass) LevelPtr Level::getOff() { - static LevelPtr level(new Level(Level::OFF_INT, LOG4CXX_STR("OFF"), 0)); - return level; + static LevelPtr *level = new LevelPtr(new Level(Level::OFF_INT, LOG4CXX_STR("OFF"), 0)); + return *level; } LevelPtr Level::getFatal() { - static LevelPtr level(new Level(Level::FATAL_INT, LOG4CXX_STR("FATAL"), 0)); - return level; + static LevelPtr *level = new LevelPtr((new Level(Level::FATAL_INT, LOG4CXX_STR("FATAL"), 0))); + return *level; } LevelPtr Level::getError() { - static LevelPtr level(new Level(Level::ERROR_INT, LOG4CXX_STR("ERROR"), 3)); - return level; + static LevelPtr *level = new LevelPtr((new Level(Level::ERROR_INT, LOG4CXX_STR("ERROR"), 3))); + return *level; } LevelPtr Level::getWarn() { - static LevelPtr level(new Level(Level::WARN_INT, LOG4CXX_STR("WARN"), 4)); - return level; + static LevelPtr *level = new LevelPtr((new Level(Level::WARN_INT, LOG4CXX_STR("WARN"), 4))); + return *level; } LevelPtr Level::getInfo() { - static LevelPtr level(new Level(Level::INFO_INT, LOG4CXX_STR("INFO"), 6)); - return level; + static LevelPtr *level = new LevelPtr((new Level(Level::INFO_INT, LOG4CXX_STR("INFO"), 6))); + return *level; } LevelPtr Level::getDebug() { - static LevelPtr level(new Level(Level::DEBUG_INT, LOG4CXX_STR("DEBUG"), 7)); - return level; + static LevelPtr *level = new LevelPtr((new Level(Level::DEBUG_INT, LOG4CXX_STR("DEBUG"), 7))); + return *level; } LevelPtr Level::getTrace() { - static LevelPtr level(new Level(Level::TRACE_INT, LOG4CXX_STR("TRACE"), 7)); - return level; + static LevelPtr *level = new LevelPtr((new Level(Level::TRACE_INT, LOG4CXX_STR("TRACE"), 7))); + return *level; } LevelPtr Level::getAll() { - static LevelPtr level(new Level(Level::ALL_INT, LOG4CXX_STR("ALL"), 7)); - return level; + static LevelPtr *level = new LevelPtr((new Level(Level::ALL_INT, LOG4CXX_STR("ALL"), 7))); + return *level; } diff -urNad log4cxx-0.10.0~/src/main/cpp/logmanager.cpp log4cxx-0.10.0/src/main/cpp/logmanager.cpp --- log4cxx-0.10.0~/src/main/cpp/logmanager.cpp 2008-04-01 00:34:09.000000000 +0200 +++ log4cxx-0.10.0/src/main/cpp/logmanager.cpp 2010-07-06 16:04:21.000000000 +0200 @@ -57,7 +57,8 @@ // call to initialize APR and trigger "start" of logging clock // APRInitializer::initialize(); - static spi::RepositorySelectorPtr selector; + static spi::RepositorySelectorPtr * pselector = new spi::RepositorySelectorPtr; + static spi::RepositorySelectorPtr & selector = * pselector; return selector; }