Re: [PATCH 1/4] signal: fix SIGCONT notification code

From: Oleg Nesterov
Date: Thu Jan 13 2011 - 09:48:01 EST


On 01/12, Jan Kratochvil wrote:
>
> On Wed, 22 Dec 2010 12:13:15 +0100, Tejun Heo wrote:
> > If SIGCONT is received while the child process is stopped, the code should
> > be CLD_CONTINUED. If SIGCONT is recieved while the child process is in the
> > process of being stopped, it should be CLD_STOPPED.
>
> If a process does
> kill (PID, SIGSTOP);
> <varying delay, possibly even from a different process>
> kill (PID, SIGCONT);
>
> does it mean the PID's parent may get different waitid() results?

No. The only problem is that SIGCHLD can come with the wrong
info.si_code/si_status

> Or even that PID will finally remain still `T (stopped)'?

No.

> I do not see it has any userland impact,

Yes, the problem is minor.

Still, this is the clear bug due to
SIGNAL_CLD_CONTINUED/SIGNAL_STOP_CONTINUED typo. And damn, it was
introduced by me ;)

> the
> PTRACE_ATTACH-to-T(stopped)-process is already racy for different reasons.

Please note that this bug affects !ptrace case too.

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/