Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/sys/kern
On Fri, Nov 11, 2016 at 12:10:04 -0500, Christos Zoulas wrote:
> Date: Fri Nov 11 17:10:04 UTC 2016
>
> Modified Files:
> src/sys/kern: sys_ptrace_common.c
>
> Log Message:
> kern/51621: When attaching to a child send it a SIGTRAP not a SIGSTOP like
> Linux and FreeBSD do.
>
>
> To generate a diff of this commit:
> cvs rdiff -u -r1.2 -r1.3 src/sys/kern/sys_ptrace_common.c
Hmm, I'm confused. The PR says:
- PT_ATTACH seems to work, but waiting for stopped status and signal from the
child results in getting SIGTRAP, not SIGSTOP like in Linux and FreeBSD.
This revision changes PT_ATTACH case to:
proc_changeparent(t, p);
- signo = SIGSTOP;
+ signo = SIGTRAP;
goto sendsig;
which looks like it's the opposite of what's said in the PR.
FreeBSD from source code inspection (abridged version quoted below)
does indeed send SIGSTOP:
case PT_ATTACH:
proc_set_traced(p, true);
if (p->p_pptr != td->td_proc) {
proc_reparent(p, td->td_proc);
}
data = SIGSTOP;
goto sendsig;
From a very quick look through the code it looks like the intention
(before this commit) is to send SIGSTOP to a process that we attach
to, which is semantically correct, as we want to just stop it as-is
and let the tracer poke at it.
The SIGTRAP comes from the fork path as far as I can tell.
So what's going on here?
-uwe
Home |
Main Index |
Thread Index |
Old Index