使用strace修复挂起内存问题

时间:2014-01-29 14:23:43

标签: unix process kernel rhel strace

我有一个在RHEL6.x(64位)上运行的多线程进程。

我发现当我尝试启动进程时,进程会挂起并且某些线程(同一进程)会崩溃。有些线程等待线程之间的共享内存被创建(我可以看到所有这些都没有被创建)。

但是当我使用strace时,进程不会挂起并且它工作得很好(所有应该创建的内存都会被创建)。甚至在创建内存后中断strace,也可以保持进程正常运行。

我读过这个:

strace fixes hung process

确实给了我一个主意。但我仍然不清楚这是因为他们使用的RHEL版本没有被提及。

另外,另一点是,将内核更改为fedora(兼容)内核不会产生问题。

所以,我想知道strace究竟是如何影响一个过程的? (或者它只是如链接中指出的那样移回内核的堆栈)?

1 个答案:

答案 0 :(得分:1)

我还不能评论,但我在过去的工作中看到了类似的事情。由于没有给出确切的答案,我将继续这样做:

由于时间问题,你在线程之间进入死锁的几率是多少,这些问题得到了解决。通过strace减慢程序执行速度?

如果您通过流程调试而不是strace会发生什么?