I found the problem: * init uses waitpid(-1,,), thus the __WALL flag is not set * without __WALL, only processes with exit_signal == SIGCHLD are reaped * it's impossible for user space processes to die with another exit_signal, forget_original_parent changes the exit_signal back to SIGCHLD ("We dont want people slaying init"), and init itself doesn't use clone. * kernel threads can die with an arbitrary exit_signal. Alan, which fix would you prefer: * init could use wait3 and set __WALL. * all kernel thread users could set SIGCHLD. Some already do that (__call_usermodehelper). * the kernel_thread implementations could force the exit signal to SIGCHLD. I'd prefer the last version. The attached patch is tested with i386. The alpha, parisc and ppc assember changes are guessed. -- Manfred