Linux

執行“沒有 exec 的 vfork”的程序如何以長時間不間斷的睡眠結束?

  • September 18, 2014

這個答案中,使用者建議

通常,不間斷的睡眠不應該持續很長時間,但在 Windows 下,損壞的驅動程序或損壞的使用者空間程序(沒有 exec 的 vfork)最終可能會永遠在 D 中休眠。

使用者空間程序如何在非錯誤核心上真正鎖定在 D 中?我認為使用者模式能夠故意卡在 D 中是一個小漏洞……

當程序呼叫vfork時,只要子程序沒有執行_exitor execve(僅有的兩個授權函式,以及execve的親屬execvp,等等) ,父程序就會保持狀態 D。父程序仍在執行vfork呼叫,所以它處於狀態 D。

如果孩子做了這樣的事情(這很愚蠢,但有效),父母將無限期地保持在狀態 D,而孩子將無限期地保持在狀態 R。

if (!vfork()) while (1) {}

引用自:https://unix.stackexchange.com/questions/156329