logging-log4cxx-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "rhosyn@purplescarab.com" <rho...@purplescarab.com>
Subject Re: Segfault on application exit (sometimes)
Date Wed, 18 Mar 2009 22:16:24 GMT
John Barker wrote:
>
> We’ve seen this as well, this seems to be related:
>
> http://www.nabble.com/Fix-possible-crash-on-exit-when-using-static-Loggers-td19473591.html
>
> *From:* david.weber@l-3com.com [mailto:david.weber@l-3com.com]
> *Sent:* 18 March 2009 17:31
> *To:* Log4CXX User
> *Subject:* RE: Segfault on application exit (sometimes)
>
> I think that this is different, looking at the stack trace compared to 
> what I'm seeing.
>
> I'm looking at the SVN HEAD, and I think I'm going to grab that, and 
> try compiling it.
>
> I think our version of 0.10.0 is *really* old in comparison to this..
>
> I'll try that, and let you guys know.
>
> --dw
>
>     ------------------------------------------------------------------------
>
>     *From:* Unnikrishnan Udinoor [mailto:uudinoor@Brocade.COM]
>     *Sent:* Wednesday, March 18, 2009 12:10 PM
>     *To:* Log4CXX User
>     *Subject:* RE: Segfault on application exit (sometimes)
>
>     Hi David,
>
>     Copying a mail thread discussing similar issues. Hope this will
>     help to know the root cause.
>
>     Regards
>
>     Unni
>
>     -----Original Message-----
>     From: Unnikrishnan Udinoor
>     Sent: Thursday, May 29, 2008 2:18 PM
>     To: Log4CXX User
>     Subject: RE: Segmentation fault log4cxx 0.10.0 on app exit ( RH Linux)
>
>     I am facing similar issue with Solaris.
>
>     The following link explains my issue.
>
>     http://mail-archives.apache.org/mod_mbox/logging-log4cxx-user/200804.mbo
>
>     x/%3cEB4C465FC146B54DAADF4C8C0637BC6202BA6C6D@HQ-EXCH-4.corp.brocade.com
>
>     %3e
>
>     Couldn't really get out of this yet.
>
>     Regards
>
>     Unni
>
>     -----Original Message-----
>
>     From: Dale King [mailto:dalewking@gmail.com]
>
>     Sent: Thursday, May 29, 2008 2:06 PM
>
>     To: Log4CXX User
>
>     Subject: Re: Segmentation fault log4cxx 0.10.0 on app exit ( RH Linux)
>
>     Do you have any of the network appenders or possibly the AsyncAppender
>
>     configured? I'm guessing this is the same thread shutdown issues I
>
>     reported on Windows in this thread:
>
>     http://www.nabble.com/A-few-problems-to-report-to17013024.html
>
>     The tip should be a bit better, but you might get a delay on shutdown.
>
>     On Thu, May 29, 2008 at 3:15 PM, GregN <grshore@yahoo.com> wrote:
>
>     >
>
>     > Segmentation fault on app exit.
>
>     >
>
>     > log4cxx, apr-1.2.12 and apr-util-1.2.12 had been build from tar
>     file.
>
>     >
>
>     > gcc -v
>
>     > Reading specs from /usr/lib/gcc/i386-redhat-linux/3.4.3/specs
>
>     > Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
>
>     > --infodir=/usr/share/info --enable-shared --enable-threads=posix
>
>     > --disable-checking --with-system-zlib --enable-__cxa_atexit
>
>     > --disable-libunwind-exceptions --enable-java-awt=gtk
>
>     > --host=i386-redhat-linux
>
>     > Thread model: posix
>
>     > gcc version 3.4.3 20050227 (Red Hat 3.4.3-22.1)
>
>     >
>
>     > $ uname -a
>
>     > Linux gredhat4 2.6.9-11.EL #1 Fri May 20 18:17:57 EDT 2005 i686 i686
>
>     i386
>
>     > GNU/Linux
>
>     >
>
>     >
>
>     > Test app successfully writes one line in log file with code:
>
>     > int main() {
>
>     > PropertyConfigurator::configure(LOG_PROPERTIES_FILE_LOCATION);
>
>     > LoggerPtr LogManager::cplusLoggerPtr = Logger::getLogger("API");
>
>     > LOG4CXX_INFO(cplusLoggerPtr , "test_info");
>
>     > return 0;
>
>     > }
>
>     >
>
>     >
>
>     > C++ [C/C++ Local Application]
>
>     > gdb/mi (5/29/08 2:31 PM) (Suspended)
>
>     > Thread [1] (Suspended: Signal 'SIGSEGV' received.
>
>     Description:
>
>     > Segmentation fault.)
>
>     > 8 apr_atomic_dec32()
>
>     atomic/unix/apr_atomic.c:310 0xb7d1efba
>
>     > 7 log4cxx::helpers::ObjectImpl::releaseRef()
>
>     >
>
>     /home/grn/Projects/apache-log4cxx-0.10.0/src/main/cpp/objectimpl.cpp:44
>
>     > 0xb7e36da0
>
>     > 6 log4cxx::Logger::releaseRef()
>
>     > /home/grn/Projects/apache-log4cxx-0.10.0/src/main/cpp/logger.cpp:62
>
>     > 0xb7e20c5d
>
>     > 5 ~ObjectPtrT()
>
>     /usr/local/include/log4cxx/helpers/objectptr.h:100
>
>     > 0x080550e3
>
>     > 4 __tcf_1() /home/..project specific...
>
>     > 3 exit() 0x004ce467
>
>     > 2 __libc_start_main() 0x004b8e2d
>
>     > 1 _start() 0x080545ad
>
>     >
>
>     > Any suggestion is welcome...
>
>     >
>
>     > Thanks,
>
>     > Gregory
>
>     >
>
>     > --
>
>     > View this message in context:
>
>     http://www.nabble.com/Segmentation-fault-log4cxx-0.10.0-on-app-exit-%28-
>
>     RH-Linux%29-tp17543738p17543738.html
>
>     > Sent from the Log4cxx - Users mailing list archive at Nabble.com.
>
>     >
>
>     >
>
>     -- 
>
>     Dale King
>
>     ------------------------------------------------------------------------
>
>     *From:* david.weber@l-3com.com [mailto:david.weber@l-3com.com]
>     *Sent:* Wednesday, March 18, 2009 8:29 AM
>     *To:* log4cxx-user@logging.apache.org
>     *Subject:* Segfault on application exit (sometimes)
>
>     Hello,
>
>     We're seeing a strange occurance which I'm able to reproduce
>     pretty well. We're running RHEL 4.0, with LOG4CXX 0.10.0.
>
>     The short version, is that we have objects, each with a LoggerPtr
>     member variable. We init the ptr in the constructor, and are
>     seeing occasional seg faults when the application terminates. (The
>     application is actually a boost automated unit test).
>
>     I've caught the segfault in DDD, and it is in Transcoder::encode,
>     where the static CharsetEncoder local variable ends up being set
>     to null.
>
>     I haven't tracked down exactly *why* yet, but my gut tells me that
>     it has to do with the LOG4CXX subsystem being destroyed prior to
>     all of the class users being destroyed.
>
>     So, some questions:
>
>     Is this a reasonable hypotheses? I obviously have some more
>     tracking down to do, but I will not be able to provide any core
>     dump unfortunately.
>
>     Is it a bad idea to log messages in a class destructor?
>
>     Any suggestions to prevent this segfault from occuring?
>
>     Thanks
>
>     --dw
>

We had many problems with crashes-on-process exit() as discussed in this 
thread:

http://www.nabble.com/Crashes-on-exit()-from-multithreaded-program-using-log4cxx-to21502030.html



They manifested in a variety of different ways.

The underlying problem we had, fundamentally, was with initialisation 
(and hence destruction) order of statics in different translation units 
in C++

If you have an object which tries to trace in it's destructor - and it's 
destructor runs after that of one of the log4cxx objects - then trouble 
ensues.

A (slightly nasty) workaround/patch which helped us (essentially by 
leaking the log4cxx statics and preventing them from ever being 
destructed on exit - and in particular, from being destructed before 
they had _definitely_ been completely finished with) was attached as a 
patch.

Hth,

Rhosyn


Mime
View raw message