ptrace: ゾンビプロセスに接続する場合、操作は許可されません

ptrace: ゾンビプロセスに接続する場合、操作は許可されません

パッケージを再構築するとコンパイラインスタンスがゾンビ状態になり、gdbアタッチが許可されないという再現可能な状況があります。

serenity ~ # ps ax | grep defunct
11351 pts/1    Z+     0:00 [x86_64-pc-linux] <defunct>
21838 pts/5    S+     0:00 grep --colour=auto defunct
serenity ~ # gdb -p 11351
GNU gdb (Gentoo 7.10.1 vanilla) 7.10.1
[snip]
Attaching to process 11351
warning: process 11351 is a zombie - the process has already terminated
ptrace: Operation not permitted.
(gdb) 

この質問問題は にあるproc.sys.kernel.yama.ptrace_scopeか、私がrootではないかもしれないが、私のシステムにはsysctlが存在せず、午前root として実行:

serenity ~ # sysctl -a | grep ptrace
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.enp4s0.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
serenity ~ # whoami
root
serenity ~ # 

参考までに、私のカーネルバージョンは です4.9.16-gentoo

答え1

質問の出力で述べられているように、ゾンビ プロセスは実行を終了したプロセスであるため、gdb を使用してそのプロセスにアタッチすることはできません。現在、ゾンビ プロセスは対応するプロセスやリソースのないカーネル プロセス テーブル内のエントリだけであるため、gdb がアタッチできるものはありません。

このプロセス テーブル エントリがゾンビとしてマークされて存在する唯一の理由は、その終了ステータスを読み取るためです。

関連情報