On Thu, 30 Oct 2014 22:55:41 +0100, Mark Wielaard wrote:
I did have to lookup how to use this though. And I couldn't make
it work
without adding an -o option to eu-stack to explicitly redirect output
since it seems you cannot use normal shell redirections
in /proc/sys/kernel/core_pattern. So I had to use something like
--output=/proc/%p/cwd/%i.stack. Where does the stdout of the
core_pattern end up otherwise?
Nowhere as the only open fd is 0 - the piped core file:
lr-x------ 1 root root 64 Nov 26 15:23 0 -> pipe:[5401953]
I did not expect (and did not use) eu-stack directly in
/proc/sys/kernel/core_pattern . I put there just a shell script which ended
with 'exec eu-stack ...'. This is why I have put into --help the comment:
core file fd 0 must be owned only by this process (e.g. use shell exec)
It would probably be good to have a full example usage in the --help
message (and tell people to look at man 5 core).
One should IMO put into that shell script dumping of more associated
information, such as /proc/PID/fd/ and other info found in ABRT, it needs to
find some proper appendable output file and/or unique directory etc. I do not
find it all suitable for eu-stack --help. That would be possibly appropriate
for a man page but elfutils has no man pages.
> The code of core_pattern function has been suggested by Oleg
Nesterov.
I was wondering if we could make this a little more generically usable
and call it --wait-exit or something like that. So people could also use
it outside the core_pattern if they just want to get a backtrace for a
known thread when it exits.
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?
Thanks,
Jan