[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20170426151857.GA11894@redhat.com>
Date: Wed, 26 Apr 2017 17:18:58 +0200
From: Oleg Nesterov <oleg@...hat.com>
To: Jamie Iles <jamie.iles@...cle.com>
Cc: linux-kernel@...r.kernel.org
Subject: Re: SIGNAL_UNKILLABLE and init again
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.
Powered by blists - more mailing lists