Assaf Lavie <assaflavie <at> gmail.com> writes: > > I'm afraid this didn't help. Still crashes upon exit.Is caching the raw pointer instead of a smart-pointer a better solution?On Tue, May 26, 2009 at 4:20 PM, Curt Arnold <carnold <at> apache.org> wrote:Try using the one parameter constructor for LoggerPtr, instead of the default constructor and then an assignment: > static LoggerPtr singleton(log4cxx::LogManager::getLogger("some.logger")); > > > There is a slight difference in order of events between the two. Using the default constructor, it is > 1. Construct singleton > 2. Call LogManager::getLogger() > 2a. initialize APR, etc > 3. Assign logger to singleton > With the one parameter it is > 1 Call LogManager::getLogger() > 1a initialize APR > 3. Construct singleton > Since destruction events occur in reverse order, using the one-parameter constructor results in APR being destroyed last. > > > > On May 26, 2009, at 3:37 AM, Assaf Lavie wrote: > My program always crashes when I try to cache the LoggerPtr returned from getLogger in a local static variable (i.e. singleton) like this: > LoggerPtr MyLogger() > { > static LoggerPtr singleton = log4cxx::LogManager::getLogger("some.logger"); > return singleton; > } > I assume this happens because of some APR related effect. Can someone please shed light on this? Does this happen to you? > > > > > > > > >
Hello Assaf Lavie, May I know whether you got the solution for this issue. Me too facing the same kind of issue in my application. The application is crashing at exit by pointing the apr_thread_mutex_destroy. It would be great help if I get the solution to resolve this issue. Thanks in advance. Balaji