[PATCH 62] introduce ptrace_rw_siginfo() helper

Roland McGrath roland at redhat.com
Thu Oct 8 02:33:30 UTC 2009


> I don't think this can work. context->siginfo can be cleared and then
> set again in between. If we race with SIGKILL, utrace_get_signal()
> can dequeue another signal != SIGKILL and start the reporting loop.

That's not supposed to be possible.  See "sigset_t sigkill_only;" et al.
I guess it is possible when it's an earlier utrace_stop() that is what's
broken by SIGKILL.  Then utrace_get_signal() is entered when SIGKILL is
pending.  It should have a fatal_signal_pending() check earlier then.
We really want it to be ironclad that when UTRACE_STOP is broken the only
meaningful thing that can happen is do_group_exit(SIGKILL).

> I thought about
> 
> 	*info = *context_info;
> 	rmb();
> 	if (fatal_ignal_pending(tracee))
> 		return -ERR;
> 
> But I think it is better to do theses cleanups after V1.

Agreed.


Thanks,
Roland




More information about the utrace-devel mailing list