ptrace: Operación no permitida cuando se adjunta a un proceso zombie

ptrace: Operación no permitida cuando se adjunta a un proceso zombie

Tengo una situación reproducible en la que una instancia del compilador entra en estado zombie cuando reconstruyo un paquete, pero gdbno me permite adjuntarlo:

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) 

Esta preguntasugiere que el problema está en proc.sys.kernel.yama.ptrace_scope, o que es posible que no sea root, pero que sysctl no está presente en mi sistema ysoyejecutando como 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 ~ # 

Como referencia, mi versión del kernel es 4.9.16-gentoo.

Respuesta1

Como se indica en el resultado de su pregunta, un proceso zombie es aquel que ha finalizado su ejecución, por lo que nunca podrá adjuntarlo usando gdb; todo lo que es ahora es una entrada en la tabla de procesos del kernel sin ningún proceso o recurso correspondiente. por lo que no hay nada a lo que gdb pueda adjuntar.

La única razón por la que existe esta entrada en la tabla de procesos, marcada como zombie, es para que se lea su estado de salida.

información relacionada