boost::thread issue

Hi, I started working on a project a couple of months ago and i decided to use boost::thread. I like the library, very nicely done and easy to use - great job. However, I ran into an issue and although i have already spent a significant amount of time trying to figure it out, I was not able to make any progress so far. The project is written in pure C++ (no managed code) on Windows XP/SP3. I am using Visual Studio 2005 with SP1 as the C++ compiler. I am using the pre-built binaries for boost 1_36_0 provided by boost consulting. My main program simply creates several boost::thread objects which do various things. Everything works fine except for one thing: occasionally when I start the program I receive the following error: "The exception unknown software exception (0xc0000409) occurred in the application at location 0x00421cd3". In general exception 0xc0000409 means that the system detected (or thinks it detected) an overrun of a stack-based buffer. The code is compiled with the /GS switch (Buffer security check) enabled. The debug stack trace when the exception is thrown shows 2 threads, the exception being thrown by thread2, as follows: (thread 1) 5752 __tmainCRTStartup __CxxSetUnhandledExceptionFilter Normal 0 --------------------------------------------------------------------------------- ntdll.dll!_KiFastSystemCallRet@0() ntdll.dll!_ZwWaitForSingleObject@12() + 0xc bytes ntdll.dll!_RtlpWaitForCriticalSection@4() + 0x8c bytes ntdll.dll!_RtlEnterCriticalSection@4() + 0x46 bytes ntdll.dll!_LdrLockLoaderLock@12() + 0x6b bytes kernel32.dll!7c80b43f() [Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll] ntdll.dll!_ZwQueryVirtualMemory@24() + 0xc bytes kernel32.dll!7c80b9ed() kernel32.dll!7c8638bd() kernel32.dll!7c8449b0() ntdll.dll!_RtlpAllocateFromHeapLookaside@4() + 0x31 bytes kernel32.dll!7c80262a() ntdll.dll!_NtQueryInformationProcess@20() + 0xc bytes msvcr80.dll!7814a84c() MyService.exe!__CxxSetUnhandledExceptionFilter() Line 90 C++ msvcr80.dll!78131762()
MyService.exe!__tmainCRTStartup() Line 494 + 0xf bytes C kernel32.dll!7c817007() ntdll.dll!_RtlpAllocateFromHeapLookaside@4() + 0x31 bytes
(thread 2) 7976 __report_gsfailure __report_gsfailure Time Critical 0 ------------------------------------------------------------------------- MyService.exe!__crt_debugger_hook() Unknown
MyService.exe!__report_gsfailure() Line 298 + 0x7 bytes C MyService.exe!boost::detail::create_once_mutex() + 0x63 bytes C++ MyService.exe!boost::call_once
() + 0x36 bytes C++ MyService.exe!boost::`anonymous namespace'::run_thread_exit_callbacks() + 0x34 bytes C++ MyService.exe!boost::thread::interrupt() + 0xdc bytes C++ ntdll.dll!_LdrpCallInitRoutine@16() + 0x14 bytes ntdll.dll!_LdrpCallTlsInitializers@8() + 0x12fad bytes ntdll.dll!_LdrShutdownThread@0() + 0xf4ae bytes kernel32.dll!7c80c0c6() [Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll] csauser.dll!10103b7f() kernel32.dll!7c80b6b9()
Since I did not get too far on my own I really need your help. Did anybody else run into anything similar or does anybody have any idea about how to debug this? Thanks, --daniel
participants (1)
-
danielsabin@comcast.net