On Thu, 2014-11-27 at 22:47 +0100, Jan Kratochvil wrote: > On Thu, 27 Nov 2014 12:17:39 +0100, Mark Wielaard wrote: > > The waitpid () really is just waiting for PTRACE_EVENT_EXIT. So if you > > wrap that in a while loop wouldn't it just work fine too in case the > > user uses it with -p on a thread that they want to get the > > backtrace of when it exits instead of in a core file pattern handler > > pipe? > > Which way? Something like the following quick hack seems to work: int status; do { pid_t got = waitpid (pid, &status, 0); if (got == -1) error (EXIT_BAD, errno, "waitpid ()"); if (got != pid) error (EXIT_BAD, 0, "waitpid () returned %d but %d was expected", got, pid); } while (! WIFSTOPPED (status) && (status >> 8) != (SIGTRAP | (PTRACE_EVENT_EXIT << 8))); Then I can point eu-stack at some thread and get a backtrace when it exits. I am sure there is some more error handling to do. And I might have some of corner cases. But that seems to be the basic idea to get things to work outside the core_pattern filter. And IMHO it is an interesting feature if you just want to know when and how a running thread exits. Cheers, Mark