diff -NurpP linux-2.6.16-rc4-vs2.1.1-rc7/kernel/signal.c linux-2.6.16-rc4-vs2.1.1-rc7-st/kernel/signal.c --- linux-2.6.16-rc4-vs2.1.1-rc7/kernel/signal.c 2006-02-17 23:26:33 +0100 +++ linux-2.6.16-rc4-vs2.1.1-rc7-st/kernel/signal.c 2006-02-20 18:35:12 +0100 @@ -963,6 +963,8 @@ __group_complete_signal(int sig, struct { struct task_struct *t; + printk("··· _compsig_a: %p[#%d,%d] (%d)\n", + p, p->xid, p->pid, sig); /* * Now find a thread we can wake up to take the signal off the queue. * @@ -1000,6 +1002,8 @@ __group_complete_signal(int sig, struct p->signal->curr_target = t; } + printk("··· _compsig_b: %p[#%d,%d] (%d,%d)\n", + p, p->xid, p->pid, sig, sig_fatal(p, sig)); /* * Found a killable thread. If the signal will be fatal, * then start taking the whole group down immediately. @@ -1052,6 +1056,8 @@ __group_complete_signal(int sig, struct wake_up_process(p->signal->group_exit_task); return; } + printk("··· _compsig_c: %p[#%d,%d] (%d)\n", + t, t->xid, t->pid, sig); /* * The signal is already in the shared-pending queue. @@ -1069,10 +1075,14 @@ __group_send_sig_info(int sig, struct si assert_spin_locked(&p->sighand->siglock); handle_stop_signal(sig, p); + printk("··· _sendsig_a: %p[#%d,%d] %p(%d)\n", + p, p->xid, p->pid, info, sig); /* Short-circuit ignored signals. */ if (sig_ignored(p, sig)) return ret; + printk("··· _sendsig_b: %p[#%d,%d] %p(%d)\n", + p, p->xid, p->pid, info, sig); if (LEGACY_QUEUE(&p->signal->shared_pending, sig)) /* This is a non-RT signal and we already have one queued. */ return ret; @@ -1086,6 +1096,8 @@ __group_send_sig_info(int sig, struct si if (unlikely(ret)) return ret; + printk("··· _sendsig_c: %p[#%d,%d] %p(%d)\n", + p, p->xid, p->pid, info, sig); __group_complete_signal(sig, p); return 0; } @@ -1136,6 +1148,9 @@ int group_send_sig_info(int sig, struct struct sighand_struct *sp; int ret; + printk("··· sendsig: %p[#%d,%d] -> %p[#%d,%d] %p\n", current, + current->xid, current->pid, p, p->xid, p->pid, info); + retry: ret = check_kill_permission(sig, info, p); if (!ret && sig && (sp = rcu_dereference(p->sighand))) { @@ -1943,6 +1958,9 @@ relock: signr = dequeue_signal(current, mask, info); + printk("··· sigdel_a: %p[#%d,%d] i=%p[%d]\n", current, + current->xid, current->pid, info, signr); + if (!signr) break; /* will return 0 */ @@ -1979,6 +1997,9 @@ relock: } ka = ¤t->sighand->action[signr-1]; + printk("··· sigdel_b: %p[#%d,%d] ka=%p;%p\n", current, + current->xid, current->pid, ka, ka->sa.sa_handler); + if (ka->sa.sa_handler == SIG_IGN) /* Do nothing. */ continue; if (ka->sa.sa_handler != SIG_DFL) { @@ -2006,6 +2027,8 @@ relock: vx_current_initpid(current->pid)) continue; + printk("··· sigdel_c: %p[#%d,%d] s=%d\n", current, + current->xid, current->pid, sig_kernel_stop(signr)); if (sig_kernel_stop(signr)) { /* * The default action is to stop all threads in @@ -2046,6 +2069,8 @@ relock: * Anything else is fatal, maybe with a core dump. */ current->flags |= PF_SIGNALED; + printk("··· sigdel_d: %p[#%d,%d] s=%d\n", current, + current->xid, current->pid, sig_kernel_coredump(signr)); if (sig_kernel_coredump(signr)) { /* * If it was able to dump core, this kills all @@ -2061,6 +2086,8 @@ relock: /* * Death signals, no core dump. */ + printk("··· sigdel_e: %p[#%d,%d]\n", current, + current->xid, current->pid); do_group_exit(signr); /* NOTREACHED */ }