Can't resist, I am sending this as a separate patch. Because I spent 3 hours debugging, and because the number and the ordering of these changes doesn't matter.
As I said, I know that these initial changes of stop/resume model need fixes, but I don't understand some failures. Will test/debug more. --- kernel/ptrace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- PU/kernel/ptrace.c~28_SYSCALL_EXIT_FIX 2009-09-09 23:41:03.000000000 +0200 +++ PU/kernel/ptrace.c 2009-09-10 00:23:58.000000000 +0200 @@ -360,7 +360,7 @@ static u32 ptrace_report_syscall_exit(en context->resume_stopped = ptrace_resume_syscall; context->stopped_code = (context->options & PTRACE_O_TRACESYSGOOD) ? (SIGTRAP | 0x80) : SIGTRAP; - return action | UTRACE_STOP; + return UTRACE_STOP; } static u32 ptrace_resumed(struct task_struct *task,