-
Notifications
You must be signed in to change notification settings - Fork 41
Description
Git's test suite added support a few months ago for running its http tests using http2 via apache. Since upgrading to mod_http v2.0.10 (via updating my Debian package of apache2 to v2.4.55), one test consistently fails. The issue is that on a larger fetch, libcurl fails after the protocol upgrade with:
error: RPC failed; HTTP 101 curl 16 Error in the HTTP2 framing layer
The last request is a POST. I've attached two traces from the git client side which show the actual sequence of requests. One with mod_http 2.0.9 that succeeds, and one with 2.0.10 which fails. On the server side, there's no error in the log at all. If I crank LogLevel to debug, there's lots of output but nothing that looks like an obvious problem to me. Here's an
error.log for the failing case.
Bisecting within the mod_h2 repository, the problem starts at 16ffed9. It's possible the problem is on the Git or libcurl side, but given that this commit is just meant to be refactoring, it makes me suspicious that there's some unintended bug.
I'm sorry that I don't have a more minimal reproduction recipe, but here's what I used to bisect:
git clone https://github.com/git/git
cd git
# the knobs here aren't strictly necessary, but disable some dependencies; however you can
# get it built is fine, as long as it is built with libcurl support
make NO_EXPAT=Nope NO_TCLTK=Nope NO_PYTHON=Nope NO_GETTEXT=Nope
# this is the failing test; "-i" asks it to stop as soon as it sees the failure
cd t
./t5559-http-fetch-smart-http2.sh -i
# the stderr from the failing client, including the trace, is captured in this file
cat "trash directory.t5559-http-fetch-smart-http2/err"There's also some discussion on the Git mailing list, but I've tried above to summarize everything useful.
I'm happy to investigate more on my end if you have suggestions.