Fix bad signaling between threads when ancestor dies. Author: Zeuner, Axel --- linux/kernel/exit.c.original Mon Aug 5 09:09:31 2002 +++ linux/kernel/exit.c Mon Aug 5 12:26:38 2002 @@ -212,7 +212,6 @@ if (p->p_opptr == father) { /* We dont want people slaying init */ p->exit_signal = SIGCHLD; - p->self_exec_id++; /* Make sure we're not reparenting to ourselves */ p->p_opptr = child_reaper; --- linux/kernel/signal.c.original Mon Aug 5 12:26:49 2002 +++ linux/kernel/signal.c Mon Aug 5 12:34:44 2002 @@ -16,6 +16,8 @@ #include +extern struct task_struct* child_reaper; + /* * SLAB caches for signal bits. */ @@ -744,6 +746,9 @@ struct siginfo info; int why, status; + if (tsk->p_pptr==child_reaper) { + sig=SIGCHLD; + } info.si_signo = sig; info.si_errno = 0; info.si_pid = tsk->pid;