在 centos 2 上运行的程序运行一段时间后就卡死了,感觉像是死锁问题,大家有木有好的排查死锁的工具,借鉴一下

2015 年 12 月 22 日
 xiaoxiaoyang
最近遇到一个问题是,在 centos 2 上运行的程序运行一段时间后就卡死了,用 gdb 调试查看线程的的时候线程都停在 pthead_cond_wait 这个地方,不知道哪里出问题,猜想是程序出了死锁,大家有木有好的排查死锁的工具,借鉴一下
4598 次点击
所在节点    Linux
17 条回复
xiaoxiaoyang
2015 年 12 月 22 日
Thread 0x2ba80b594230 (LWP 32218) 0x000000363f80aee9 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
gdb 打印的上面一句话,是在等待什么呢?
oott123
2015 年 12 月 22 日
CentOS 2 …
这…似乎有点古老…
ncisoft
2015 年 12 月 22 日
加调试信息,查出行号,查源代码
9hills
2015 年 12 月 22 日
CentOS2 !
The first CentOS release in May 2004, numbered as CentOS version 2, was forked from RHEL version 2.1AS.


这是有多老
chinvo
2015 年 12 月 23 日
你可以尝试升级你的系统
pynix
2015 年 12 月 23 日
古董机系统
comicfans44
2015 年 12 月 23 日
crazycen
2015 年 12 月 23 日
当时我还在上初中!
weiceshi
2015 年 12 月 23 日
@9hills
The first Windows XP release in Aug 24, 2004
weiceshi
2015 年 12 月 23 日
@9hills 上面笔误
The first Windows XP release in Aug 24, 2001
honeycomb
2015 年 12 月 23 日
@weiceshi 但是人们一般在用 SP2(Aug 24, 2004)/SP3(2008)
xiaoxiaoyang
2015 年 12 月 23 日
@comicfans44 在用 valgrind 但另一个 liblockdep ????大多数的线程都在
0x000000320a00b63c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
这是在等待信号吗?
xiaoxiaoyang
2015 年 12 月 23 日
@9hills 不好意思,抱歉我写错了,现在系统是 centos6.5-64 ,依然很感谢
comicfans44
2015 年 12 月 23 日
@xiaoxiaoyang 等待被其他线程的 pthread_cond_broadcast/pthread_cond_signal 唤醒。从你描述的情况来看,应该是条件变量等待导致的死锁,你需要的是回溯这些 pthread_cond_wait 的调用栈,找到调用点前的判定的条件都是什么。应该是这些判定条件彼此有循环依赖关系
xiaoxiaoyang
2015 年 12 月 23 日
@comicfans44 非常感谢,我看下代码
CheungKe
2015 年 12 月 23 日
@xiaoxiaoyang 不是 CentOS 6.4 x86_64?
xiaoxiaoyang
2015 年 12 月 23 日
@CheungKe 虚拟机显示是 CentOS 6.5 x86_64

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/245455

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX