Messages in this thread | ![/](/images/icornerl.gif) | | Date | Mon, 14 Feb 2011 18:45:03 +0100 | From | Oleg Nesterov <> | Subject | Re: [PATCH 1/1] ptrace: make sure do_wait() won't hang after PTRACE_ATTACH |
| |
On 02/14, Tejun Heo wrote: > > On Mon, Feb 14, 2011 at 06:20:52PM +0100, Denys Vlasenko wrote: > > >> 23:02:15.622112 nanosleep({30, 0}, NULL) = ? ERESTART_RESTARTBLOCK (To be restarted) > > >> 23:02:23.781165 --- SIGSTOP (Stopped (signal)) @ 0 (0) --- > > >> 23:02:23.781251 --- SIGSTOP (Stopped (signal)) @ 0 (0) --- > > >> (I forgot again why we see it twice. Another quirk I guess...) > > >> 23:02:23.781310 restart_syscall(<... resuming interrupted call ...>) = 0 > > >> 23:02:45.622433 close(1) = 0 > > >> 23:02:45.622743 close(2) = 0 > > >> 23:02:45.622885 exit_group(0) = ? > ... > > > This can be fixed by updating strace, right? strace can look at the > > > wait(2) exit code and if the tracee stopped for group stop, wait for > > > the tracee to be continued instead of issuing PTRACE_SYSCALL. > > > > But tracee didn't stop _yet_. Signal is not delivered _yet_, debugger > > can decide at this point whether to deliver it: > > ptrace(PTRACE_SYSCALL, $PID, 0x1, SIGSTOP) > > or ignore: > > ptrace(PTRACE_SYSCALL, $PID, 0x1, 0) > > > > strace has to deliver SIGSTOP if it wants to make program run exactly > > as it would run without strace. So it tries to do so. > > Currently, ptrace machinery doesn't react as strace, its user, expects it to. > > Okay, maybe I'm missing something but so once SIGSTOP is determined to > be delivered, then the tracee enters group stop and that's the second > SIGSTOP notification you get.
Yes, this is correct.
But my head spins ;) I have already lost the picture.
> At that point, strace should wait for > the tracee to be continued by SIGCONT. That should work, right?
Again, given that strace is the real parent, in this particular case I think strace can work as you suggest.
Oleg.
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| ![\](/images/icornerr.gif) |