この回答 ユーザーはそれを提案します
通常、無停電スリープは長くは続かないはずですが、Windowsの場合と同様に、壊れたドライバーまたは壊れたユーザーペースプログラム(execなしのvfork)は、Dで永久にスリープすることになります。
ユーザースペースプログラムは、バグのないカーネルで実際にDにロックアップするにはどうすればよいですか?ユーザーモードが意図的にDに固執できるのは、ちょっとした脆弱性ですが...
プロセスがvfork
を呼び出すと、子が_exit
またはexecve
(2つの許可された関数とexecve
の親戚(execvp
など)。親はまだvfork
呼び出しを実行しているため、状態Dになります。
子供がこのようなことをした場合(これは愚かですが有効です)、親は無期限に状態Dに留まり、子は無期限に状態Rに留まります。
if (!vfork()) while (1) {}