[ 
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)

Reply via email to