Messages in this thread | | | Date | Mon, 16 May 2011 14:25:35 +0200 | From | Oleg Nesterov <> | Subject | Re: [PATCH 6/9] job control: make task_clear_jobctl_pending() clear TRAPPING automatically |
| |
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.
| |