Messages in this thread | | | Date | Wed, 29 Feb 2012 19:50:56 +0100 | From | Oleg Nesterov <> | Subject | Re: Questions about ptrace on a dying process |
| |
On 02/29, Tim Bird wrote: > > ptrace maintainers (and interested parties)... > > I'm working on a crash handler for Linux, which uses ptrace to retrieve information > about a process during it's coredump. Specifically, from within a core handler > program (started within do_coredump() as a user_mode_helper), I would like to make > ptrace calls against the dying process.
Which calls? just curious.
> My problem is that the process state is not entering into TASK_TRACED, when > I do an PTRACE_ATTACH against it.
Yes, it can never do ptrace_stop() in do_coredump() paths.
Perhaps you can use PTRACE_O_TRACEEXIT. PTRACE_EVENT_EXIT will be reported after the coredumping. I think the core handler should close the pipe first, otherwise the dumping tracee will wait for the handler forever.
However. You need PTRACE_SEIZE, not PTRACE_ATTACH. And this can only work with the recent patch from Denys which allows to pass PTRACE_O_TRACEEXIT with PTRACE_SEIZE (currently in -mm tree).
Just in case, it could have other threads sleeping in TASK_UNINTERRUPTIBLE until do_coredump() completes. But these threads have already passed ptrace_event(PTRACE_EVENT_EXIT).
Oleg.
| |