I did as you suggested and eliminated the static Level::DEBUG and like objects and that takes care of the issue. The program now terminates with no exceptions.
As a note, there are a number of uses of the Level::XXXXX static objects in src/logger.cpp that may need to be addressed depending on what the decision is regarding whether to keep those static objects. Thanks, James -----Original Message----- From: Curt Arnold [mailto:[EMAIL PROTECTED] Sent: Wednesday, March 08, 2006 3:00 PM To: Log4CXX User Subject: Re: Core file on AIX Okay, we have established the mechanism. Calling any APR methods after calls to apr_terminate is unsafe, though the penalty may vary depending on the platform. In this case, either something is wrong with the approach that we have taken with APRInitialize to attempt to force it to be destructed after the last ObjectImpl is destructed and the problem isn't biting us on other platforms or we did things right the compiler isn't properly ordering the destructors per the standard. The static Level objects aren't essential but are provided as a convenience for ported log4j code where use of Level.DEBUG and the like could be common. There are equivalent static methods getDebug() etc that are not as likely to be affected by compiler issues. If you aren't using Level::DEBUG and the like, you could suppress them and see if the problem goes away or if there are other lurking problems. Since any Level.DEBUG code ported from log4j would need to be changed to Level::DEBUG, it might not be too bad just to force people to switch to Level::getDebug(). It would however affect people who had used log4cxx 0.9.7.