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.

Reply via email to