On Thu, Sep 23, 2021 at 02:20:28PM -0700, Junio C Hamano wrote: > > +test_expect_success 'bogus symref in v0 capabilities' ' > > + test_commit foo && > > + oid=$(git rev-parse HEAD) && > > + { > > + printf "%s HEAD\0symref object-format=%s\n" "$oid" "$GIT_DEFAULT_HASH" | > > + test-tool pkt-line pack-raw-stdin && > > + printf "0000" > > + } >input && > > + git ls-remote --upload-pack="cat input ;:" . >actual && > > + printf "%s\tHEAD\n" "$oid" >expect && > > + test_cmp expect actual > > +' > > + > > test_done > > > > base-commit: 186eaaae567db501179c0af0bf89b34cbea02c26 > > I've been seeing an occasional and not-reliably-reproducible test > failure from t5704 in 'seen' these days---since this is the only > commit that touches t5704, I am suspecting if there is something > racy about it, but I am coming up empty after staring at it for a > few minutes. > > Building 87446480 (connect: also update offset for features without > values, 2021-09-18), which is an application of the patch directly on > top of v2.33.0, and doing > > $ cd t > $ while sh t5704-*.sh; do :; done > > I can get it fail in a dozen iterations or so when the box is > loaded, so it does seem timing dependent. I think the problem is that our fake upload-pack exits immediately, so ls-remote gets SIGPIPE. In a v0 conversation, ls-remote expects to say "0000" to indicate that it's not interested in fetching anything (in v2, it doesn't bother, since fetching would be a separate request that it just declines to make). This seems to fix it: diff --git a/t/t5704-protocol-violations.sh b/t/t5704-protocol-violations.sh index 34538cebf0..0983c2b507 100755 --- a/t/t5704-protocol-violations.sh +++ b/t/t5704-protocol-violations.sh @@ -40,7 +40,7 @@ test_expect_success 'bogus symref in v0 capabilities' ' test-tool pkt-line pack-raw-stdin && printf "0000" } >input && - git ls-remote --upload-pack="cat input ;:" . >actual && + git ls-remote --upload-pack="cat input; read junk;:" . >actual && printf "%s\tHEAD\n" "$oid" >expect && test_cmp expect actual ' -Peff