traced process should stop by any signal except for SIGKILL,

even if SIG_IGN.  (LTP ptrace01)
This commit is contained in:
Susumu Komae
2015-02-17 16:51:29 +09:00
committed by postpeta
parent 8b57b2ee57
commit 8568a73f33

View File

@@ -839,10 +839,10 @@ do_kill(int pid, int tid, int sig, siginfo_t *info, int ptracecont)
in check_signal */
rc = 0;
k = tproc->sighandler->action + sig - 1;
if(k->sa.sa_handler != (void *)1 &&
(k->sa.sa_handler != NULL ||
(tproc->ftn->ptrace & PT_TRACED) ||
(sig != SIGCHLD && sig != SIGURG))){
if((sig != SIGKILL && (tproc->ftn->ptrace & PT_TRACED)) ||
(k->sa.sa_handler != (void *)1 &&
(k->sa.sa_handler != NULL ||
(sig != SIGCHLD && sig != SIGURG)))){
struct sig_pending *pending = NULL;
if (sig < 33) { // SIGRTMIN - SIGRTMAX
list_for_each_entry(pending, head, list){