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