|
From: Joseph G. <ga...@va...> - 2012-05-04 00:58:49
|
With both
x86_64-mingw32-gcc-4.7.1-prerelease-20120430-rev-186947
and
x86_64-mingw32-gcc-4.7.0-release-c,c++,fortran-sjlj
I've been having a problem with mysterious failures
in boost_filesystem, and finally tracked the problem
down to libgcc_s_sjlj_1!Unwind_SjLj_Register ultimately
calling TlsGetValue() and destorying ::GetLastError().
boost_filesystem has a function process_status_failure()
(in v3/src/operations.cpp) that call ::GetLastError()
first thing, but because of this bug, ::GetLastError()
has already been destroyed.
I haven't confirmed, but I'd be mildly surprised if
Unwind_SjLj_Unregister didn't have the same type of
bug... which would be even worse... that would imply
that returning from a function would destroy
GetLastError() .
Again, I'm not sure if this is the right place to
report this.
Nitty-gritty details:
libgcc_s_sjlj_1!Unwind_SjLj_Register
called
libgcc_s_sjlj_1!_emutls_register_common
which landed me in
libwinpthread_1!pthread_getspecific
when I stepped into it, and eventually
called
TlsGetValue().
Thanks,
Joseph
|