I tried commenting out the std::cout call and it still crashes for some reason. I'm trying to track down the problem to the uninitialized memory but I can't seem to locate it for some reason. I tried implementing a slight simplier version to try and track down the fault.
Can anyone reproduce this error on a vanilla install of Visual Studio 2005? I'm wondering if this is a VC8 flaw for Boost or just some weird libraries that I'm using with boost.
Here is the sample code:
==============[Sample Code]=====================
void ThreadTest() {
return;
};
int main(int argc, char* argv[])
{
boost::thread thrd(ThreadTest);
thrd.join
();
return 0;
}
==============[Sample Code]=====================
This is really a strange behavior. I can your sample app in VC 2003 without any crashes...
Try to comment the output to std::cout after your timer has elapsed... Maybe there is a problem
with writing to streams and cout somehow does not block and main exists while cout is written... ?
On Thu, April 27, 2006 2:42, Rush Manbert said:
> Brown Gabe wrote:
>> Hi Everyone,
>>
>> Hopefully this isn't some noob question, but here goes... I'm trying to
>> run boost 1.3.1 in Visual C++ 8 VC8 and I keep getting an access violation
>> at the termination of my thread. I've tried looking to see what the problem
>> is but I can't seem to determine the problem. I'm using the plain example
>> thread.cpp
>>
> <snip>
>
>> I get the expected out from the application. Upon tracing my code, the
>> exception only occurs when the worker thread exits.
>>
>> Exception occured in threadex.c on line 348.
>> Unhandled exception at 0x7c9012b4 in test.exe: 0xC0000005: Access violation
>> reading location 0xcccccccc.
>>
>> " __try {
>> _endthreadex (
>> ( (unsigned (__CLR_OR_STD_CALL *)(void
>> *))(((_ptiddata)ptd)->_initaddr) )
>> ( ((_ptiddata)ptd)->_initarg ) ) ;"
>>
>> Any thoughts on what might cause an error like this???
>>
>> --
>
> Others may have more intelligent, or more focused, suggestions, but here
> are two things to check:
>
> 1) 0xcccccccc looks very much like the contents of an uninitialized
> variable when running under the debug heap management code. My guess is
> that you are using an uninitialized pointer value whose contents are
> 0xcccccccc.
>
> See http://www.codeguru.com/cpp/w-p/win32/tutorials/article.php/c9535__1
> the follow the "continued" link to the second page. The fill values are
> listed there.
>
> 2) I assume you're using VS 2005? The Debug | Exceptions... dialog lets
> you set it to break when an exception is thrown, rather than fielding an
> unhandled exception. I don't know anything about debugging threads, though.
>
> Best of luck,
> Rush
>
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users