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