From 71d3d29a9d51add731c07e328a7394db0b3dd212 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 21 Jun 2013 16:19:46 +0200 Subject: [PATCH] Panic a bit less when we see an unknown pid I stumbeld over this case when I used "exec stace ...". * strace.c (trace): Do not exit if we see an unknown pid in wait4. Signed-off-by: Denys Vlasenko --- strace.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/strace.c b/strace.c index 6e9ea91a..ab971b51 100644 --- a/strace.c +++ b/strace.c @@ -2055,10 +2055,17 @@ trace(void) pid); } else { /* This can happen if a clone call used - CLONE_PTRACE itself. */ - if (WIFSTOPPED(status)) + * CLONE_PTRACE itself, or if we inherited + * an unknown child. Example: + * (sleep 1 & exec strace sleep 2) + */ + if (WIFSTOPPED(status)) { ptrace(PTRACE_CONT, pid, (char *) 0, 0); - error_msg_and_die("Unknown pid: %u", pid); + error_msg("Stop of unknown pid %u seen, PTRACE_CONTed it", pid); + } else { + error_msg("Exit of unknown pid %u seen", pid); + } + continue; } } -- 2.40.0