`PR_SET_PDEATHSIG` 很容易出问题,除非对父进程是否已经死亡进行检查

作者: DemiMarie创建于 2025年9月9日更新于 2026年9月6日

如果父进程已经死亡, `PR_SET_PDEATHSIG` 将不起作用。 我将此视为内核错误,但有一个解决方法:如果知道父进程的 PID 应该是什么,可以将 `getppid()` 的返回值与之比较。 如果它们不同,则发出相应的信号。 `PR_SET_PDEATHSIG` 可以通过后续调用绕过,除非它被 seccomp 阻止,被 LSM (如 Yama) 阻止,或者 bubblewrap 不可回收,且同一 PID 命名空间中的其他进程没有 `CAP_SYS_PTRACE`。 Bubblewrap 最好将自己标记为不可回收,以防止出现最后一种情况。

内容来源: containers/bubblewrap