Hi Balaji, Static Singletons are problematic during system shutdown in multithreaded systems.
This thread discusses that issue in a slightly different context with log4cxx along with a slightly ugly but effective workaround (allocate the object using new and store a raw pointer rather than a smart pointer in the static variable): http://mail-archives.apache.org/mod_mbox/logging-log4cxx-dev/200901.mbox/%3c4975157f.8070...@purplescarab.com%3E Hth, Rhosyn On May 17, 2013 7:50 AM, "Balaji Babu" <babu....@gmail.com> wrote: > 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 > >