
James Sutherland wrote:
On 1/26/08 10:32 AM, "Phil Endecott" <spam_from_boost_dev@chezphil.org> wrote:
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 /lib64/tls/libpthread-2.3.4.so) ==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. Phil.