Hi, Thanks for reading this post. I have a C program running on CentOS 5.11, compiled through g++ calling a C++ library and this C++ library try to use log4cxx to do logging. However, when I initialize LoggerPtr Log4XXLogger::loggerMyMain(Logger::getLogger( "main")); as global variable, my program hang at startup and gdb stack is like
#0 0xffffe405 in __kernel_vsyscall () #1 0x0067bcc5 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0x0096b9cc in __cxa_guard_acquire () from /usr/lib/libstdc++.so.6 #3 0xf764fa0e in log4cxx::helpers::Transcoder::decode (src="70023", dst="Mutex exception: stat = ") at transcoder.cpp:247 #4 0xf763b7b1 in log4cxx::helpers::StringHelper::toString (n=70023, pool=..., s="Mutex exception: stat = ") at stringhelper.cpp:108 #5 0xf75c6644 in log4cxx::helpers::MutexException::formatMessage (stat=70023) at exception.cpp:228 #6 0xf75c66ef in log4cxx::helpers::MutexException::MutexException (this=0x866eb38, stat=70023) at exception.cpp:213 #7 0xf7600c4a in log4cxx::helpers::Mutex::Mutex (this=0x8666a30, p=...) at mutex.cpp:37 #8 0xf75a4e56 in LocaleCharsetDecoder () at charsetdecoder.cpp:360 #9 log4cxx::helpers::CharsetDecoder::createDefaultDecoder () at charsetdecoder.cpp:430 #10 0xf75a51b1 in log4cxx::helpers::CharsetDecoder::getDefaultDecoder () at charsetdecoder.cpp:435 #11 0xf764fb28 in log4cxx::helpers::Transcoder::decode (src="main", dst="") at transcoder.cpp:247 #12 0xf75f8bc8 in log4cxx::LogManager::getLogger (name="main") at logmanager.cpp:120 #13 0xf75f0812 in log4cxx::Logger::getLogger (name=0xf778f9a0 "main") at logger.cpp:496 #14 0xf778d769 in Log4CXXLoggerInner::Log4CXXLoggerInner (this=0xf7799ba8) at log4CXXLoggerInner.cpp:7 #15 0xf778d35d in __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535) at log4XXLogger.cpp:4 #16 0xf778d399 in global constructors keyed to _ZN12Log4XXLogger10log4cInnerE() () at log4XXLogger.cpp:30 #17 0xf778dfc6 in __do_global_ctors_aux () from /mycompany/pkgs/linux/intel/packagename/packageversion/lib/libserver.so.2 #18 0xf776c10d in _init () from /mycompany/pkgs/linux/intel/packagename/packageversion/lib/libserver.so.2 #19 0x004fc493 in call_init () from /lib/ld-linux.so.2 #20 0x004fc5a3 in _dl_init_internal () from /lib/ld-linux.so.2 #21 0x004ee84f in _dl_start_user () from /lib/ld-linux.so.2 but if I make it as part of class, start the global variable as NULL and then new and assign as class A below class A { public: A() { string appPath = getenv("APPDIR"); appPath = appPath + "/" + LOG4CXX_CONFIG_FILE_NAME; // Load configuration file DOMConfigurator::configure(appPath.c_str()); m_serviceLogger = Logger::getLogger("tuxedoService"); } void log() { LOG4CXX_ERROR(m_serviceLogger, "This is a Test log"); } private: LoggerPtr m_serviceLogger; }; my log message is unpredictable, sometimes produce 0 line sometimes produces many lines. Can anybody tell me how to resolve this issue? thanks -- Sent from: http://apache-logging.6191.n7.nabble.com/Log4cxx-Users-f30946.html