On Thu, 27 Nov 2014 12:17:39 +0100, Mark Wielaard wrote: > On Wed, 2014-11-26 at 15:44 +0100, Jan Kratochvil wrote: > > I was trying to figure out some more generic functionality than --core-pattern > > but given that for core_pattern one needs to: > > PTRACE_SEIZE > > close(0) > > waitpid() > > I do not find any part of this sequence separable, do you? > > The close (0) is somewhat odd. I assume it signals the process is done > with handling the core file data and waitpid () never returns without > that? Yes. > But it does seem somewhat harmless. Are there any bad side effects from > closing stdin? We don't handle stdin at the moment. Although we could > maybe add --core=- to be explicit about the core data coming from stdin. I have discussed reading core file for --core-pattern in my other mail. > 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? #1 PTRACE_SEIZE waitpid() = lock-up on waitpid() #2 close(0); (in a process exec-ing eu-readelf) PTRACE_SEIZE = ESRCH; not tested but I find it obvious, the process has disappeared waitpid() = ECHILD; not tested but obviously there is no ptraced process I do not see where a while loop could be applied. Thanks, Jan