On Fri, Dec 29, 2017 at 04:48:13PM +0000, Lucas Rolff wrote: > > If you're willing to run another test, I can prepare a debugging patch > > which will try to report every single error path in the H2 and HPACK code > > so that we can try to understand where the code was upset > > I'd love to run another test or 10 - in the end, we'll all benefit from it > (hopefully)
OK great, let's start with an easy one. This patch will output a line on stderr for every function and line number where we go through a goto (most goto in the code are error handling and most error handling is unrolled using goto). For me it seldom prints : h2_process_demux:1759 When the client doesn't immediately send because it sees a partial request. But with FF I'm not even seeing this one. With a bit of luck you'll find one or a few lines that only happen when you observe the problem, and the sequence will help us figure what code path we're following. If it doesn't work we'll try to do better. Thanks! Willy
diff --git a/src/mux_h2.c b/src/mux_h2.c index 71660f8..8e1c821 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -167,6 +167,9 @@ enum h2_ss { #define H2_SF_HEADERS_SENT 0x00001000 // a HEADERS frame was sent for this stream #define H2_SF_OUTGOING_DATA 0x00002000 // set whenever we've seen outgoing data + +#define goto while (fprintf(stderr, "%s:%d\n", __FUNCTION__, __LINE__),1) goto + /* H2 stream descriptor, describing the stream as it appears in the H2C, and as * it is being processed in the internal HTTP representation (H1 for now). */