--- arch/um/kernel/tt/tracer.c.sav 2005-04-14 15:02:50.000000000 +1200 +++ arch/um/kernel/tt/tracer.c 2005-04-14 15:45:13.151868552 +1200 @@ -68,14 +68,17 @@ void attach_process(int pid) { - if((ptrace(PTRACE_ATTACH, pid, 0, 0) < 0) || - (ptrace(PTRACE_CONT, pid, 0, 0) < 0)) - tracer_panic("OP_FORK failed to attach pid"); + int err; + + if (!(err = ptrace(PTRACE_ATTACH, pid, 0, 0))) + tracer_panic("OP_FORK: PTRACE_ATTACH failed, pid = %d, err = %d\n", pid, -err); + if (!(err = ptrace(PTRACE_CONT, pid, 0, 0))) + tracer_panic("OP_FORK: PTRACE_CONT failed, pid = %d, err = %d\n", pid, -err); wait_for_stop(pid, SIGSTOP, PTRACE_CONT, NULL); - if (ptrace(PTRACE_OLDSETOPTIONS, pid, 0, (void *)PTRACE_O_TRACESYSGOOD) < 0) - tracer_panic("OP_FORK: PTRACE_SETOPTIONS failed, errno = %d", errno); - if(ptrace(PTRACE_CONT, pid, 0, 0) < 0) - tracer_panic("OP_FORK failed to continue process"); + if (!(err = ptrace(PTRACE_OLDSETOPTIONS, pid, 0, (void *)PTRACE_O_TRACESYSGOOD))) + tracer_panic("OP_FORK: PTRACE_SETOPTIONS failed, pid = %d, err = %d\n", pid, -err); + if (!(err = ptrace(PTRACE_CONT, pid, 0, 0))) + tracer_panic("OP_FORK: PTRACE_CONT (2) failed, pid = %d, err = %d\n", pid, -err); } void tracer_panic(char *format, ...)