> But currently ptrace can wake up the tracee and then later it can be
> ptrace_stop()'ed again, in this case we can decrement ->group_stop_count
> twice for the same thread.

The behavior or the bookkeeping need to change so they are consistent.

> OK, forget about mt issues. Do you really mean PTRACE_CONT/etc must _not_
> wake up SIGNAL_STOP_STOPPED tracee ? This would be nice perhaps, but this
> means a serious user-visible change.

I'm talking about the UTRACE_STOP/utrace_control behavior here.

When we implement ptrace on top and then get to the nasty corners of
strange compatibility with old ptrace, we can figure out what the exact
user-visible ptrace semantics need to be.  We might just do those cleanly
on top, or we might need some special-case ptrace fiddling.  But what we
won't do is have ptrace do anything that confuses the utrace bookkeeping
or the signals bookkeeping, like the current wake_up_process() does.

> > Let's do it however makes the code taken all together come out cleanest.
> > From what you said before, it sounds like tracehook_finish_stop() would
> > help with that.
> 
> OK, I'll send the patch.

Use tracehook_*_jctl for the name, so it pairs with notify_jctl (and/or
change both names).  I avoid using "stop" in the tracehook.h names because
it's not inherently clear when that means "job control stop semantics"
and when that means other kinds of stopping (like utrace_stop/ptrace_stop).
jctl keeps it clear that this is only part of the code paths used for POSIX
job control stops.

> I think it can.

Ok!


Thanks,
Roland

Reply via email to