Re: [PATCH] [RFC] fix missed SIGCONT cases

From: Oleg Nesterov
Date: Thu Feb 28 2008 - 10:29:19 EST


On 02/28, Jiri Kosina wrote:
>
> On Thu, 28 Feb 2008, Roland McGrath wrote:
>
> > [PATCH] clean up and fix SIGCONT
> > This reorganizes some of the signals code, replacing handle_stop_signal()
> > with prepare_signal() and finish_signal(), called as a pair before and
> > after generating any signal. The CLD_CONTINUED notification to parent is
> > moved into finish_signal(), taking place after the signal is made pending
> > and siglock dropped. This fixes a race where a process waking from SIGCONT
> > could resume application code without running its SIGCONT handler first.
>
> Hi Roland,
>
> I haven't tested what is the behavior with my patch, or without any
> patches at all (will do), but with your patch applied, when I run the test
> program under strace, it resumes immediately ... doesn't look particularly
> OK to me:
>
> $ strace -o /dev/null ./a.out | head -10
> finished (without SIGCONT)
> finished (without SIGCONT)
> finished (without SIGCONT)
> finished (without SIGCONT)
> finished (without SIGCONT)
> finished (without SIGCONT)
> finished (without SIGCONT)
> finished (without SIGCONT)
> finished (without SIGCONT)
> finished (without SIGCONT)

This is different, you can try this trivial program,

int main(int argc, char **argv)
{
kill(getpid(), SIGSTOP);
printf("I'm running, SIGSTOP doesn't really work with strace.\n");
return 0;
}

Oleg.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/