【发布时间】:2011-01-07 17:52:51
【问题描述】:
我有一个程序可以在其整个生命周期中启动和拆除多个线程。一切正常运行了一段时间,但最终,我得到了以下核心转储堆栈跟踪。
#0 0x009887a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1 0x007617a5 in raise () from /lib/tls/libc.so.6
#2 0x00763209 in abort () from /lib/tls/libc.so.6
#3 0x003ec1bb in __gnu_cxx::__verbose_terminate_handler () from /usr/lib/libstdc++.so.6
#4 0x003e9ed1 in __cxa_call_unexpected () from /usr/lib/libstdc++.so.6
#5 0x003e9f06 in std::terminate () from /usr/lib/libstdc++.so.6
#6 0x003ea04f in __cxa_throw () from /usr/lib/libstdc++.so.6
#7 0x00d5562b in boost::thread::start_thread () from /h/Program/bin/../lib/libboost_thread-gcc34-mt-1_39.so.1.39.0
起初,我在泄漏线程,并认为内核是由于达到了当前线程数的最大限制,但现在似乎即使我不这样做也会出现这个问题。作为参考,在上面的核心中,有 13 个活动线程正在执行。
我进行了一些搜索以尝试找出 start_thread 会核心的原因,但我没有遇到任何问题。有人有什么想法吗?
【问题讨论】:
-
单步调试器中的代码?
标签: c++ boost-thread