Hi Jamie,

On 04/25, Jamie Iles wrote:
>
> Hi Oleg,
>
> I'm back looking at SIGNAL_UNKILLABLE and debugging child reapers again, 
> and the current issue is when running code in the target process, 
> SIGTRAP firing and that causing SIGNAL_UNKILLABLE protection to be 
> removed in force_sig_info():
>
>       if (action->sa.sa_handler == SIG_DFL)
>               t->signal->flags &= ~SIGNAL_UNKILLABLE;

Yes, this is what I meant when I said force_sig_info() needs changes too.
I was going to fix it "tomorrow" but I was distracted and then forgot.

>   @@ -1185,7 +1185,7 @@ force_sig_info(int sig, struct siginfo *info, struct 
> task_struct *t)
>                       recalc_sigpending_and_wake(t);
>               }
>       }
>   -   if (action->sa.sa_handler == SIG_DFL)
>   +   if (action->sa.sa_handler == SIG_DFL && !t->ptrace)
>               t->signal->flags &= ~SIGNAL_UNKILLABLE;
>       ret = specific_send_sig_info(sig, info, t);
>       spin_unlock_irqrestore(&t->sighand->siglock, flags);

Not sure, let me think a bit more... and this is not enough anyway.

perhaps we should start with this simple change, but the "real" fix
needs a lot of cleanups, although I am not sure if we will ever do this.

Oleg.

Reply via email to