logging-log4cxx-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Curt Arnold <carn...@apache.org>
Subject Re: Segmentation fault log4cxx 0.10.0 on app exit ( RH Linux)
Date Thu, 05 Jun 2008 16:18:43 GMT

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.

  

Mime
View raw message