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 12.11.2016 15:47, Valery Ushakov wrote:
> 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
> 

I'm going to set SIGSTOP as expected signal in attach3, is it is
preferred in general. Not just because FreeBSD and Linux works this way,
but to make it consistent and regardless of relation between tracee and
tracer always get the same signal.

Attachment: signature.asc
Description: OpenPGP digital signature



Home | Main Index | Thread Index | Old Index