On Fri, Sep 13, 2024 at 3:26 PM Junio C Hamano <gitster@xxxxxxxxx> wrote: > The last test in t5512 we recently added seems to be flaky. > Running > > $ make && cd t && sh ./t5512-ls-remote.sh --stress > > shows that "git ls-remote foo::bar" exited with status 141, which > means we got a SIGPIPE. This test piece was introduced by 9e89dcb6 > (builtin/ls-remote: fall back to SHA1 outside of a repo, 2024-08-02) > and is pretty much independent from all other tests in the script > (it can even run standalone with everything before it removed). > > The transport-helper.c:get_helper() function tries to write to the > helper. As we can see the helper script is very short and can exit > even before it reads anything, when get_helper() tries to give the > first command, "capabilities", the helper may already be gone. > > A trivial fix, presented here, os to make sure that the helper reads s/os/is/ > the first command it is given, as what it writes later is a response > to that command. > > I however would wonder if the interactions with the helper initiated > by get_helper() should be done on a non-blocking I/O (we do check > the return value from our write(2) system calls, do we?). > > Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx>