Re: [PATCH 1/1] ptrace: fix ptrace_signal() && STOP_DEQUEUEDinteraction

From: Tejun Heo
Date: Wed Jul 13 2011 - 06:04:24 EST


Hello, Oleg. Sorry about the long delay. Was lost somewhere else. :)

On Thu, Jul 07, 2011 at 09:03:24PM +0200, Oleg Nesterov wrote:
> Without the patch it hangs. After the patch SIGSTOP "injected" by the
> tracer is not ignored and stops the tracee.

I always felt the ability to 'inject' different signal there is rather
useless and prone to induce weird issues. It would be better if
ptrace_signal() is part of signal delivery action after all the checks
so that the ptracer says whether to proceed with the action or not but
no more. Well...

> So lets add STOP_DEQUEUED _before_ we report the signal. It has no effect
> unless sig_kernel_stop() == T after the tracer resumes us, and in the
> latter case the pending STOP_DEQUEUED means no SIGCONT in between, we
> should stop.

Anyways, yes, this seems to be a nice improvement but it looks very
weird (and difficult to comprehend) to be setting STOP_DEQUEUED
unconditionally in ptrace_signal(). Wouldn't it be better to flip the
flag so that we have CONT_RECEIVED before doing this?

Thanks.

--
tejun
--
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/