Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758934AbdDZPWj (ORCPT ); Wed, 26 Apr 2017 11:22:39 -0400 Received: from mx1.redhat.com ([209.132.183.28]:58448 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1761814AbdDZPTA (ORCPT ); Wed, 26 Apr 2017 11:19:00 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 11D9119D39D Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=oleg@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 11D9119D39D Date: Wed, 26 Apr 2017 17:18:58 +0200 From: Oleg Nesterov To: Jamie Iles Cc: linux-kernel@vger.kernel.org Subject: Re: SIGNAL_UNKILLABLE and init again Message-ID: <20170426151857.GA11894@redhat.com> References: <20170425173928.gaubfmxxbbvglnio@cedar> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170425173928.gaubfmxxbbvglnio@cedar> User-Agent: Mutt/1.5.24 (2015-08-30) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Wed, 26 Apr 2017 15:19:00 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1161 Lines: 33 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.