Re: Why I want PTRACE_O_TRACESTOP option

From: Pedro Alves
Date: Sat Sep 10 2011 - 07:21:02 EST


On Saturday 10 September 2011 02:17:03, Denys Vlasenko wrote:
> On Saturday 10 September 2011 01:09, Indan Zupancic wrote:
> > On Fri, September 9, 2011 18:26, Oleg Nesterov wrote:
> > > On 09/09, Indan Zupancic wrote:
> > >>
> > >> It is very useful to set options atomically at SEIZE time.
> > >
> > > Nobody argues with this.
> > >
> > >> Another important reason to make PTRACE_O_TRACESTOP an option is
> > >> because not everyone uses SEIZE: Users using PTRACE_TRACEME can't
> > >> set this option at all.
> > >
> > > Yes. This was already discussed, PTRACE_TRACEME obviously doesn't
> > > work if you need the new features. So far it was decided TRACEME
> > > should be avoided,
> >
> > How do you want to attach/seize a just forked child without races
> > in a less ugly way than with TRACEME?
>
> I needed to do it when I was adding usage of SEIZE to strace.
> It goes like this:
>
> - fork
> - child: raise(SIGSTOP)
> - parent: waits until it sees child stopping
> - parent: seizes the child
> - parent: kill(child, SIGCONT)

You can do without SIGSTOP/signals:

- pipe
- fork
- child: block reading pipe
- parent: seizes the child
- parent: whatever else needs doing (e.g, interrupt and set options if not already done at seize time)
- parent: close the pipe
- child: notices pipe closed, moves on.

GDB already does something similar for other OSs (darwin/OSX, ttrace/HP-UX).

--
Pedro Alves
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/