![]() |
Boost : |
From: Anthony Williams (anthony_w.geo_at_[hidden])
Date: 2007-11-16 05:38:08
Hartmut Kaiser <hartmut.kaiser <at> gmail.com> writes:
> Since a couple of days (2-3 days) the Wave tests started to fail because of
> a crash during application cleanup in the thread library (msvc-8,
> gcc3.4.5/Mingw - this problem seems to be constrained to the windows
> platform).
>
> The point of the segfault is here: boost/thread/win32/tss.hpp:+30,
>
> void cleanup(T* data) const
> {
> if(func)
> {
> func(data); // <-- here
> }
> else
> {
> delete data;
> }
> }
>
> Where data is a valid pointer, but func points somewhere.
>
> No code changes have been done lately in Wave (or in Spirit/Phoenix for that
> matter, because the tss is used in Spirit code).
> Any clues what might be the reason?
I changed the TSS code recently, so that must be the problem. This implies that
there is a race between the thread_specific_ptr constructor or destructor and
the wave code that uses it. Such a race is not a new problem, though it
obviously has new consequences. I'll look into it.
Anthony
Boost list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk