ptrace_report_syscall_exit() can be entered when the tracee is killed, in that case resume_stopped/stopped_code can be set.
--- kernel/ptrace.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) --- PU/kernel/ptrace.c~32_REPORT_SYSCALL_EXIT_CK_KILLED 2009-09-13 21:22:24.000000000 +0200 +++ PU/kernel/ptrace.c 2009-09-13 21:46:39.000000000 +0200 @@ -367,8 +367,11 @@ static u32 ptrace_report_syscall_exit(en { struct ptrace_context *context = ptrace_context(engine); - WARN_ON(context->resume_stopped); - WARN_ON(context->stopped_code); + // XXX: temporary debugging check... + if (!fatal_signal_pending(task)) { + WARN_ON(context->resume_stopped); + WARN_ON(context->stopped_code); + } context->resume_stopped = ptrace_resume_syscall; context->stopped_code = (context->options & PTRACE_O_TRACESYSGOOD) ?