Re: [Log4cplus-devel] Thread blocking when calling ev.gatherThreadSpecificData ();
Logging Framework for C++
Brought to you by:
wilx
From: Václav Z. <vha...@gm...> - 2014-03-14 12:48:15
|
On 14 March 2014 13:43, Andersen, Jesper Behrens (E W EN R&D DT ES 2 1) wrote: > Hi, > > Setup: > log4cplus version 1.1.2.0. > Compiled for Windows XP target platform > Compiled using visual studio 2010 compiler as dynamic libraries. > Logging is done from multiple threads. > > Loggers are configured with the AsyncAppender and a sub RollingFileAppender > like this: > ######################################################################## > ## log file configuration (to disable, remove it from the rootLogger) ## > ## > log4cplus.appender.IRlogfile=log4cplus::AsyncAppender > log4cplus.appender.IRlogfile.QueueLimit=100 > > log4cplus.appender.IRlogfile.Appender=log4cplus::RollingFileAppender > log4cplus.appender.IRlogfile.Appender.layout=log4cplus::PatternLayout > log4cplus.appender.IRlogfile.Appender.BufferSize=10000 > log4cplus.appender.IRlogfile.Appender.ImmediateFlush=true > ## > ## The name and location for the log file > log4cplus.appender.IRlogfile.Appender.File=d:/IRCore.log.txt > ## > ## The frequency at which log files will be rotated > log4cplus.appender.IRlogfile.Appender.DatePattern='.'yyyy-MM-dd > ## > ## The maximum size of log files before they are rotated > log4cplus.appender.IRlogfile.Appender.MaxFileSize=10MB > ## > ## The number of backup log files to keep > log4cplus.appender.IRlogfile.Appender.MaxBackupIndex=10 > ## > ## pattern used for the log file > log4cplus.appender.IRlogfile.Appender.layout.ConversionPattern=%D{%Y-%m-%d > %H:%M:%S.%q};%c;%m%n > > > I have experienced one of my threads blocked for aprox. 1500 ms. > This triggered my watchdog thread to write a minidump file. This mini dump > indicated that the blocking thread was located somewhere in the > ev.gatherThreadSpecificData() method. > > Maybe my configuration is faulted? > > From the source I can see it must have been in one of the these methods the > block occured: > > getNDC (); > getMDCCopy (); > getThread (); > getThread2 (); > > Can anybody see / explain why a block can occur? I have no explanation. Could you post the tail of the thread stack? -- VZ |