Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1630827

SIGNAL_UNKILLABLE and init again

From Jamie Iles <jamie.iles@oracle.com>
Newsgroups linux.kernel
Subject SIGNAL_UNKILLABLE and init again
Date 2017-04-25 19:40 +0200
Message-ID <tAcBs-7Ga-25@gated-at.bofh.it> (permalink)
Organization linux.* mail to news gateway

Show all headers | View raw


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;

Would relaxing that if the task is being traced with something like

  diff --git i/kernel/signal.c w/kernel/signal.c
  index 7e59ebc2c25e..f701f1889895 100644
  --- i/kernel/signal.c
  +++ w/kernel/signal.c
  @@ -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);

make any sense?  It does address the issue that I'm seeing, but are 
there any downsides to doing so?

Thanks,

Jamie

Back to linux.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

SIGNAL_UNKILLABLE and init again Jamie Iles <jamie.iles@oracle.com> - 2017-04-25 19:40 +0200
  Re: SIGNAL_UNKILLABLE and init again Oleg Nesterov <oleg@redhat.com> - 2017-04-26 17:30 +0200
    Re: SIGNAL_UNKILLABLE and init again Jamie Iles <jamie.iles@oracle.com> - 2017-04-27 14:20 +0200

csiph-web