Tengo una situación reproducible en la que una instancia del compilador entra en estado zombie cuando reconstruyo un paquete, pero gdb
no 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.