On Jun 4, 2008, at 1:14 PM, GregN wrote:


I made changes you recommended in src/main/cpp/objectimpl.cpp but it
unfortunately didn't help.

It seems that #if statement is true

#if (defined(__i386__) || defined(__x86_64__)) && defined(__GNUC__)
&& !defined(USE_GENERAL_ATOMICS)

  __i386__ - defined
 __x86_64__ - NOT defined
 __GNUC__ - defined
 USE_GENERAL_ATOMICS - NOT defined
 (defined(__i386__) || defined(__x86_64__)) && defined(__GNUC__) &&
!defined(USE_GENERAL_ATOMICS) - defined


The previous stack trace suggested that the expression was false.


The stack is:
C++ [C/C++ Local Application]   
        gdb/mi (6/4/08 1:46 PM) (Suspended)     
                Thread [1] (Suspended: Signal 'SIGSEGV' received. Description:
Segmentation fault.)    
                        27 apr_pool_create_ex()
/home/grn/Projects/apr-1.2.12/memory/unix/apr_pools.c:249 0xb7d22fb7    
                        26 Pool()
/home/grn/Projects/apache-log4cxx-0.10.0/src/main/cpp/pool.cpp:34 0xb7e47db7
                        25 log4cxx::helpers::IOException::formatMessage()
/home/grn/Projects/apache-log4cxx-0.10.0/src/main/cpp/exception.cpp: 149
0xb7df5176      
                        24 IOException()
/home/grn/Projects/apache-log4cxx-0.10.0/src/main/cpp/exception.cpp: 130
0xb7df65f0      
                        23 log4cxx::helpers::FileOutputStream::close()
/home/grn/Projects/apache-log4cxx-0.10.0/src/main/cpp/ fileoutputstream.cpp:71
0xb7dfef2a      
                        22 log4cxx::rolling::CountingOutputStream::close()
/home/grn/Projects/apache-log4cxx-0.10.0/src/main/include/log4cxx/ helpers/objectptr.h:157
0xb7e58102      
                        21 log4cxx::helpers::OutputStreamWriter::close()
/home/grn/Projects/apache-log4cxx-0.10.0/src/main/include/log4cxx/ helpers/objectptr.h:157
0xb7e3f278      
                        20 log4cxx::WriterAppender::closeWriter()
/home/grn/Projects/apache-log4cxx-0.10.0/src/main/include/log4cxx/ helpers/objectptr.h:157
0xb7e850b1      
                        19 log4cxx::WriterAppender::close()
/home/grn/Projects/apache-log4cxx-0.10.0/src/main/cpp/ writerappender.cpp:143
0xb7e851cf      
                        18 log4cxx::AppenderSkeleton::finalize()
/home/grn/Projects/apache-log4cxx-0.10.0/src/main/cpp/ appenderskeleton.cpp:80
0xb7dc8846      
                        17 ~FileAppender()
/home/grn/Projects/apache-log4cxx-0.10.0/src/main/cpp/ fileappender.cpp:88
0xb7dfafd3      
                        16 ~RollingFileAppenderSkeleton()
/home/grn/Projects/apache-log4cxx-0.10.0/src/main/include/log4cxx/ helpers/objectptr.h:100
0xb7dddedc      
                        15 ~RollingFileAppender()
/home/grn/Projects/apache-log4cxx-0.10.0/src/main/cpp/ obsoleterollingfileappender.cpp:87
0xb7e37c55      
                        14 log4cxx::helpers::ObjectImpl::releaseRef()
/home/grn/Projects/apache-log4cxx-0.10.0/src/main/cpp/objectimpl.cpp: 84
0xb7e35e28      
                        13 log4cxx::AppenderSkeleton::releaseRef()
/home/grn/Projects/apache-log4cxx-0.10.0/src/main/cpp/ appenderskeleton.cpp:68
0xb7dc8819      
                        12 ~ObjectPtrT()
/home/grn/Projects/apache-log4cxx-0.10.0/src/main/include/log4cxx/ helpers/objectptr.h:100
0xb7dc799c      
                        11 ~AppenderAttachableImpl()
/usr/include/c++/3.4.3/bits/stl_construct.h:107 0xb7dc852c      
                        10 log4cxx::helpers::ObjectImpl::releaseRef()
/home/grn/Projects/apache-log4cxx-0.10.0/src/main/cpp/objectimpl.cpp: 84
0xb7e35e28      
                        9 log4cxx::helpers::AppenderAttachableImpl::releaseRef()
/home/grn/Projects/apache-log4cxx-0.10.0/src/main/cpp/ appenderattachableimpl.cpp:41
0xb7dc6bcd      
                        8 ~Logger()
/home/grn/Projects/apache-log4cxx-0.10.0/src/main/include/log4cxx/ helpers/objectptr.h:100
0xb7e2065c      
                        7 log4cxx::helpers::ObjectImpl::releaseRef()
/home/grn/Projects/apache-log4cxx-0.10.0/src/main/cpp/objectimpl.cpp: 84
0xb7e35e28      
                        6 log4cxx::Logger::releaseRef()
/home/grn/Projects/apache-log4cxx-0.10.0/src/main/cpp/logger.cpp:62
0xb7e1fc65      
                        5 ~ObjectPtrT() 
/usr/local/include/log4cxx/helpers/objectptr.h:100
0x080550e3      
                        4 __tcf_1() /home/grn/Projects/C++/..project related.. 
0x08083e91       
                        3 exit()  0x004ce467    
                        2 __libc_start_main()  0x004b8e2d       
                        1 _start()  0x080545ad  


This stack trace is different since it doesn't die in apr_atomic_dec32, but the underlying problem is still the same, APR is terminated prematurely during destruction of static variables. I have spent a little time trying to reproduce this issue, but haven't succeeded yet.

As a work around until a resolution, you could try commenting out the apr_terminate() call in src/main/cpp/aprinitializer.cpp.

Reply via email to