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 <dvlasenk@redhat.com>
diff --git a/strace.c b/strace.c
index 6e9ea91..ab971b5 100644
--- a/strace.c
+++ b/strace.c
@@ -2055,10 +2055,17 @@
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;
}
}