[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#6074: accept-process-output on listening sockets cause non-interrupt
From: |
Pip Cet |
Subject: |
bug#6074: accept-process-output on listening sockets cause non-interruptible infloop |
Date: |
Mon, 22 Jul 2019 17:45:18 +0000 |
On Mon, Jul 22, 2019 at 2:26 PM Eli Zaretskii <eliz@gnu.org> wrote:
>
> > From: Pip Cet <pipcet@gmail.com>
> > Date: Mon, 22 Jul 2019 03:52:33 +0000
> >
> > diff --git a/src/process.c b/src/process.c
> > index abadabe77e..1311409274 100644
> > --- a/src/process.c
> > +++ b/src/process.c
> > @@ -5277,7 +5277,9 @@ wait_reading_process_output (intmax_t time_limit, int
> > nsecs, int read_kbd,
> > int nread = read_process_output (proc, wait_proc->infd);
> > if (nread < 0)
> > {
> > - if (errno == EIO || would_block (errno))
> > + if (errno == EINTR)
> > + continue;
> > + else
> > break;
> > }
> > else
>
> Isn't it better to simply call rarely_quit inside the loop?
Why would we try again after receiving EINVAL? I believe the right
behavior is to return immediately in this case, just as we do for EIO.
However, we should probably call rarely_quit inside the loop, anyway,
to catch the case of a kernel bug keeping us busy with EINTRs. How's
this?
0001-Don-t-retry-reading-after-receiving-EINVAL-bug-6074.patch
Description: Text Data