On 10/10, Jan Kratochvil wrote: > > On Sat, 10 Oct 2009 18:24:21 +0200, Oleg Nesterov wrote: > > On 10/06, Jan Kratochvil wrote: > > > > > > Yes, I agree with the current general behavior of ptrace there is missing: > > > if (WIFSTOPPED (status) && WSTOPSIG (status) == SIGPIPE) > > > > > > [...snip...] > > > > > > --- attach-into-signal.c 31 Jan 2009 21:11:40 -0000 1.5 > > > +++ attach-into-signal.c 6 Oct 2009 14:27:08 -0000 > > > @@ -224,6 +224,18 @@ static void reproduce (void) > > > child = 0; > > > return; > > > } > > > + /* SIGPIPE was still pending and it has not been yet delivered. */ > > > + if (WIFSTOPPED (status) && WSTOPSIG (status) == SIGPIPE) > > > + { > > > + /* Deliver it and get the queued SIGSTOP. */ > > > + errno = 0; > > > + ptrace (PTRACE_CONT, child, (void *) 1, (void *) SIGPIPE); > > > + assert_perror (errno); > > > + > > > + errno = 0; > > > + pid = waitpid (child, &status, 0); > > > + assert (pid == child); > > > + } > > > assert (WIFSTOPPED (status)); > > > assert (WSTOPSIG (status) == SIGSTOP); > > > /* let tracee run. it must be killed very soon by SIGPIPE */ > > > > Jan, please revert this change. > > Reverted
Thanks! > (VERBOSE-caught with FAIL now). Cough. please translate this to me ;) Oleg.