I do not know what to do with ptrace_detach()->wake_up_process(). It is wrong even without utrace. But it is doubly wrong with utrace. So I am re-sending 95a3540da9c81a5987be810e1d9a83640a366bd5
--- kernel/ptrace.c | 2 -- 1 file changed, 2 deletions(-) --- PU/kernel/ptrace.c~11_DETACH_KILL_WAKE 2009-08-22 19:17:00.000000000 +0200 +++ PU/kernel/ptrace.c 2009-08-22 20:06:42.000000000 +0200 @@ -757,8 +757,6 @@ int ptrace_detach(struct task_struct *ch if (child->ptrace) { child->exit_code = data; dead = __ptrace_detach(current, child); - if (!child->exit_state) - wake_up_process(child); } write_unlock_irq(&tasklist_lock);