You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Thorsten Schöning (Jira)" <lo...@logging.apache.org> on 2020/08/07 16:38:00 UTC

[jira] [Resolved] (LOGCXX-309) Stack Overflow

     [ https://issues.apache.org/jira/browse/LOGCXX-309?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Thorsten Schöning resolved LOGCXX-309.
--------------------------------------
    Resolution: Cannot Reproduce

Because we are trying to reduce the backlog of open issues, I'm closing this one right now. The described environment in which the problem has been reported originally is pretty outdated these days and things might have been fixed already with a newer version of log4cxx and/or a new environment. If this concrete problem is still relevant for someone, feel free to reopen and provide the necessary details. Otherwise it's best to create a new issue describing the new environment and problem.

> Stack Overflow
> --------------
>
>                 Key: LOGCXX-309
>                 URL: https://issues.apache.org/jira/browse/LOGCXX-309
>             Project: Log4cxx
>          Issue Type: Bug
>    Affects Versions: 0.10.0
>         Environment: Windows XP SP2, MFC, Visual C++ 8.0
>            Reporter: Jason
>            Assignee: Curt Arnold
>            Priority: Major
>
> I have encountered a stack overflow exception when trying to use log4cxx with multiple threads writing log messages. The logging code in my project is as follows for each thread:
> .....
> USES_CONVERSION;
> CString msg;
> msg.Format(_T("[%s] PACKET: checksum: %x [OK], timestamp: %llu, sync.time: %u, measurement: %u"), 
> 						m_sName, pDataMessage->CheckSum, pDataMessage->TimeStamp, 
> 						pDataMessage->ProfileMeasurement.SyncTime,
> 						pDataMessage->ProfileMeasurement.MeasurementNumber);
> LPCSTR lpszLogMsg = T2CA( (LPCTSTR)( msg.GetBuffer()) );
> LOG4CXX_DEBUG(logger_RPReceiverThread, lpszLogMsg);
> msg.ReleaseBuffer();
> .....
> I am using a single appender:
> log4j.rootLogger=debug, R
> log4j.appender.R=org.apache.log4j.RollingFileAppender
> log4j.appender.R.File=rpviewer.log
> log4j.appender.R.MaxFileSize=1000KB
> log4j.appender.R.MaxBackupIndex=5
> log4j.appender.R.layout=org.apache.log4j.PatternLayout
> log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%p] %m%n
> A stack overflow exception occurs at the LOG4CXX_DEBUG line. The relevant part of the stack trace from Visual C++ 8.0 is as follows:
> ..............
>  	kernel32.dll!7c80e8a8() 	
> 	RPViewer.exe!_apr_time_exp_lt@12()  + 0x61 bytes	C
>  	RPViewer.exe!log4cxx::helpers::TimeZoneImpl::LocalTimeZone::explode()  + 0xa9 bytes	C++
>  	RPViewer.exe!log4cxx::helpers::SimpleDateFormat::format()  + 0x2f bytes	C++
>  	RPViewer.exe!log4cxx::pattern::CachedDateFormat::format()  + 0x195 bytes	C++
>  	RPViewer.exe!log4cxx::pattern::DatePatternConverter::format()  + 0x3c bytes	C++
>  	RPViewer.exe!log4cxx::PatternLayout::format()  + 0x9b bytes	C++
>  	RPViewer.exe!log4cxx::WriterAppender::subAppend()  + 0x61 bytes	C++
>  	RPViewer.exe!log4cxx::WriterAppender::append()  + 0x32 bytes	C++
>  	RPViewer.exe!log4cxx::AppenderSkeleton::doAppend()  + 0x253 bytes	C++
>  	RPViewer.exe!log4cxx::helpers::AppenderAttachableImpl::appendLoopOnAppenders()  + 0x6e bytes	C++
>  	RPViewer.exe!log4cxx::Logger::callAppenders()  + 0xc1 bytes	C++
>  	RPViewer.exe!log4cxx::Logger::forcedLog()  + 0xc4 bytes	C++
>  	RPViewer.exe!RPReceiverThread::DoWork()  Line 255 + 0xd8 bytes	C++
>  	mfc80u.dll!78306c82() 	
>  	mfc80u.dll!78306c8d() 	
>  	kernel32.dll!7c809abc() 	
> ....................................
> Or sometimes:
> ....................
>  	kernel32.dll!7c8024f0() 	
>  	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	
>  	ntdll.dll!7c90dacc() 	
>  	ntdll.dll!7c912dc8() 	
>  	kernel32.dll!7c81cbe6() 	
>  	kernel32.dll!7c81cc23() 	
>  	msvcr80d.dll!_getptd_noexit()  Line 585	C
>  	kernel32.dll!7c81ac47() 	
>  	msvcr80d.dll!_write_nolock(int fh=3, const void * buf=0x01c93dd0, unsigned int cnt=1)  Line 152 + 0x24 bytes	C
>  	msvcr80d.dll!_write(int fh=3, const void * buf=0x01c93dd0, unsigned int cnt=1)  Line 78 + 0x11 bytes	C
>  	msvcr80d.dll!_flsbuf(int ch=50, _iobuf * str=0x10310bf0)  Line 189 + 0x11 bytes	C
>  	msvcr80d.dll!_fputwc_nolock(wchar_t ch=L'2', _iobuf * str=0x10310bf0)  Line 143 + 0x58 bytes	C
>  	msvcr80d.dll!fputws(const wchar_t * string=0x01fc5028, _iobuf * stream=0x10310bf0)  Line 57 + 0x18 bytes	C
>  	RPViewer.exe!log4cxx::helpers::SystemOutWriter::write()  + 0x54 bytes	C++
>  	RPViewer.exe!log4cxx::helpers::SystemOutWriter::write()  + 0x10 bytes	C++
>  	RPViewer.exe!log4cxx::WriterAppender::subAppend()  + 0xbe bytes	C++
>  	RPViewer.exe!log4cxx::WriterAppender::append()  + 0x32 bytes	C++
>  	RPViewer.exe!log4cxx::AppenderSkeleton::doAppend()  + 0x277 bytes	C++
>  	RPViewer.exe!log4cxx::helpers::AppenderAttachableImpl::appendLoopOnAppenders()  + 0xbc bytes	C++
>  	RPViewer.exe!log4cxx::Logger::callAppenders()  + 0xc1 bytes	C++
>  	RPViewer.exe!log4cxx::Logger::forcedLog()  + 0xd1 bytes	C++
> 	RPViewer.exe!RPReceiverThread::DoWork()  Line 256 + 0xa8 bytes	C++
>  	RPViewer.exe!CRPWorkerThread::ThreadProc(void * pParam=0x0125dd30)  Line 26 + 0xe bytes	C++
>  	mfc80ud.dll!_AfxThreadEntry(void * pParam=0x0012e0e8)  Line 109 + 0xf bytes	C++
>  	msvcr80d.dll!_callthreadstartex()  Line 348 + 0xf bytes	C
>  	msvcr80d.dll!_threadstartex(void * ptd=0x0133c810)  Line 331	C
>  	kernel32.dll!7c80b713() 	
> ................................
> Is there something that I might have done wrong here?



--
This message was sent by Atlassian Jira
(v8.3.4#803005)