我目前正在开发一种使用自定义核心格式的崩溃收集机制。本质上,它挂钩 linux_binfmt->core_dump 条目以指向我们的转储程序。
转储程序本身会启动一个带有进程 PID 的用户模式帮助程序,以在允许内核完全终止进程之前通过 ptrace 捕获哪个转储进程信息:
call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC);
我的问题是该任务在技术上处于磁盘睡眠状态并且没有停止,因此 ptrace 调用失败。
我试图 SEND_SIG_FORCED 一个 SIGSTOP 无济于事:
send_sig_info(SIGSTOP, SEND_SIG_FORCED, current);
任何关于如何阻止进程终止但将其置于停止状态以使 ptrace 用户模式收集器工作的建议将不胜感激。