小编Enc*_*cya的帖子

当使用ptrace分离之前跟踪器退出时,tracee进程中的所有线程都会停止

我在创建ptrace中附加和分离部分中描述的行为时遇到问题:

If the tracer dies, all tracees are automatically detached and
restarted, unless they were in group-stop.
Run Code Online (Sandbox Code Playgroud)

我有一个进程(tracee),由我附加使用的多个线程组成ptrace.使用以下调用使用单独的进程(跟踪器):

ptrace(PTRACE_ATTACH, pid, 0, 0);
sleep(3600);
Run Code Online (Sandbox Code Playgroud)

当跟踪器在休眠时死亡(使用ctrl + c或kill -9)并仍然附加到进程时,我注意到tracee进程的所有线程都处于停止状态而不是继续执行.

我也尝试使用GDB来重现这个问题,因为GDB也使用ptrace附加到进程.但是当附加tracee时杀死gdb(使用kill -9)时,tracee的所有线程都会按预期继续执行.我曾尝试查看GDB的来源但尚未找出任何结果.

有没有人知道什么可能导致所有tracee线程的行为在跟踪器死亡时停止?

这是在使用内核3.6.5的ARM Cortex-A9 CPU上进行评估的

ptrace behavior terminate

5
推荐指数
0
解决办法
196
查看次数

标签 统计

behavior ×1

ptrace ×1

terminate ×1