from:http://blog.csdn.net/dyoldfish/article/details/1752706
1、如果出现__lll_mutex_lock_wait,程序僵死这是毫无疑问。
2、1如果出现:
__lll_mutex_lock_wait () from /lib/tls/libc.so.6
并且出现_L_mutex_lock_2507
基本上是处于内存错误(因为内存释放的时候也会调用pthread_mutex_lock),这种情况比较好查,用valgrint检测一下就ok了。
2、2 如果出现:
__lll_mutex_lock_wait () from /lib/tls/libpthread.so.0
并且出现 L_mutex_lock_35 ()
可能是出现死锁的情况。
也可能是boost的编译链接过程中没用到 -pthread 选项,而是用了-lpthread选项可能出现这种情况。
或者boost的单线程版本和多线程版本使用错误。
解决方案:
大部分的情况下是死锁。而内存错误的几率很小。
1、内存错误。
用valgrind检测程序的内存,(valgrind可以检测各种内存问题,如内存泄漏,内存越界等)
2、死锁。
2.1)用-g选项编译程序。
2.1)用【pstack <进程id>】 命令就可以看到当前程序运行的堆栈,从而看出程序死锁在哪行代码。再接下来把代码改了,就完了