utrace-cleanup branch
Oleg Nesterov
oleg at redhat.com
Thu Oct 29 20:35:41 UTC 2009
On 10/28, Roland McGrath wrote:
>
> I've made a new branch, utrace-cleanup.
> This forks from utrace-indirect and has:
>
> 26fefca utrace: sticky resume action
Can't comment right now, need to read the code.
But I feel this is "right" change.
> 28b2774 utrace: remove ->stopped field
Again, need to actually read the code, but.
Afaics, we can't just remove utrace_finish_jctl() and the similar code in
utrace_stop(). We need
void utrace_finish_jctl(void)
{
struct utrace *utrace = task_utrace_struct(current);
/*
* While in TASK_STOPPED, we can be considered safely stopped by
* utrace_do_stop(). Make sure we can do nothing until the tracer
* drops utrace->lock
*/
if (unlikely(__fatal_signal_pending()))
spin_unlock_wait(utrace->lock);
}
and utrace_stop() should do the same.
Otherwise, the killed tracee can start another reporting loop and
list_for_each() can race with, say, utrace_reset(DETACH)->utrace_reset().
More generally, if the tracer sees "it is stopped" under utrace->lock,
the tracee must be "really" stopped until we drop utrace->lock(), it
must not "escape" from utrace_stop() or do_signal_stop().
Right?
Oleg.
More information about the utrace-devel
mailing list