For the last few days, I've been unable to git clone https://git.haproxy.org/git/haproxy.git with curl-8.7.1, where I'm getting the following error:

  $ GIT_TRACE=1 git fetch https://git.haproxy.org/git/haproxy.git
19:12:01.277740 git.c:463 trace: built-in: git fetch https://git.haproxy.org/git/haproxy.git 19:12:01.278266 run-command.c:657 trace: run_command: GIT_DIR=.git git remote-https https://git.haproxy.org/git/haproxy.git https://git.haproxy.org/git/haproxy.git 19:12:01.279001 git.c:749 trace: exec: git-remote-https https://git.haproxy.org/git/haproxy.git https://git.haproxy.org/git/haproxy.git 19:12:01.279018 run-command.c:657 trace: run_command: git-remote-https https://git.haproxy.org/git/haproxy.git https://git.haproxy.org/git/haproxy.git fatal: unable to access 'https://git.haproxy.org/git/haproxy.git/': Failed writing received data to disk/application

I'm able to identify anything going off on the client, even though the error seems to indicate git could not write data on disk. After doing some digging, fetching https://git.haproxy.org/git/haproxy.git using curl 8.6.0 works like a charm, however I'm only seeing issue with git fetch/clone against git.haproxy.org and no other repo, thus both mailing list are made destination of this email.

Here is attached the output of git fetch with GIT_TRACE_CURL=1 in git-fetch-haproxy-curl-8.7.1.log

Version of git used on client side:
  git version 2.43.2
  cpu: x86_64
  no commit associated with this build
  sizeof-long: 8
  sizeof-size_t: 8
  shell-path: /bin/sh

Details of functional curl 8.6.0:
8.6.0 (x86_64-pc-linux-gnu) libcurl/8.6.0 OpenSSL/3.0.13 zlib/1.3 zstd/1.5.5 c-ares/1.26.0 libidn2/2.3.7 libpsl/0.21.5 nghttp2/1.57.0
  Release-Date: 2024-01-31
Protocols: dict file http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp smtp smtps tftp Features: alt-svc AsynchDNS HSTS HTTP2 HTTPS-proxy IDN IPv6 Largefile libz NTLM PSL SSL threadsafe TLS-SRP UnixSockets zstd

Details of non functional curl 8.7.1
curl 8.7.1 (x86_64-pc-linux-gnu) libcurl/8.7.1 OpenSSL/3.0.13 zlib/1.3 brotli/1.1.0 zstd/1.5.5 c-ares/1.26.0 libidn2/2.3.7 libpsl/0.21.5 libssh2/1.11.0 nghttp2/1.61.0 librtmp/2.3
  Release-Date: 2024-03-27
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp ws wss Features: alt-svc AsynchDNS brotli HSTS HTTP2 HTTPS-proxy IDN IPv6 Largefile libz NTLM PSL SSL threadsafe TLS-SRP UnixSockets zstd

Bisecting through changes from curl 8.6.0 to 8.7.1 points me to 463472a2d6e3 ("lib: move client writer into own source") (https://github.com/curl/curl/commit/463472a2d6e3301c1468b5323b856cb67a91f579) as the first bad commit.

Note this issue only appears when curl is compiled with HTTP2 enabled. I'm quite sure git.haproxy.org is running on bleeding edge HAProxy, which might not be supporting changes brought by 463472a2d6e3, however I'm curious here to understand protocol corruption.



Attachment: git-fetch-haproxy-curl-8.7.1.log
Description: Binary data

Reply via email to