Re: [PATCH 6/9] job control: make task_clear_jobctl_pending()clear TRAPPING automatically

From: Oleg Nesterov
Date: Mon May 16 2011 - 08:26:58 EST


On 05/13, Tejun Heo wrote:
>
> @@ -264,6 +267,9 @@ void task_clear_jobctl_pending(struct task_struct *task, unsigned int mask)
> mask |= JOBCTL_STOP_CONSUME | JOBCTL_STOP_DEQUEUED;
>
> task->jobctl &= ~mask;
> +
> + if (!(task->jobctl & JOBCTL_PENDING_MASK))
> + task_clear_jobctl_trapping(task);
> }

So, SIGCONT clears JOBCTL_TRAPPING and wakes up the tracer.

I can't really understand this without seeing the next changes, but
it seems this makes some things worse, although I am not sure.

For example. PTRACE_SEIZE should guarantee the tracee will trap and
report. However, if the tracee is stopped during attach, we can race
with SIGCONT. The previous version had the similar problem afaics, but
it was easy (I think) to fix. Now that SIGCONT clears JOBCTL_TRAPPING
we need more complications.

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/