Thanks, Amaury! We'll give it a shot. Can we enable this selectively? We'll take a look at that to isolate it to just the sessions that are problematic.
Best, Luke — Luke Seelenbinder Stadia Maps | Founder & CEO stadiamaps.com > On Jul 29, 2025, at 18:11, Amaury Denoyelle <adenoye...@haproxy.com> wrote: > > On Tue, Jul 29, 2025 at 04:10:12PM +0300, Luke Seelenbinder wrote: >> Hi list, >> We're working on debugging a quic/h3 issue on 3.2.3. >> The client shows a QUIC error (on Chrome v138). The server shows CD--, and >> the connections timeout. The client then retries after ~6s on http2, and >> everything succeeds. >> We're seeing the following debug details on the connections: >> fs=< qcs=0x7ff797f4ca00 .id=176 .st=HCR .flg=0x0181 .rx=486/1474200 rxb=0(1) >> .tx=0 0/6291456 buf=0(0)/0 .ti=30148/29785/0 qcc=0x7ff798552200(F) >> qc=0x7ff797fe0000 .st=INIT .sc=11 .hreq=11 .flg=0x0028 .tx=8133047 >> 8133047/15728640 bwnd=492506/491520 conn.flg=0x803c0300 >> qc.wnd=511307/491520> bs=< h1s=0x7ff7954c7fc0 h1s.flg=0x14094 >> .req.state=MSG_DONE .res.state=MSG_DATA .meth=GET status=200 >> .sd.flg=0x106c0a01 .sd.evts=E1 .sc.flg=0x00035211 .sc.app=0x7ff797857c00 >> .sc.evts=S1 .subs=(nil) h1c.flg=0x80004800 .sub=0 >> .ibuf=15568@0x7ff78cf96500+800/16384 .obuf=0@(nil)+0/0 .evts=M1 >> .task=0x7ff79251eec0 .exp=<NEVER> conn.flg=0x080300 conn.err_code=0 >> conn.evts=F1> > > At first glance, I'm seeing value 0x0181 for QCS instances, which can be > translated as QC_SF_HREQ_RECV | QC_SF_TO_RESET | QC_SF_SIZE_KNOWN. > > The second flag is probably the issue here : the stream has been > resetted by haproxy. This can occur due to several reasons : > * a STOP_SENDING frame was received > * an error during HTTP/3 decoding > * stream is shut prematurely by its upper haproxy layer > > To further investigate on the issue, the easiest solution would be to > activate traces, so that we can detect which one of the condition above > was encountered. The simplest way is to use the following command-line > argument to haproxy : '-dt qmux:developer:minimal', to output debug > traces on stderr. This will be really verbose, if not suitable a traces > section can be configured to redirect output on a sink. > > Regards, > > -- > Amaury Denoyelle > >