__lll_mutex_lock_wait出现的分析

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>】 命令就可以看到当前程序运行的堆栈,从而看出程序死锁在哪行代码。再接下来把代码改了,就完了

阅读更多
文章标签: 多线程
个人分类: c++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭