Re: [PATCH] ptrace on stopped processes (2.4)

Mike Coleman
2001-12-22T17:39:23Z

vic <zandy@cs.wisc.edu> writes:
> The most significant bug is that gdb cannot attach to a stopped
> process. Specifically, the wait that follows the PTRACE_ATTACH will
> block indefinitely.

Are you sure this is a bug in ptrace? Maybe gdb and other such programs could
notice that a wait is inappropriate in this case and not do it.

(It looks to me like the wait actually does complete when the process is
continued.)

Also, is this something that used to work? Or would this be a change in the
semantics of ptrace?

> Another bug is that it is not possible to use PTRACE_DETACH to leave a
> process stopped, because ptrace ignores SIGSTOPs sent by the tracing
> process.

Unless I'm missing something (frequently the case), there are two cases here:
(1) the tracer wants to leave the tracee stopped, and (2) the tracer wants the
process to continue running in as natural a way as possible, meaning without
sending it a SIGCONT (which can cause the SIGCONT signal handler to execute).
As things currently stand, we have behavior (2), and (1) is not possible.
With your change, we'd have behavior (1), and (2) would not be possible.

To me, (2) seems very important, so I wouldn't want to give it up. Is there
some way we can get both?

> This patch is against 2.4.16 on x86. I have tested gdb and strace.

Although SUBTERFUGUE isn't widely used, I'd be curious to know how it reacts
to this patch. (If you're running Debian, there's a package.)

Mike