Displaying 4 results from an estimated 4 matches for "edougra".
Did you mean:
edouard
2019 Sep 15
4
ssh client is setting O_NONBLOCK on a pipe shared with other processes
The quick summary is that we invoke git from a parallel invocation of
"make". Git invokes ssh to pull stuff from a remote repo. Ssh sets
O_NONBLOCK on stdout and stderr if they do not refer to a tty. During
our build, stderr refers to a pipe that other jobs run by make (and
make itself) may also write to, and since this is a parallel build,
they may write to that pipe while ssh has it
2019 Sep 16
2
ssh client is setting O_NONBLOCK on a pipe shared with other processes
> Case in point; EAGAIN can come if you give your fd to another process
> and continue using it yourself.
> Short counts; It is documented behavior that read() and write() may
> return short counts. It is not documented why, so you can not make
> any assumptions.
You might be right about short counts but if you're right about
EAGAIN, there are
bugs everywhere. My first
2019 Sep 16
2
ssh client is setting O_NONBLOCK on a pipe shared with other processes
...or (NILF, _("write error: %s"), strerror (errno));
else
error (NILF, _("write error"));
exit (EXIT_FAILURE);
}
}
On Sun, Sep 15, 2019 at 11:16 PM Darren Tucker <dtucker at dtucker.net> wrote:
>
> On Mon, 16 Sep 2019 at 01:18, Doug Graham <edougra at gmail.com> wrote:
> [...]
> > Make occasionally gets an unexpected EAGAIN error and fails the build
> > with the error message "make: write error".
>
> So the make process gets an EAGAIN on the write syscall and doesn't
> retry? That sounds like a bug in...
2019 Sep 16
2
ssh client is setting O_NONBLOCK on a pipe shared with other processes
> ssh has to set NONBLOCK otherwise it can, well, block - there's
> no way for ssh to know a priori how much data it can write to a fd.
I don't know anything about how ssh is structured, but I think it must
be a bit more complicated than that. Ssh only sets O_NONBLOCK on an
fd if isatty(fd) returns false, so it's able to function with blocking input
and output if the relevant