Skip to content

Commit

Permalink
t5512.40 sometimes dies by SIGPIPE
Browse files Browse the repository at this point in the history
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 9e89dcb
(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, is to make sure that the helper reads
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?).

Backported-from: e1e0d30 (t5512.40 sometimes dies by SIGPIPE, 2024-09-13)
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
  • Loading branch information
gitster authored and dscho committed Sep 24, 2024
1 parent f35db51 commit e346cc0
Showing 1 changed file with 1 addition and 0 deletions.
1 change: 1 addition & 0 deletions t/t5512-ls-remote.sh
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,7 @@ test_expect_success 'v0 clients can handle multiple symrefs' '
test_expect_success 'helper with refspec capability fails gracefully' '
mkdir test-bin &&
write_script test-bin/git-remote-foo <<-EOF &&
read capabilities
echo import
echo refspec ${SQ}*:*${SQ}
EOF
Expand Down

0 comments on commit e346cc0

Please sign in to comment.