On Mar 27, 2006, at 5:07 PM, Wyles Eric - ewyles wrote:


Curt, I was able to recreate this consistently using a test application and I was actually able to observe it through gdb and get a better stack
trace (see below). Does this help?


Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1342264400 (LWP 15890)]
0x002046c3 in log4cxx::helpers::ObjectPtrT<log4cxx::Logger>::operator=
(this=0xc, [EMAIL PROTECTED]) at objectptr.h:101
101                     if (this->p != p.p)
(gdb) bt
#0  0x002046c3 in
log4cxx::helpers::ObjectPtrT<log4cxx::Logger>::operator= (this=0xc,
[EMAIL PROTECTED]) at objectptr.h:101
#1  0x002884f9 in log4cxx::Hierarchy::updateParents (this=0x9b1fbd0,
[EMAIL PROTECTED]) at
/home/ewyles/ags1.0code/log4cxx/src/hierarchy.cpp:327


...

If you could file a bug and attach the test application and describe the platform (OS, compiler, processor type and number), it would be very helpful. The stack trace looks unlike the previous one that ended up in pthread, might not be the same problem but worth tracking down.

You previously mentioned that you were using a snapshot build. Was this problem also observed with the current SVN HEAD?

I don't see an obvious way to get to the state shown by the stack trace, the newly created logger's parent member appears to be corrupted or not yet initialized (this=0xc). There is a synchronized constructor at line 168 in hierarchy.cpp that should have blocked simultaneous modifications of the same logger, but maybe there is another path that wasn't guarded. Are all the other threads in innocuous locations at the time of the fault?

Could you run the test under valgrind?  Any diagnostics there?

Reply via email to