|
Hello, This is a lengthy explanation but please stay with me. I’m
hoping someone can help me track down some segmentation faults we have been
experiencing with log4cxx. We are using one of the daily tar
files from littletux.org. The file we pulled was from sometime around Oct
25, 2005. Here is the version info from the build.xml: build.xml:<property
name="version" value="0.9.8"/> build.xml:<property
name="apr.version" value="1.2.2"/> build.xml:<property
name="aprutil.version" value="1.2.2"/> build.xml:<property
name="cppunit.version" value="1.10.2"/> We
have made some slight modifications to the source to get a SocketAppender up
and running. We just had to implement the LoggingEvent::write() method so that
it would write to the output stream using the format that our logging server
expects. This is a multi-threaded application
running on RHEL 3 compiled under gcc. Here is the output of gcc -v: [EMAIL PROTECTED]
ewyles]$ gcc -v /usr/lib/gcc-lib/i386-redhat-linux/3.2.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
--host=i386- redhat-linux Thread
model: posix gcc
version 3.2.3 20030502 (Red Hat Linux 3.2.3-47) In our code, we declare loggers in 3
different ways. 1 – We have a global logger in
a file called ‘logger.cpp’: log4cxx::LoggerPtr
logger(log4cxx::Logger::getLogger(“<application_name>”));
We have a header file called ‘logging.h’ that is included by all
other source files in our project: extern
LoggerPtr logger; 2 – Each class in our project
has a logger as a private member variable. In the class header file: class
<class_name> { private:
static
LoggerPtr logger; } And then in the
.cpp file for the class we do this: LoggerPtr <class_name>::logger(Logger::getLogger("<application_name>.<class_name>")); 3 – Each method of each class
has a locally declared logger. In the .cpp file for the class, each method
looks like this: short <class_name>::<method_name>() {
static
LoggerPtr logger(Logger::getLogger("<application_name>.<class_name>.<method_name>"));
//logic
for the class goes here } The idea is that each method in our
application will have a logger called application.class.method and that we can
set the logging level for the application as a whole or fine tune it at the
class and/or method levels for debugging. Now for the actual problem. Once in a
while, our application crashes with a segmentation fault. The stack trace looks
like this: Received signal 11 (Segmentation
fault) from process [4] Stack Trace: 0 :
<application_name>(_ZN14clsApplication18FatalSignalHandlerEiP7siginfoPv+0x27e)
[0x80fc050] 1 : /lib/tls/libpthread.so.0
[0xf93e50] 2 :
/usr/local/hive/i386/ags/lib/liblog4cxx.so(_ZN7log4cxx9Hierarchy9getLoggerERKSsRKNS_7helpers10ObjectPtrTINS_3spi13LoggerFactoryEEE+0x251)
[0x608a09] 3 :
/usr/local/hive/i386/ags/lib/liblog4cxx.so(_ZN7log4cxx9Hierarchy9getLoggerERKSs+0x39)
[0x6087ab] 4 :
/usr/local/hive/i386/ags/lib/liblog4cxx.so(_ZN7log4cxx10LogManager9getLoggerERKSs+0x3c)
[0x57528a] 5 :
/usr/local/hive/i386/ags/lib/liblog4cxx.so(_ZN7log4cxx6Logger9getLoggerEPKc+0x53)
[0x6063b9] 6-14 : <various classes
specific to our application> 15 :
/lib/tls/libpthread.so.0 [0xf8ddec] 16 :
/lib/tls/libc.so.6(__clone+0x5a) [0xb9da2a] There are 2 times we have seen this
occur. Most frequently, it happens when the application is attempting to start
up. We create several thread on startup and once in a while we will get this
segmentation fault. The other case where we have seen this is after the application
has been running for a while, but needs to create more threads. Once in a while
if we are creating many threads for some purpose, we will get this segmentation
fault. It could be coincidence, but it seems that in both cases where we run
into this error it is during times when we are creating threads. Does anyone have any ideas or
suggestions? I have a gcc disassembly of our _ZN7log4cxx9Hierarchy9getLoggerERKSsRKNS_7helpers10ObjectPtrTINS_3spi13LoggerFactoryEEE
method if that would be useful to anyone. Log4cxx is working great for us, we
just need to figure out how to get around this segmentation fault! ************************************************************************* The information contained in this communication is confidential, is intended only for the use of the recipient named above, and may be legally privileged. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please resend this communication to the sender and delete the original message or any copy of it from your computer system. Thank you. ************************************************************************* |
- segmentation faults Wyles Eric - ewyles
- Re: segmentation faults Curt Arnold
- Re: segmentation faults Curt Arnold
- RE: segmentation faults Wyles Eric - ewyles
- RE: segmentation faults Wyles Eric - ewyles
- RE: segmentation faults Wyles Eric - ewyles
- Re: segmentation faults Curt Arnold
- RE: segmentation faults Wyles Eric - ewyles
- Re: segmentation faults Curt Arnold
- RE: segmentation faults Wyles Eric - ewyles
- RE: segmentation faults Wyles Eric - ewyles
