【发布时间】:2014-02-21 10:05:14
【问题描述】:
我有一个在 RHEL6.x(64 位)上运行的多线程进程。
当我尝试启动该进程时,我发现该进程挂起并且(同一进程的)某些线程大部分时间都崩溃了。一些线程等待线程之间的共享内存被创建(我可以看到它没有被创建)。
但是当我使用 strace 时,进程并没有挂起,它工作得很好(所有应该创建的内存都被创建了)。即使在创建内存后中断 strace,也可以使进程永远正常运行。
我已阅读:
这确实给了我一个想法。但我仍然不清楚这一点,因为没有提到他们使用的 RHEL 版本。
另外,另一点是,将内核更改为 fedora(兼容)内核并没有产生问题。
所以,我想知道 strace 究竟是如何影响进程的? (或者只是链接中指出的移回内核的堆栈)?
【问题讨论】:
-
我遇到了同样的问题。如果我将它附加到 strace,则通常挂在 select() 调用上的进程会恢复。如果我不将它附加到 strace,它就会永远挂在那里。
标签: unix process kernel rhel strace