On Mon, Jul 22, 2019 at 2:26 PM Eli Zaretskii wrote: > > > From: Pip Cet > > 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?