logging-log4cxx-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tim Jones" <...@mr-dog.net>
Subject Seg Fault in log4cxx::helpers::ObjectPtrT<log4cxx::Logger>::operator=()...
Date Tue, 26 Jun 2007 17:23:37 GMT

I'm getting a seg fault in
log4cxx::helpers::ObjectPtrT<log4cxx::Logger>::operator=() when assigning a
NULL value to delete a reference to the logger.

The actual sig fault is here, in APR:

Thread [1] (Suspended: Signal 'SIGABRT' received. Description: Aborted.)
    13 __kernel_vsyscall()  0xffffe410
    12 raise()  0xb7ccddf0
    11 abort()  0xb7ccf641
    10 apr_atomic_casptr() apr_atomic.c:376 0x080fa69c
    9 log4cxx::helpers::ObjectPtrBase::exchange() objectptr.cpp:34
    8 ~ObjectPtrT() objectptr.h:74 0x0804de39
    7 ~ThreadSpecificData() ThreadsHelper.cpp:115 0x08055bb2

This only seems to happen when I'm deleting my own allocated APR pool within
a thread (a sub-pool of the roots), and then afterwards call the log4cxx
operator= as above to remove the reference to the logger.

If I don't call apr_pool_destroy on my thread local pool then I can remove
the loggers reference, but the pool never gets freed (as checked by building
apr with its pool debug stuff on).

Are there any guidelines for using both log4cxx and APR within the same app?
Or some pointers, examples, etc.?



View raw message