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.

Reply via email to