From: Phil Endecott (spam_from_boost_dev_at_[hidden])
Date: 2008-01-28 12:31:41
James Sutherland wrote:
> On 1/26/08 10:32 AM, "Phil Endecott" <spam_from_boost_dev_at_[hidden]>
>> James Sutherland wrote:
>>> I am getting segmentation violations from inside of boost::thread
>>> Running valgrind, I get the following:
>>>> ==31129== Thread 2:
>>>> ==31129== Jump to the invalid address stated on the next line
>>>> ==31129== at 0xEC834853E5894855: ???
>>>> ==31129== by 0x4A4DDE1: boost::function0<void,
>>>> std::allocator<boost::function_base> >::function0(boost::function0<void,
>>>> std::allocator<boost::function_base> > const&) (function_template.hpp:527)
>>>> ==31129== by 0x4A4CF21: thread_proxy (thread.cpp:106)
>>>> ==31129== by 0x31A0D06136: start_thread (in
>>>> ==31129== by 0x31A04C7532: clone (in /lib64/tls/libc-2.3.4.so)
>> Is this the "non-thread-safe-threads" bug? Have you upgraded your
>> Boost.Function per the instructions at http://boost.org/ ? Are you
>> creating several threads at nearly the same time? Does this only ever
>> happen when the first few threads are created? What compiler are you using?
> I have not upgraded Boost.Function (I am running version 1.34.0). Is there
> a potential problem there that could be causing this?
Yes, see http://boost.org/.
> I am spawning several
> threads concurrently, but the segfault consistently occurs while creating
> the first thread. I am using gcc 3.4.6.
I'm guessing that gcc introduced its thread-safe statics feature
sometime after 3.4.6, but I don't know that.
I think this is consistent with the "non-thread-safe-threads" bug.
Either upgrade your Boost.Function per the instructions at
http://boost.org/, or use a newer g++ with thread-safe statics (it will
probably have other improvements too), or wait for a boost release that
includes this fix.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk