On 2020-11-02 17:25:14 [+0100], Oleg Nesterov wrote: > On 11/02, Oleg Nesterov wrote: > > > > spin_lock_irq(&task->sighand->siglock); > > - if (task->state == __TASK_TRACED) { > > - if (__fatal_signal_pending(task)) > > - wake_up_state(task, __TASK_TRACED); > > - else > > - task->state = TASK_TRACED; > > - } > > + > > + raw_spin_lock(&task->pi_lock); > > but perhaps it should be raw_spin_lock_irq() ? > > I know nothing about kernel-rt, however it seems that spin_lock_irq() > from include/linux/spinlock_rt.h doesn't disable irqs? I don't exactly how much breaks when we turn siglock into a raw_spinlock_t but there is a memory allocation in __send_signal() which is a no no. There is task_is_traced() which looks under the PI lock for the task state to be sure (we a few of those). I haven't looked at the patch yet… > Oleg. Sebastian