Boost线程tls_析构函数中的分段错误

Boost线程tls_析构函数中的分段错误,boost,multithreading,crash,Boost,Multithreading,Crash,我使用多线程HTTP服务器的Boost asio编写了一个小应用程序。如果我按下ctrl-c键,我会周期性地出现seg故障。我知道我一定是在某处重写内存,但不确定如何调试它。GDB中的堆栈跟踪没有帮助。GCC中是否有一些工具可以帮助我在dtor中发现损坏?(对不起,我主要是一个爪哇人) 谢谢。在Debian Linux上使用Boost 1.38 这里是堆栈跟踪 Program terminated with signal 11, Segmentation fault. #0 0xb7f743

我使用多线程HTTP服务器的Boost asio编写了一个小应用程序。如果我按下ctrl-c键,我会周期性地出现seg故障。我知道我一定是在某处重写内存,但不确定如何调试它。GDB中的堆栈跟踪没有帮助。GCC中是否有一些工具可以帮助我在dtor中发现损坏?(对不起,我主要是一个爪哇人)

谢谢。在Debian Linux上使用Boost 1.38

这里是堆栈跟踪


Program terminated with signal 11, Segmentation fault.
#0  0xb7f74389 in tls_destructor (data=0xb5200fc8) at libs/thread/src/pthread/thread.cpp:86
86                                      thread_info->tss_data=current_node->next;
(gdb) where
#0  0xb7f74389 in tls_destructor (data=0xb5200fc8) at libs/thread/src/pthread/thread.cpp:86
#1  0xb7f75351 in thread_proxy (param=0xb5200fc8) at libs/thread/src/pthread/thread.cpp:142
#2  0xb7c03240 in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#3  0xb7dc049e in clone () from /lib/tls/i686/cmov/libc.so.6
(gdb)

因为这是一个多线程程序,所以Boost升级可能只隐藏了一个真正的bug。我建议按顺序使用Valgrind Memcheck和Helgrind工具进行试运行。第一个检查内存管理问题,第二个检查竞争条件。IMHO是一个真正不可或缺的工具。

Boost threads最近修复了许多bug。试试新的版本。