我有一個在RHEL6.x(64位)上運行的多線程進程。使用strace修補程序掛起內存問題
我發現進程掛起,並且某些線程(同一進程)在我嘗試啓動進程時大部分時間崩潰。一些線程等待線程之間的共享內存被創建(我可以看到它沒有被創建)。
但是,當我使用strace時,進程沒有掛起,它工作得很好(應該創建的所有內存都被創建)。即使在內存被創建後中斷strace,也可以使進程正常運行。
我已閱讀本:
這的確給我出個主意。但我仍然不清楚,因爲他們使用的RHEL版本沒有提及。另外,還有一點是,將內核更改爲Fedora(兼容)內核並不會產生問題。
所以,我只想知道strace究竟是如何影響流程的? (或者它只是鏈接中指出的移回內核的堆棧)?
我遇到了同樣的問題。如果我將它附加到strace,一個通常掛在select()調用上的進程將恢復。如果我不把它放在strace上,它就會永遠掛在那裏。 – ernesto