logging-log4cxx-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michel Marti <...@objectxp.com>
Subject Re: log4cxx crashing when used in 'atexit' function.
Date Sat, 30 Aug 2008 08:16:41 GMT
Curt Arnold wrote:
> It always helps if you can specify the compiler and operating system
> and a stack trace would also be nice.
* Debian Lenny (x86)
* Linux 2.6.25
* GLIBC v2.7
* GCC 4.3.1
* APR 1.3.3 (self-compiled)
* APR-util 1.3.4 (self-compiled)

Backtrace:

#0  0xb7aadaf4 in mutex_hash (mem=0x909bd2c) at atomic/unix/mutex.c:78
#1  0xb7aadbfc in apr_atomic_dec32 (mem=0x909bd2c) at 
atomic/unix/mutex.c:138
#2  0xb7eeedd4 in log4cxx::helpers::ObjectImpl::releaseRef 
(this=0x909bd28) at objectimpl.cpp:44
#3  0xb7ed7c7c in log4cxx::Logger::releaseRef (this=0x909bcf0) at 
logger.cpp:62
#4  0x08049489 in ~ObjectPtrT (this=0x804acf4) at 
.../include/log4cxx/helpers/objectptr.h:100
#5  0xb7c16ab9 in exit () from /lib/i686/cmov/libc.so.6
#6  0xb7bfe45d in __libc_start_main () from /lib/i686/cmov/libc.so.6
#7  0x08049081 in _start ()

> One likely  possibility is that APR may have already shut down. Calling 
> apr after
> a call to apr_terminate would likely seg fault.  If you have the ability 
> to debug, setting a break point on the atexit and apr_terminate and 
> seeing which gets called first and what triggers the apr_terminate would 
> be helpful.
$ gdb ./crash
(gdb) break cleanup
Breakpoint 1 at 0x8049203: file crash.cpp, line 8.
(gdb) break apr_terminate
Function "apr_terminate" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 2 (apr_terminate) pending.
(gdb) r
Starting program: /home/mma/l4c/custom/crash
[Thread debugging using libthread_db enabled]
[New Thread 0xb79f0910 (LWP 1430)]
[Switching to Thread 0xb79f0910 (LWP 1430)]

Breakpoint 1, cleanup () at crash.cpp:8
8               LOG4CXX_DEBUG(log, "Oops...");
(gdb) c
Continuing.
979 [0xb79f0910] DEBUG main null - Oops...

Breakpoint 2, apr_terminate () at misc/unix/start.c:78
78          initialized--;
Current language:  auto; currently c
(gdb) bt
#0  apr_terminate () at misc/unix/start.c:78
#1  0xb7e5d82b in ~APRInitializer (this=0xb7fa15f8) at 
aprinitializer.cpp:52
#2  0xb7c04ab9 in exit () from /lib/i686/cmov/libc.so.6
#3  0xb7bec45d in __libc_start_main () from /lib/i686/cmov/libc.so.6
#4  0x08049081 in _start ()
(gdb) c
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0xb7a9baf4 in mutex_hash (mem=0x92e8d2c) at atomic/unix/mutex.c:78
78          apr_thread_mutex_t *mutex = hash_mutex[ATOMIC_HASH(mem)];
(gdb)


Mime
View raw message