Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mux_h1 segfault #1943

Closed
Tristan971 opened this issue Nov 22, 2022 · 10 comments
Closed

mux_h1 segfault #1943

Tristan971 opened this issue Nov 22, 2022 · 10 comments
Labels
status: fixed This issue is a now-fixed bug. type: bug This issue describes a bug.

Comments

@Tristan971
Copy link
Member

Tristan971 commented Nov 22, 2022

Detailed Description of the Problem

Discussed in #1903 and @a-denoyelle said the issue had been seen before, so just to not clutter that other issue with this unrelated one

Expected Behavior

n/a

Steps to Reproduce the Behavior

n/a

Do you have any idea what may have caused this?

No response

Do you have an idea how to solve the issue?

No response

What is your configuration?

n/a

Output of haproxy -vv

HAProxy version 2.7-dev9-7078fb1+mangadex-39cba23 2022-11-22T11:03+00:00 - https://haproxy.org/
Status: development branch - not safe for use in production.
Known bugs: https://github.com/haproxy/haproxy/issues?q=is:issue+is:open
Running on: Linux 5.4.195-1-pve #1 SMP PVE 5.4.195-1 (Wed, 13 Jul 2022 13:19:46 +0200) x86_64
Build options :
  TARGET  = linux-glibc
  CPU     = generic
  CC      = cc
  CFLAGS  = -O2 -ggdb3 -gdwarf-4 -Wall -Wextra -Wundef -Wdeclaration-after-statement -Wfatal-errors -Wtype-limits -Wshift-negative-value -Wnull-dereference -fwrapv -Wno-unknown-warning-option -Wno-address-of-packed-member -Wno-unused-label -Wno-sign-compare -Wno-unused-parameter -Wno-clobbered -Wno-missing-field-initializers -Wno-cast-function-type -Wno-string-plus-int -Wno-atomic-alignment -DMAX_SESS_STKCTR=5
  OPTIONS = USE_PCRE2=1 USE_PCRE2_JIT=1 USE_STATIC_PCRE2=1 USE_LIBCRYPT=1 USE_OPENSSL=1 USE_LUA=1 USE_SLZ=1 USE_TFO=1 USE_NS=1 USE_SYSTEMD=1 USE_QUIC=1 USE_PROMEX=1
  DEBUG   = -DDEBUG_MEMORY_POOLS -DDEBUG_STRICT=2

Feature list : +EPOLL -KQUEUE +NETFILTER -PCRE -PCRE_JIT +PCRE2 +PCRE2_JIT +POLL +THREAD -PTHREAD_EMULATION +BACKTRACE -STATIC_PCRE +STATIC_PCRE2 +TPROXY +LINUX_TPROXY +LINUX_SPLICE +LIBCRYPT +CRYPT_H -ENGINE +GETADDRINFO +OPENSSL +LUA +ACCEPT4 -CLOSEFROM -ZLIB +SLZ +CPU_AFFINITY +TFO +NS +DL +RT -DEVICEATLAS -51DEGREES -WURFL +SYSTEMD -OBSOLETE_LINKER +PRCTL -PROCCTL +THREAD_DUMP -EVPORTS -OT +QUIC +PROMEX -MEMORY_PROFILING +SHM_OPEN

Default settings :
  bufsize = 16384, maxrewrite = 1024, maxpollevents = 200

Built with multi-threading support (MAX_TGROUPS=16, MAX_THREADS=256, default=32).
Built with OpenSSL version : OpenSSL 1.1.1s+quic-mangadex-39cba23 22 Nov 2022
Running on OpenSSL version : OpenSSL 1.1.1s+quic-mangadex-39cba23 22 Nov 2022
OpenSSL library supports TLS extensions : yes
OpenSSL library supports SNI : yes
OpenSSL library supports : TLSv1.0 TLSv1.1 TLSv1.2 TLSv1.3
Built with Lua version : Lua 5.3.6
Built with the Prometheus exporter as a service
Built with network namespace support.
Support for malloc_trim() is enabled.
Built with libslz for stateless compression.
Compression algorithms supported : identity("identity"), deflate("deflate"), raw-deflate("deflate"), gzip("gzip")
Built with transparent proxy support using: IP_TRANSPARENT IPV6_TRANSPARENT IP_FREEBIND
Built with PCRE2 version : 10.40 2022-04-14
PCRE2 library supports JIT : yes
Encrypted password support via crypt(3): yes
Built with clang compiler version 14.0.6

Available polling systems :
      epoll : pref=300,  test result OK
       poll : pref=200,  test result OK
     select : pref=150,  test result OK
Total: 3 (3 usable), will use epoll.

Available multiplexer protocols :
(protocols marked as <default> cannot be specified using 'proto' keyword)
       quic : mode=HTTP  side=FE     mux=QUIC  flags=HTX|NO_UPG|FRAMED
         h2 : mode=HTTP  side=FE|BE  mux=H2    flags=HTX|HOL_RISK|NO_UPG
       fcgi : mode=HTTP  side=BE     mux=FCGI  flags=HTX|HOL_RISK|NO_UPG
         h1 : mode=HTTP  side=FE|BE  mux=H1    flags=HTX|NO_UPG
  <default> : mode=HTTP  side=FE|BE  mux=H1    flags=HTX
       none : mode=TCP   side=FE|BE  mux=PASS  flags=NO_UPG
  <default> : mode=TCP   side=FE|BE  mux=PASS  flags=

Available services : prometheus-exporter
Available filters :
        [BWLIM] bwlim-in
        [BWLIM] bwlim-out
        [CACHE] cache
        [COMP] compression
        [FCGI] fcgi-app
        [SPOE] spoe
        [TRACE] trace

Last Outputs and Backtraces

From #1903 (comment)

host 1
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  ha_crash_now () at include/haproxy/bug.h:52
52      include/haproxy/bug.h: No such file or directory.
[Current thread is 1 (Thread 0x7fa13bfff700 (LWP 45116))]
(gdb) t a a bt full

Thread 16 (Thread 0x7fa139ffb700 (LWP 45120)):
#0  0x00007fa17715e46e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056467b63d769 in _do_poll (p=<optimized out>, exp=-1618886454, wake=0) at src/ev_epoll.c:232
        timeout = 10
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 10
        status = <optimized out>
        count = <optimized out>
#2  0x000056467b7bc39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56467bb02b6d "run_poll_loop",
          file = 0x56467bb02b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = 134388544
#3  0x000056467b7c056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007fa177439609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007fa17715e133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 15 (Thread 0x7fa13b7fe700 (LWP 45117)):
#0  0x00007fa17715e46e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056467b63d769 in _do_poll (p=<optimized out>, exp=-1618886404, wake=0) at src/ev_epoll.c:232
        timeout = 66
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 66
        status = <optimized out>
        count = <optimized out>
#2  0x000056467b7bc39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56467bb02b6d "run_poll_loop",
          file = 0x56467bb02b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = 402824000
#3  0x000056467b7c056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007fa177439609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007fa17715e133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 14 (Thread 0x7fa141a3e700 (LWP 45113)):
#0  0x00007fa17715e46e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056467b63d769 in _do_poll (p=<optimized out>, exp=-1618886404, wake=0) at src/ev_epoll.c:232
        timeout = 56
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 56
        status = <optimized out>
        count = <optimized out>
#2  0x000056467b7bc39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56467bb02b6d "run_poll_loop",
          file = 0x56467bb02b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = 268606272
#3  0x000056467b7c056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007fa177439609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007fa17715e133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 13 (Thread 0x7fa14123d700 (LWP 45114)):
#0  0x00007fa17715e46e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056467b63d769 in _do_poll (p=<optimized out>, exp=-1618886404, wake=0) at src/ev_epoll.c:232
        timeout = 74
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 74
        status = <optimized out>
        count = <optimized out>
#2  0x000056467b7bc39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56467bb02b6d "run_poll_loop",
          file = 0x56467bb02b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = 67279680
#3  0x000056467b7c056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007fa177439609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007fa17715e133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 12 (Thread 0x7fa143a42700 (LWP 45109)):
#0  0x00007fa17715e46e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056467b63d769 in _do_poll (p=<optimized out>, exp=-1618886404, wake=0) at src/ev_epoll.c:232
        timeout = 71
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 71
        status = <optimized out>
        count = <optimized out>
#2  0x000056467b7bc39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56467bb02b6d "run_poll_loop",
          file = 0x56467bb02b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = 738368320
#3  0x000056467b7c056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007fa177439609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007fa17715e133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 11 (Thread 0x7fa13affd700 (LWP 45118)):
#0  0x00007fa17715e46e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056467b63d769 in _do_poll (p=<optimized out>, exp=-1618886404, wake=0) at src/ev_epoll.c:232
        timeout = 55
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 55
        status = <optimized out>
        count = <optimized out>
#2  0x000056467b7bc39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56467bb02b6d "run_poll_loop",
          file = 0x56467bb02b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = 201497408
#3  0x000056467b7c056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007fa177439609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007fa17715e133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 10 (Thread 0x7fa13a7fc700 (LWP 45119)):
#0  0x00007fa17715e46e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056467b63d769 in _do_poll (p=<optimized out>, exp=-1618886404, wake=0) at src/ev_epoll.c:232
        timeout = 134
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 134
        status = <optimized out>
        count = <optimized out>
#2  0x000056467b7bc39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56467bb02b6d "run_poll_loop",
          file = 0x56467bb02b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = 335715136
#3  0x000056467b7c056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007fa177439609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007fa17715e133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 9 (Thread 0x7fa144243700 (LWP 45108)):
#0  0x00007fa17715e46e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056467b63d769 in _do_poll (p=<optimized out>, exp=-1618886404, wake=0) at src/ev_epoll.c:232
        timeout = 94
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 94
        status = <optimized out>
        count = <optimized out>
#2  0x000056467b7bc39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56467bb02b6d "run_poll_loop",
          file = 0x56467bb02b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = 872586048
#3  0x000056467b7c056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007fa177439609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007fa17715e133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 8 (Thread 0x7fa143241700 (LWP 45110)):
#0  0x00007fa17715e46e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056467b63d769 in _do_poll (p=<optimized out>, exp=-1618886404, wake=0) at src/ev_epoll.c:232
        timeout = 55
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 55
        status = <optimized out>
        count = <optimized out>
#2  0x000056467b7bc39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56467bb02b6d "run_poll_loop",
          file = 0x56467bb02b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = 469932864
#3  0x000056467b7c056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007fa177439609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007fa17715e133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 7 (Thread 0x7fa14223f700 (LWP 45112)):
#0  0x00007fa17715e46e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056467b63d769 in _do_poll (p=<optimized out>, exp=-1618886404, wake=0) at src/ev_epoll.c:232
        timeout = 55
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 55
        status = <optimized out>
        count = <optimized out>
#2  0x000056467b7bc39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56467bb02b6d "run_poll_loop",
          file = 0x56467bb02b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = 604150592
#3  0x000056467b7c056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007fa177439609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007fa17715e133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 6 (Thread 0x7fa142a40700 (LWP 45111)):
#0  0x000056467b80511f in h1_headers_to_hdr_list (start=0x7fa130638be0 "GET /data/7cd3ccc34df0025a99de3d4631aba332/21-004eb6647b3e0ecd67d2cf065d5a2cd64065691fa24e956acf0d6d37742fcdd2.png HTTP/1.1\r\nHost: uploads.mangadex.org\r\nConnection: keep-alive\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0\r\nAccept-Language: en-US,en;q=0.5\r\nReferer: https://mangadex.org/chapter/07656cd1-e704-4fa7-964e-72fd2bb29746\r\nAccept-Encoding: gzip, deflate\r\n\r\nZXIiL"..., stop=stop@entry=0x7fa130638ddb "ZXIiLCJVc2VybmFtZSI6IkphdmFJblVzZSIsImV4cCI6MTY1MTUxMDgwNCwiaWF0IjoxNjUxNTEwODA0fQ.q2iOBcQjNvQJXtw32zsYP6m0NLV2Pboxto92xa5t-R__HWzn2m8wc5f9uAfZof76xAaY6eZYuuGtU_lIjxusvQ\r\nhost: uploads.mangadex.org\r\nsec-ch-ua-platform-version: 11\r\nsec-ch-ua-full-version: 0.8.2\r\nsec-ch-ua-platform: Android\r\nsec-ch-ua: \"Manga Easy\"; v=\"0.8.2\"\r\n\r\nN[\341\224w\240N\276\202K\217\071\315\246o\030\313\235o&\304zy\017Hx\n=L\310\003\264\321\244#a&\310\237\020p\370\003\346\350\370\274\026\316\301\221\005e\242\364!+f\245\003\373\301\"v\220\336%!\323r#\314K\036D\031L7h\255!\277\340D\371\223\065Nd ~\314[=\230\224\005\064Jc\203\364\213\353\001g\234s\257\036\355e\037_\224\221\347\317\332\300\035\274\326F\032\201\275\264\260\021\327\300\211\215\066y\255\321a\034\316c\266\270\330\350\030\305s\206T<\036\032\274\346\237\323rq\305\312\206\327M\275\070\n\352\065\377o\347\375E\372n2\236\225\206\305\034"..., hdr=0x7fa142a1bf00, hdr@entry=0x7fa130113fa8, hdr_num=101, hdr_num@entry=0, h1m=0x7fa130113fa8, slp=0x7fa142a1d000) at src/h1.c:422
        sl = {
          rq = {
            m = {
              ptr = 0x7fa130638be0 "GET /data/7cd3ccc34df0025a99de3d4631aba332/21-004eb6647b3e0ecd67d2cf065d5a2cd64065691fa24e956acf0d6d37742fcdd2.png HTTP/1.1\r\nHost: uploads.mangadex.org\r\nConnection: keep-alive\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0\r\nAccept-Language: en-US,en;q=0.5\r\nReferer: https://mangadex.org/chapter/07656cd1-e704-4fa7-964e-72fd2bb29746\r\nAccept-Encoding: gzip, deflate\r\n\r\nZXIiL"...,
              len = 3
            },
            u = {
              ptr = 0x7fa130638be4 "/data/7cd3ccc34df0025a99de3d4631aba332/21-004eb6647b3e0ecd67d2cf065d5a2cd64065691fa24e956acf0d6d37742fcdd2.png HTTP/1.1\r\nHost: uploads.mangadex.org\r\nConnection: keep-alive\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0\r\nAccept-Language: en-US,en;q=0.5\r\nReferer: https://mangadex.org/chapter/07656cd1-e704-4fa7-964e-72fd2bb29746\r\nAccept-Encoding: gzip, deflate\r\n\r\nZXIiLCJVc"...,
              len = 109
            },
            v = {
              ptr = 0x7fa130638c52 " HTTP/1.1\r\nHost: uploads.mangadex.org\r\nConnection: keep-alive\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0\r\nAccept-Language: en-US,en;q=0.5\r\nReferer: https://mangadex.org/chapter/07656cd1-e704-4fa7-964e-72fd2bb29746\r\nAccept-Encoding: gzip, deflate\r\n\r\nZXIiLCJVc2VybmFtZSI6IkphdmFJblVzZSIsImV4cCI6MTY1MTUxMDgwNCwiaWF0IjoxNjUxNTEwODA0fQ.q2iOBcQjNvQJXtw32zsYP6m0NLV2Pboxto92"...,
              len = 8
            },
            meth = HTTP_METH_OPTIONS
          },
          st = {
            v = {
              ptr = 0x7fa130638be0 "GET /data/7cd3ccc34df0025a99de3d4631aba332/21-004eb6647b3e0ecd67d2cf065d5a2cd64065691fa24e956acf0d6d37742fcdd2.png HTTP/1.1\r\nHost: uploads.mangadex.org\r\nConnection: keep-alive\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0\r\nAccept-Language: en-US,en;q=0.5\r\nReferer: https://mangadex.org/chapter/07656cd1-e704-4fa7-964e-72fd2bb29746\r\nAccept-Encoding: gzip, deflate\r\n\r\nZXIiL"...,
              len = 3
            },
            c = {
              ptr = 0x7fa130638be4 "/data/7cd3ccc34df0025a99de3d4631aba332/21-004eb6647b3e0ecd67d2cf065d5a2cd64065691fa24e956acf0d6d37742fcdd2.png HTTP/1.1\r\nHost: uploads.mangadex.org\r\nConnection: keep-alive\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0\r\nAccept-Language: en-US,en;q=0.5\r\nReferer: https://mangadex.org/chapter/07656cd1-e704-4fa7-964e-72fd2bb29746\r\nAccept-Encoding: gzip, deflate\r\n\r\nZXIiLCJVc"...,
              len = 109
            },
            r = {
              ptr = 0x7fa130638c52 " HTTP/1.1\r\nHost: uploads.mangadex.org\r\nConnection: keep-alive\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0\r\nAccept-Language: en-US,en;q=0.5\r\nReferer: https://mangadex.org/chapter/07656cd1-e704-4fa7-964e-72fd2bb29746\r\nAccept-Encoding: gzip, deflate\r\n\r\nZXIiLCJVc2VybmFtZSI6IkphdmFJblVzZSIsImV4cCI6MTY1MTUxMDgwNCwiaWF0IjoxNjUxNTEwODA0fQ.q2iOBcQjNvQJXtw32zsYP6m0NLV2Pboxto92"...,
              len = 8
            },
            status = 0
          }
        }
        v = {
          ptr = 0x7fa130638f09 "\"Manga Easy\"; v=\"0.8.2\"\r\n\r\nN[\341\224w\240N\276\202K\217\071\315\246o\030\313\235o&\304zy\017Hx\n=L\310\003\264\321\244#a&\310\237\020p\370\003\346\350\370\274\026\316\301\221\005e\242\364!+f\245\003\373\301\"v\220\336%!\323r#\314K\036D\031L7h\255!\277\340D\371\223\065Nd ~\314[=\230\224\005\064Jc\203\364\213\353\001g\234s\257\036\355e\037_\224\221\347\317\332\300\035\274\326F\032\201\275\264\260\021\327\300\211\215\066y\255\321a\034\316c\266\270\330\350\030\305s\206T<\036\032\274\346\237\323rq\305\312\206\327M\275\070\n\352\065\377o\347\375E\372n2\236\225\206\305\034\257jJ\031\347\234\362y]\342Y\315\064\235\317Y\r\240\v5\257!\303\261'y\200\201\034\213Q\005\255\252eIk\274B\312\205\342\264\225x\242Rq\001ZK6]\264/\305\b\326\353\203\314\316Q\031\313\255\210\312\210|]\301\333A\017duy\276\274\275X^|Z\256\320=X_V\227\327\337\337\364\235/O\317\060\017\t8nZ\355v7\273\254*\263\061x\227uQ\f\354D@\003\237\311\247\314R\271{\006CVW\244\224\004",
          len = 23
        }
        skip = 0
        sov = 0
        eol = 0
        col = 0
        sol = 0
        hdr_count = 0
        restarting = <optimized out>
        skip_update = 0
        host_idx = -1
        state = H1_MSG_RQBEFORE
        ptr = 0x7fa130638be0 "GET /data/7cd3ccc34df0025a99de3d4631aba332/21-004eb6647b3e0ecd67d2cf065d5a2cd64065691fa24e956acf0d6d37742fcdd2.png HTTP/1.1\r\nHost: uploads.mangadex.org\r\nConnection: keep-alive\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0\r\nAccept-Language: en-US,en;q=0.5\r\nReferer: https://mangadex.org/chapter/07656cd1-e704-4fa7-964e-72fd2bb29746\r\nAccept-Encoding: gzip, deflate\r\n\r\nZXIiL"...
        end = 0x7fa130638ddb "ZXIiLCJVc2VybmFtZSI6IkphdmFJblVzZSIsImV4cCI6MTY1MTUxMDgwNCwiaWF0IjoxNjUxNTEwODA0fQ.q2iOBcQjNvQJXtw32zsYP6m0NLV2Pboxto92xa5t-R__HWzn2m8wc5f9uAfZof76xAaY6eZYuuGtU_lIjxusvQ\r\nhost: uploads.mangadex.org\r\nsec-ch-ua-platform-version: 11\r\nsec-ch-ua-full-version: 0.8.2\r\nsec-ch-ua-platform: Android\r\nsec-ch-ua: \"Manga Easy\"; v=\"0.8.2\"\r\n\r\nN[\341\224w\240N\276\202K\217\071\315\246o\030\313\235o&\304zy\017Hx\n=L\310\003\264\321\244#a&\310\237\020p\370\003\346\350\370\274\026\316\301\221\005e\242\364!+f\245\003\373\301\"v\220\336%!\323r#\314K\036D\031L7h\255!\277\340D\371\223\065Nd ~\314[=\230\224\005\064Jc\203\364\213\353\001g\234s\257\036\355e\037_\224\221\347\317\332\300\035\274\326F\032\201\275\264\260\021\327\300\211\215\066y\255\321a\034\316c\266\270\330\350\030\305s\206T<\036\032\274\346\237\323rq\305\312\206\327M\275\070\n\352\065\377o\347\375E\372n2\236\225\206\305\034"...
        n = <optimized out>
#1  0x000056467b7ecf6c in h1_parse_msg_hdrs (h1m=h1m@entry=0x7fa130113fa8, h1sl=h1sl@entry=0x7fa142a1d000, dsthtx=dsthtx@entry=0x7fa130152a40, srcbuf=srcbuf@entry=0x7fa134748b60, ofs=<optimized out>, max=max@entry=15312) at src/h1_htx.c:349
        __vla_expr0 = 18446744073706358357
        hdrs = 0x7fa142a1bf00
        total = 0
        ret = 0
#2  0x000056467b6f4048 in h1_handle_headers (h1s=<optimized out>, h1m=<optimized out>, htx=<optimized out>, buf=<optimized out>, ofs=<optimized out>, max=<optimized out>) at src/mux_h1.c:1540
        h1sl = {
          rq = {
            m = {
              ptr = 0x7fa13055dfc8 "`\326U0\241\177",
              len = 1327144895509
            },
            u = {
              ptr = 0x20 <error: Cannot access memory at address 0x20>,
              len = 4
            },
            v = {
              ptr = 0x0,
              len = 511101108348
            },
            meth = 128
          },
          st = {
            v = {
              ptr = 0x7fa13055dfc8 "`\326U0\241\177",
              len = 1327144895509
            },
            c = {
              ptr = 0x20 <error: Cannot access memory at address 0x20>,
              len = 4
            },
            r = {
              ptr = 0x0,
              len = 511101108348
            },
            status = 51584
          }
        }
        ret = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        ws_ret = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
#3  h1_process_demux (h1c=h1c@entry=0x7fa134748b40, buf=buf@entry=0x7fa130113f88, count=15312) at src/mux_h1.c:1740
        used = <optimized out>
        h1s = 0x7fa130113f60
        ret = 0
        total = <optimized out>
        htx = 0x7fa130152a40
        h1m = 0x7fa130113fa8
        data = 0
#4  0x000056467b6f0a3f in h1_process (h1c=h1c@entry=0x7fa134748b40) at src/mux_h1.c:2980
        h1s = 0x7fa130113f60
        buf = 0x7fa130113f88
        count = 0
        conn = 0x7fa108468430
#5  0x000056467b6ef90e in h1_io_cb (t=t@entry=0x7fa130143060, ctx=ctx@entry=0x7fa134748b40, state=<optimized out>) at src/mux_h1.c:3172
        ret = 1
        conn = 0x7fa108468430
        conn_in_list = 0
        tl = <optimized out>
        h1c = <optimized out>
#6  0x000056467b7f09a0 in run_tasks_from_lists (budgets=budgets@entry=0x7fa142a1d3d0) at src/task.c:596
        _ = {
          func = 0x56467bb0cff7 "run_tasks_from_lists",
          file = 0x56467bb0cf62 "src/task.c",
          line = 658,
          what = 5 '\005',
          arg8 = 0 '\000',
          arg32 = 0
        }
        tl_queues = 0x7fa142a1d3c8
        budget_mask = 15 '\017'
        profile_entry = 0x0
        done = 1
        queue = 2
        t = 0x7fa130143060
        process = 0x56467b6ef2c0 <h1_io_cb>
        ctx = 0x7fa134748b40
        state = 0
#7  0x000056467b7f134a in process_runnable_tasks () at src/task.c:861
        max = {0, 0, 68, 0}
        tt = 0x56467beeeb80 <ha_thread_ctx+2304>
        heavy_queued = 1
        default_weights = {64, 48, 16, 1}
        max_processed = 70
        queue = 4
        budget = 0
        max_total = <optimized out>
        grq = <optimized out>
        lrq = <optimized out>
        gpicked = <optimized out>
        lpicked = <optimized out>
        t = <optimized out>
        tmp_list = <optimized out>
#8  0x000056467b7bc3d0 in run_poll_loop () at src/haproxy.c:2889
        _ = {
          func = 0x56467bb02b6d "run_poll_loop",
          file = 0x56467bb02b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = <optimized out>
#9  0x000056467b7c056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#10 0x00007fa177439609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#11 0x00007fa17715e133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 5 (Thread 0x7fa144ac5700 (LWP 45107)):
#0  0x00007fa17715e46e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056467b63d769 in _do_poll (p=<optimized out>, exp=-1618886404, wake=0) at src/ev_epoll.c:232
        timeout = 106
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 106
        status = <optimized out>
        count = <optimized out>
#2  0x000056467b7bc39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56467bb02b6d "run_poll_loop",
          file = 0x56467bb02b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = 1006803776
#3  0x000056467b7c056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007fa177439609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007fa17715e133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 4 (Thread 0x7fa1409bb700 (LWP 45115)):
#0  0x00007fa17715e46e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056467b63d769 in _do_poll (p=<optimized out>, exp=-1618886404, wake=0) at src/ev_epoll.c:232
        timeout = 91
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 91
        status = <optimized out>
        count = <optimized out>
#2  0x000056467b7bc39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56467bb02b6d "run_poll_loop",
          file = 0x56467bb02b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = 537041728
#3  0x000056467b7c056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007fa177439609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007fa17715e133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 3 (Thread 0x7fa176eb0180 (LWP 45105)):
#0  0x00007fa17715e46e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056467b63d769 in _do_poll (p=<optimized out>, exp=-1618886404, wake=0) at src/ev_epoll.c:232
        timeout = 73
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 73
        status = <optimized out>
        count = <optimized out>
#2  0x000056467b7bc39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56467bb02b6d "run_poll_loop",
          file = 0x56467bb02b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = 2091910144
#3  0x000056467b7c056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x000056467b7bf7eb in main (argc=<optimized out>, argv=0x7ffdeb7ad1f8) at src/haproxy.c:3734
        limit = {
          rlim_cur = 18446744073709551615,
          rlim_max = 18446744073709551615
        }
        pidfd = <optimized out>
        retry = <optimized out>
        err = <optimized out>
        intovf = <optimized out>

Thread 2 (Thread 0x7fa176e8c700 (LWP 45106)):
#0  0x00007fa17715e46e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056467b63d769 in _do_poll (p=<optimized out>, exp=-1618886404, wake=0) at src/ev_epoll.c:232
        timeout = 55
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 55
        status = <optimized out>
        count = <optimized out>
#2  0x000056467b7bc39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56467bb02b6d "run_poll_loop",
          file = 0x56467bb02b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = 1879220784
#3  0x000056467b7c056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007fa177439609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007fa17715e133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 1 (Thread 0x7fa13bfff700 (LWP 45116)):
#0  ha_crash_now () at include/haproxy/bug.h:52
No locals.
#1  h1s_destroy (h1s=0x7fa10c257480) at src/mux_h1.c:870
        h1c = 0x7fa11c04dd20
#2  0x000056467b6f23e9 in h1_release (h1c=h1c@entry=0x7fa11c04dd20) at src/mux_h1.c:1045
        _ = {
          func = 0x56467bad7673 "h1_release",
          file = 0x56467bad5efe "src/mux_h1.c",
          line = 1038,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        conn = <optimized out>
#3  0x000056467b6f18d0 in h1_timeout_task (t=t@entry=0x7fa1282c74b0, context=context@entry=0x7fa11c04dd20, state=<optimized out>) at src/mux_h1.c:3295
        h1c = 0x7fa11c04dd20
        expired = <optimized out>
#4  0x000056467b7f0a6c in run_tasks_from_lists (budgets=budgets@entry=0x7fa13bfdc3d0) at src/task.c:634
        _ = {
          func = 0x56467bb0cff7 "run_tasks_from_lists",
          file = 0x56467bb0cf62 "src/task.c",
          line = 658,
          what = 5 '\005',
          arg8 = 0 '\000',
          arg32 = 0
        }
        tl_queues = 0x7fa13bfdc3c8
        budget_mask = 15 '\017'
        profile_entry = 0x0
        done = 1
        queue = 1
        t = 0x7fa1282c74b0
        process = 0x56467b6f1500 <h1_timeout_task>
        ctx = 0x7fa11c04dd20
        state = 83
#5  0x000056467b7f134a in process_runnable_tasks () at src/task.c:861
        max = {39, 29, 0, 0}
        tt = 0x56467beef300 <ha_thread_ctx+4224>
        heavy_queued = 1
        default_weights = {64, 48, 16, 1}
        max_processed = 70
        queue = 4
        budget = 30
        max_total = <optimized out>
        grq = <optimized out>
        lrq = <optimized out>
        gpicked = <optimized out>
        lpicked = <optimized out>
        t = <optimized out>
        tmp_list = <optimized out>
#6  0x000056467b7bc3d0 in run_poll_loop () at src/haproxy.c:2889
        _ = {
          func = 0x56467bb02b6d "run_poll_loop",
          file = 0x56467bb02b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = <optimized out>
#7  0x000056467b7c056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#8  0x00007fa177439609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#9  0x00007fa17715e133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
host 2
Core was generated by `/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  ha_crash_now () at include/haproxy/bug.h:52
52      include/haproxy/bug.h: No such file or directory.
[Current thread is 1 (Thread 0x7f25b2880700 (LWP 1237))]
(gdb) t a a bt full

Thread 8 (Thread 0x7f25c0d62700 (LWP 1234)):
#0  0x00007f25c103446e in epoll_wait (epfd=91, events=0x7f25bc02a230, maxevents=200, timeout=timeout@entry=28) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
        resultvar = 18446744073709551612
        sc_cancel_oldtype = 0
        sc_ret = <optimized out>
#1  0x00005612ad99c769 in _do_poll (p=<optimized out>, exp=-1619770904, wake=0) at src/ev_epoll.c:232
        timeout = 28
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 28
        status = <optimized out>
        count = <optimized out>
#2  0x00005612adb1b39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x5612ade61b6d "run_poll_loop",
          file = 0x5612ade61b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = -1140678096
#3  0x00005612adb1f56f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007f25c130f609 in start_thread (arg=<optimized out>) at pthread_create.c:477
        ret = <optimized out>
        pd = <optimized out>
        unwind_buf = {
          cancel_jmp_buf = {{
              jmp_buf = {139800125777664, -5928666646462051097, 140733152068270, 140733152068271, 140733152068272, 139800125633920, 6049078391241198823, 6049081389164154087},
              mask_was_saved = 0
            }},
          priv = {
            pad = {0x0, 0x0, 0x0, 0x0},
            data = {
              prev = 0x0,
              cleanup = 0x0,
              canceltype = 0
            }
          }
        }
        not_first_call = 0
#5  0x00007f25c1034133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.

Thread 7 (Thread 0x7f25b3081700 (LWP 1236)):
#0  0x00007f25c103446e in epoll_wait (epfd=97, events=0x7f2590029b40, maxevents=200, timeout=timeout@entry=33) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
        resultvar = 18446744073709551612
        sc_cancel_oldtype = 0
        sc_ret = <optimized out>
#1  0x00005612ad99c769 in _do_poll (p=<optimized out>, exp=-1619770904, wake=0) at src/ev_epoll.c:232
        timeout = 33
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 33
        status = <optimized out>
        count = <optimized out>
#2  0x00005612adb1b39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x5612ade61b6d "run_poll_loop",
          file = 0x5612ade61b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = -1878877376
#3  0x00005612adb1f56f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007f25c130f609 in start_thread (arg=<optimized out>) at pthread_create.c:477
        ret = <optimized out>
        pd = <optimized out>
        unwind_buf = {
          cancel_jmp_buf = {{
              jmp_buf = {139799894169344, -5928666646462051097, 140733152068270, 140733152068271, 140733152068272, 139799894025600, 6048971000415800551, 6049081389164154087},
              mask_was_saved = 0
            }},
          priv = {
            pad = {0x0, 0x0, 0x0, 0x0},
            data = {
              prev = 0x0,
              cleanup = 0x0,
              canceltype = 0
            }
          }
        }
        not_first_call = 0
#5  0x00007f25c1034133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.

Thread 6 (Thread 0x7f25b107d700 (LWP 1240)):
#0  0x00007f25c103446e in epoll_wait (epfd=111, events=0x7f2580029b40, maxevents=200, timeout=timeout@entry=24) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
        resultvar = 18446744073709551612
        sc_cancel_oldtype = 0
        sc_ret = <optimized out>
#1  0x00005612ad99c769 in _do_poll (p=<optimized out>, exp=-1619770904, wake=0) at src/ev_epoll.c:232
        timeout = 24
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 24
        status = <optimized out>
        count = <optimized out>
#2  0x00005612adb1b39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x5612ade61b6d "run_poll_loop",
          file = 0x5612ade61b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = -2147312832
#3  0x00005612adb1f56f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007f25c130f609 in start_thread (arg=<optimized out>) at pthread_create.c:477
        ret = <optimized out>
        pd = <optimized out>
        unwind_buf = {
          cancel_jmp_buf = {{
              jmp_buf = {139799860598528, -5928666646462051097, 140733152068270, 140733152068271, 140733152068272, 139799860454784, 6048975400609795303, 6049081389164154087},
              mask_was_saved = 0
            }},
          priv = {
            pad = {0x0, 0x0, 0x0, 0x0},
            data = {
              prev = 0x0,
              cleanup = 0x0,
              canceltype = 0
            }
          }
        }
        not_first_call = 0
#5  0x00007f25c1034133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.

Thread 5 (Thread 0x7f25b187e700 (LWP 1239)):
#0  0x00007f25c103446e in epoll_wait (epfd=105, events=0x7f2588029b40, maxevents=200, timeout=timeout@entry=24) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
        resultvar = 18446744073709551612
        sc_cancel_oldtype = 0
        sc_ret = <optimized out>
#1  0x00005612ad99c769 in _do_poll (p=<optimized out>, exp=-1619770904, wake=0) at src/ev_epoll.c:232
        timeout = 24
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 24
        status = <optimized out>
        count = <optimized out>
#2  0x00005612adb1b39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x5612ade61b6d "run_poll_loop",
          file = 0x5612ade61b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = -2013095104
#3  0x00005612adb1f56f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007f25c130f609 in start_thread (arg=<optimized out>) at pthread_create.c:477
        ret = <optimized out>
        pd = <optimized out>
        unwind_buf = {
          cancel_jmp_buf = {{
              jmp_buf = {139799868991232, -5928666646462051097, 140733152068270, 140733152068271, 140733152068272, 139799868847488, 6048974300561296615, 6049081389164154087},
              mask_was_saved = 0
            }},
          priv = {
            pad = {0x0, 0x0, 0x0, 0x0},
            data = {
              prev = 0x0,
              cleanup = 0x0,
              canceltype = 0
            }
          }
        }
        not_first_call = 0
#5  0x00007f25c1034133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.

Thread 4 (Thread 0x7f25b207f700 (LWP 1238)):
#0  0x00007f25c103446e in epoll_wait (epfd=100, events=0x7f2594029b40, maxevents=200, timeout=timeout@entry=30) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
        resultvar = 18446744073709551612
        sc_cancel_oldtype = 0
        sc_ret = <optimized out>
#1  0x00005612ad99c769 in _do_poll (p=<optimized out>, exp=-1619770904, wake=0) at src/ev_epoll.c:232
        timeout = 30
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 30
        status = <optimized out>
        count = <optimized out>
#2  0x00005612adb1b39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x5612ade61b6d "run_poll_loop",
          file = 0x5612ade61b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = -1811768512
#3  0x00005612adb1f56f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007f25c130f609 in start_thread (arg=<optimized out>) at pthread_create.c:477
        ret = <optimized out>
        pd = <optimized out>
        unwind_buf = {
          cancel_jmp_buf = {{
              jmp_buf = {139799877383936, -5928666646462051097, 140733152068270, 140733152068271, 140733152068272, 139799877240192, 6048968800318803175, 6049081389164154087},
              mask_was_saved = 0
            }},
          priv = {
            pad = {0x0, 0x0, 0x0, 0x0},
            data = {
              prev = 0x0,
              cleanup = 0x0,
              canceltype = 0
            }
          }
        }
        not_first_call = 0
#5  0x00007f25c1034133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.

Thread 3 (Thread 0x7f25b3903700 (LWP 1235)):
#0  0x00007f25c103446e in epoll_wait (epfd=94, events=0x7f2598029b40, maxevents=200, timeout=timeout@entry=9) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
        resultvar = 1
        sc_cancel_oldtype = 0
        sc_ret = <optimized out>
#1  0x00005612ad99c769 in _do_poll (p=<optimized out>, exp=-1619770919, wake=0) at src/ev_epoll.c:232
        timeout = 9
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 9
        status = <optimized out>
        count = <optimized out>
#2  0x00005612adb1b39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x5612ade61b6d "run_poll_loop",
          file = 0x5612ade61b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = -1744659648
#3  0x00005612adb1f56f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007f25c130f609 in start_thread (arg=<optimized out>) at pthread_create.c:477
        ret = <optimized out>
        pd = <optimized out>
        unwind_buf = {
          cancel_jmp_buf = {{
              jmp_buf = {139799903090432, -5928666646462051097, 140733152068270, 140733152068271, 140733152068272, 139799902946688, 6048969837553405159, 6049081389164154087},
              mask_was_saved = 0
            }},
          priv = {
            pad = {0x0, 0x0, 0x0, 0x0},
            data = {
              prev = 0x0,
              cleanup = 0x0,
              canceltype = 0
            }
          }
        }
        not_first_call = 0
#5  0x00007f25c1034133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.

Thread 2 (Thread 0x7f25c0d86180 (LWP 1233)):
#0  0x00007f25c103446e in epoll_wait (epfd=6, events=0x5612b0572760, maxevents=200, timeout=timeout@entry=27) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
        resultvar = 18446744073709551612
        sc_cancel_oldtype = 0
        sc_ret = <optimized out>
#1  0x00005612ad99c769 in _do_poll (p=<optimized out>, exp=-1619770904, wake=0) at src/ev_epoll.c:232
        timeout = 27
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 27
        status = <optimized out>
        count = <optimized out>
#2  0x00005612adb1b39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x5612ade61b6d "run_poll_loop",
          file = 0x5612ade61b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = -1336465568
#3  0x00005612adb1f56f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00005612adb1e7eb in main (argc=<optimized out>, argv=0x7ffefd898848) at src/haproxy.c:3734
        limit = {
          rlim_cur = 18446744073709551615,
          rlim_max = 18446744073709551615
        }
        pidfd = <optimized out>
        retry = <optimized out>
        err = <optimized out>
        intovf = <optimized out>

Thread 1 (Thread 0x7f25b2880700 (LWP 1237)):
#0  ha_crash_now () at include/haproxy/bug.h:52
No locals.
#1  h1s_destroy (h1s=0x7f259820a410) at src/mux_h1.c:870
        h1c = 0x7f25945360f0
#2  0x00005612ada513e9 in h1_release (h1c=h1c@entry=0x7f25945360f0) at src/mux_h1.c:1045
        _ = {
          func = 0x5612ade36673 "h1_release",
          file = 0x5612ade34efe "src/mux_h1.c",
          line = 1038,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        conn = <optimized out>
#3  0x00005612ada508d0 in h1_timeout_task (t=t@entry=0x7f258c0c5330, context=context@entry=0x7f25945360f0, state=<optimized out>) at src/mux_h1.c:3295
        h1c = 0x7f25945360f0
        expired = <optimized out>
#4  0x00005612adb4fa6c in run_tasks_from_lists (budgets=budgets@entry=0x7f25b285d3d0) at src/task.c:634
        _ = {
          func = 0x5612ade6bff7 "run_tasks_from_lists",
          file = 0x5612ade6bf62 "src/task.c",
          line = 658,
          what = 5 '\005',
          arg8 = 0 '\000',
          arg32 = 0
        }
        tl_queues = 0x7f25b285d3c8
        budget_mask = 15 '\017'
        profile_entry = 0x0
        done = 2
        queue = 1
        t = 0x7f258c0c5330
        process = 0x5612ada50500 <h1_timeout_task>
        ctx = 0x7f25945360f0
        state = 83
#5  0x00005612adb5034a in process_runnable_tasks () at src/task.c:861
        max = {0, 90, 0, 0}
        tt = 0x5612ae24d880 <ha_thread_ctx+1536>
        heavy_queued = 1
        default_weights = {64, 48, 16, 1}
        max_processed = 93
        queue = 4
        budget = 93
        max_total = <optimized out>
        grq = <optimized out>
        lrq = <optimized out>
        gpicked = <optimized out>
        lpicked = <optimized out>
        t = <optimized out>
        tmp_list = <optimized out>
#6  0x00005612adb1b3d0 in run_poll_loop () at src/haproxy.c:2889
        _ = {
          func = 0x5612ade61b6d "run_poll_loop",
          file = 0x5612ade61b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = <optimized out>
#7  0x00005612adb1f56f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#8  0x00007f25c130f609 in start_thread (arg=<optimized out>) at pthread_create.c:477
        ret = <optimized out>
        pd = <optimized out>
        unwind_buf = {
          cancel_jmp_buf = {{
              jmp_buf = {139799885776640, -5928666646462051097, 140733152068270, 140733152068271, 140733152068272, 139799885632896, 6048967700270304487, 6049081389164154087},
              mask_was_saved = 0
            }},
          priv = {
            pad = {0x0, 0x0, 0x0, 0x0},
            data = {
              prev = 0x0,
              cleanup = 0x0,
              canceltype = 0
            }
          }
        }
        not_first_call = 0
#9  0x00007f25c1034133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.

Additional Information

Already working to get H1 traces after amaury asked for these

@Tristan971 Tristan971 added status: needs-triage This issue needs to be triaged. type: bug This issue describes a bug. labels Nov 22, 2022
@capflam
Copy link
Member

capflam commented Nov 22, 2022

Thanks, I'm on it. I'm testing a fix.

@capflam capflam added dev This issue affects the HAProxy development branch. status: reviewed This issue was reviewed. A fix is required. and removed status: needs-triage This issue needs to be triaged. labels Nov 22, 2022
@Tristan971
Copy link
Member Author

That's fast 😄 Well, if I get a trace before your patch I'll share it either way in case it's helpful, otherwise I'll test the fix :-)

@capflam
Copy link
Member

capflam commented Nov 22, 2022

Clearly not fast enough :)

Well, the fix works, but I'm must be sure it is the right way to fix the bug. BTW, here it the patch:

diff --git a/src/mux_h1.c b/src/mux_h1.c
index 9eca08c337..a0d4db6dda 100644
--- a/src/mux_h1.c
+++ b/src/mux_h1.c
@@ -2890,6 +2890,8 @@ static int h1_send(struct h1c *h1c)
                h1c->flags |= H1C_F_ERR_PENDING;
                if (h1c->flags & H1C_F_EOS)
                        h1c->flags |= H1C_F_ERROR;
+               else if (!(h1c->wait_event.events & SUB_RETRY_RECV))
+                       h1c->conn->xprt->subscribe(h1c->conn, h1c->conn->xprt_ctx, SUB_RETRY_RECV, &h1c->wait_event);
                b_reset(&h1c->obuf);
        }
 
@@ -3262,7 +3264,7 @@ struct task *h1_timeout_task(struct task *t, void *context, unsigned int state)
                        }
                }
 
-               if (h1c->state == H1_CS_UPGRADING) {
+               if (!se_fl_test(h1c->h1s->sd, SE_FL_ORPHAN)) {
                        /* Don't release the H1 connection right now, we must destroy the
                         * attached SC first. */
                        se_fl_set(h1c->h1s->sd, SE_FL_EOS | SE_FL_ERROR);
@@ -3846,6 +3848,8 @@ static int h1_snd_pipe(struct stconn *sc, struct pipe *pipe)
                h1c->flags = (h1c->flags & ~H1C_F_WANT_SPLICE) | H1C_F_ERR_PENDING;
                if (h1c->flags & H1C_F_EOS)
                        h1c->flags |= H1C_F_ERROR;
+               else if (!(h1c->wait_event.events & SUB_RETRY_RECV))
+                       h1c->conn->xprt->subscribe(h1c->conn, h1c->conn->xprt_ctx, SUB_RETRY_RECV, &h1c->wait_event);
                se_fl_set_error(h1s->sd);
                TRACE_DEVEL("connection error", H1_EV_STRM_ERR|H1_EV_H1C_ERR|H1_EV_H1S_ERR, h1c->conn, h1s);
        }

@Tristan971
Copy link
Member Author

Tristan971 commented Nov 22, 2022

At least it certainly seems to match some of the last outputs of the earlier crashes (which I always forget to check):

FATAL: bug condition "h1s->sd && !se_fl_test(h1s->sd, SE_FL_ORPHAN)" matched at src/mux_h1.c:870

must be sure it is the right way to fix the bug

Can totally understand that; it's not a big problem for me right now anyway so no worries 👍

@capflam
Copy link
Member

capflam commented Nov 22, 2022

copy that !

@Tristan971
Copy link
Member Author

alright, if it helps you decide whether the fix is correct or not, I have a backtrace+trace combo of it:

backtrace
Core was generated by `/usr/sbin/haproxy -sf 45510 -x sockpair@6 -Ws -f /etc/haproxy/haproxy.cfg -p /r'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  ha_crash_now () at include/haproxy/bug.h:52
52      include/haproxy/bug.h: No such file or directory.
[Current thread is 1 (Thread 0x7f26097f4700 (LWP 50959))]

Thread 16 (Thread 0x7f2609ff5700 (LWP 50958)):
#0  0x00007f261205946e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056539d32d769 in _do_poll (p=<optimized out>, exp=-1613102705, wake=0) at src/ev_epoll.c:232
        timeout = 21
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 21
        status = <optimized out>
        count = <optimized out>
#2  0x000056539d4ac39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56539d7f2b6d "run_poll_loop",
          file = 0x56539d7f2b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = -1073045696
#3  0x000056539d4b056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007f2612334609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007f2612059133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 15 (Thread 0x7f2606fef700 (LWP 50964)):
#0  0x00007f261205946e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056539d32d769 in _do_poll (p=<optimized out>, exp=-1613102705, wake=0) at src/ev_epoll.c:232
        timeout = 12
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 12
        status = <optimized out>
        count = <optimized out>
#2  0x000056539d4ac39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56539d7f2b6d "run_poll_loop",
          file = 0x56539d7f2b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = -670392512
#3  0x000056539d4b056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007f2612334609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007f2612059133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 14 (Thread 0x7f26057ec700 (LWP 50967)):
#0  0x00007f261205946e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056539d32d769 in _do_poll (p=<optimized out>, exp=-1613102705, wake=0) at src/ev_epoll.c:232
        timeout = 13
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 13
        status = <optimized out>
        count = <optimized out>
#2  0x000056539d4ac39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56539d7f2b6d "run_poll_loop",
          file = 0x56539d7f2b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = 696128
#3  0x000056539d4b056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007f2612334609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007f2612059133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 13 (Thread 0x7f2611d87700 (LWP 50954)):
#0  0x00007f261205946e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056539d32d769 in _do_poll (p=<optimized out>, exp=-1613102705, wake=0) at src/ev_epoll.c:232
        timeout = 8
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 8
        status = <optimized out>
        count = <optimized out>
#2  0x000056539d4ac39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56539d7f2b6d "run_poll_loop",
          file = 0x56539d7f2b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = -871719104
#3  0x000056539d4b056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007f2612334609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007f2612059133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 12 (Thread 0x7f2604feb700 (LWP 50968)):
#0  0x00007f261205946e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056539d32d769 in _do_poll (p=<optimized out>, exp=-1613102706, wake=0) at src/ev_epoll.c:232
        timeout = 8
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 8
        status = <optimized out>
        count = <optimized out>
#2  0x000056539d4ac39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56539d7f2b6d "run_poll_loop",
          file = 0x56539d7f2b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = -401957056
#3  0x000056539d4b056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007f2612334609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007f2612059133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 11 (Thread 0x7f2605fed700 (LWP 50966)):
#0  0x00007f261205946e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056539d32d769 in _do_poll (p=<optimized out>, exp=-1613102705, wake=0) at src/ev_epoll.c:232
        timeout = 40
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 40
        status = <optimized out>
        count = <optimized out>
#2  0x000056539d4ac39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56539d7f2b6d "run_poll_loop",
          file = 0x56539d7f2b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = -938827968
#3  0x000056539d4b056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007f2612334609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007f2612059133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 10 (Thread 0x7f2611dab180 (LWP 50953)):
#0  0x00007f261205946e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056539d32d769 in _do_poll (p=<optimized out>, exp=-1613102705, wake=0) at src/ev_epoll.c:232
        timeout = 10
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 10
        status = <optimized out>
        count = <optimized out>
#2  0x000056539d4ac39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56539d7f2b6d "run_poll_loop",
          file = 0x56539d7f2b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = -1151754832
#3  0x000056539d4b056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x000056539d4af7eb in main (argc=<optimized out>, argv=0x7ffd526fc0b8) at src/haproxy.c:3734
        limit = {
          rlim_cur = 18446744073709551615,
          rlim_max = 18446744073709551615
        }
        pidfd = <optimized out>
        retry = <optimized out>
        err = <optimized out>
        intovf = <optimized out>

Thread 9 (Thread 0x7f26067ee700 (LWP 50965)):
#0  0x00007f261205946e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056539d32d769 in _do_poll (p=<optimized out>, exp=-1613102705, wake=0) at src/ev_epoll.c:232
        timeout = 8
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 8
        status = <optimized out>
        count = <optimized out>
#2  0x000056539d4ac39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56539d7f2b6d "run_poll_loop",
          file = 0x56539d7f2b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = -804610240
#3  0x000056539d4b056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007f2612334609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007f2612059133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 8 (Thread 0x7f260aff7700 (LWP 50956)):
#0  0x00007f261205946e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056539d32d769 in _do_poll (p=<optimized out>, exp=-1613102711, wake=0) at src/ev_epoll.c:232
        timeout = 24
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 24
        status = <optimized out>
        count = <optimized out>
#2  0x000056539d4ac39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56539d7f2b6d "run_poll_loop",
          file = 0x56539d7f2b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = -737501376
#3  0x000056539d4b056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007f2612334609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007f2612059133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 7 (Thread 0x7f26087f2700 (LWP 50961)):
#0  0x00007f261205946e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056539d32d769 in _do_poll (p=<optimized out>, exp=-1613102705, wake=0) at src/ev_epoll.c:232
        timeout = 8
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 8
        status = <optimized out>
        count = <optimized out>
#2  0x000056539d4ac39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56539d7f2b6d "run_poll_loop",
          file = 0x56539d7f2b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = -1005936832
#3  0x000056539d4b056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007f2612334609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007f2612059133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 6 (Thread 0x7f260a7f6700 (LWP 50957)):
#0  0x000056539d5e41c1 in _aesni_ctr32_ghash_6x ()
No symbol table info available.
#1  0x000056539d5e459d in aesni_gcm_encrypt ()
No symbol table info available.
#2  0x000056539d5c92cb in aes_gcm_cipher ()
No symbol table info available.
#3  0x000056539d5d6832 in evp_EncryptDecryptUpdate ()
No symbol table info available.
#4  0x000056539d544b0a in tls13_enc ()
No symbol table info available.
#5  0x000056539d53fcf0 in do_ssl3_write ()
No symbol table info available.
#6  0x000056539d53ef50 in ssl3_write_bytes ()
No symbol table info available.
#7  0x000056539d55263f in SSL_write ()
No symbol table info available.
#8  0x000056539d339a13 in ssl_sock_from_buf (conn=0x5653bbcb4510, xprt_ctx=0x7f25e47532b0, buf=0x7f25e47894a8, count=16329, flags=0) at src/ssl_sock.c:6778
        written_data = <optimized out>
        _ = {
          func = 0x56539d7a41d3 "ssl_sock_from_buf",
          file = 0x56539d7a1f2a "src/ssl_sock.c",
          line = 6760,
          what = 3 '\003',
          arg8 = 0 '\000',
          arg32 = 0
        }
        _ = {
          func = 0x56539d7a41d3 "ssl_sock_from_buf",
          file = 0x56539d7a1f2a "src/ssl_sock.c",
          line = 6771,
          what = 3 '\003',
          arg8 = 0 '\000',
          arg32 = 0
        }
        ctx = 0x7f25e47532b0
        done = 0
        ret = <optimized out>
        try = 16329
#9  0x000056539d3b25a7 in h2_send (h2c=h2c@entry=0x7f25e47892d0) at src/mux_h2.c:3725
        ret = <optimized out>
        buf = 0x7f25e47894a8
        released = 0
        flags = <optimized out>
        conn = 0x7f25e418a608
        sent = 0
        done = 1
#10 0x000056539d3b16b6 in h2_io_cb (t=t@entry=0x7f25e40acbd0, ctx=ctx@entry=0x7f25e47892d0, state=<optimized out>) at src/mux_h2.c:3822
        ret = 0
        conn = 0x5653bbcb4510
        conn_in_list = 0
        tl = <optimized out>
        h2c = <optimized out>
#11 0x000056539d4e09a0 in run_tasks_from_lists (budgets=budgets@entry=0x7f260a7d33d0) at src/task.c:596
        _ = {
          func = 0x56539d7fcff7 "run_tasks_from_lists",
          file = 0x56539d7fcf62 "src/task.c",
          line = 658,
          what = 5 '\005',
          arg8 = 0 '\000',
          arg32 = 0
        }
        tl_queues = 0x7f260a7d33c8
        budget_mask = 15 '\017'
        profile_entry = 0x0
        done = 47
        queue = 2
        t = 0x7f25e40acbd0
        process = 0x56539d3b1580 <h2_io_cb>
        ctx = 0x7f25e47892d0
        state = 175971496
#12 0x000056539d4e134a in process_runnable_tasks () at src/task.c:861
        max = {0, 0, 21, 0}
        tt = 0x56539dbde880 <ha_thread_ctx+1536>
        heavy_queued = 1
        default_weights = {64, 48, 16, 1}
        max_processed = 69
        queue = 4
        budget = 0
        max_total = <optimized out>
        grq = <optimized out>
        lrq = <optimized out>
        gpicked = <optimized out>
        lpicked = <optimized out>
        t = <optimized out>
        tmp_list = <optimized out>
#13 0x000056539d4ac3d0 in run_poll_loop () at src/haproxy.c:2889
        _ = {
          func = 0x56539d7f2b6d "run_poll_loop",
          file = 0x56539d7f2b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = <optimized out>
#14 0x000056539d4b056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#15 0x00007f2612334609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#16 0x00007f2612059133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 5 (Thread 0x7f2607ff1700 (LWP 50962)):
#0  0x00007f261205946e in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x000056539d32d769 in _do_poll (p=<optimized out>, exp=-1613102705, wake=0) at src/ev_epoll.c:232
        timeout = 13
        updt_idx = <optimized out>
        fd = <optimized out>
        old_fd = <optimized out>
        wait_time = 13
        status = <optimized out>
        count = <optimized out>
#2  0x000056539d4ac39e in run_poll_loop () at src/haproxy.c:2960
        _ = {
          func = 0x56539d7f2b6d "run_poll_loop",
          file = 0x56539d7f2b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = -536174784
#3  0x000056539d4b056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#4  0x00007f2612334609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#5  0x00007f2612059133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 4 (Thread 0x7f26077f0700 (LWP 50963)):
#0  0x00007f2611fb0f88 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x00007f2611fc5f9a in ?? () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#2  0x000056539d5344fd in chunk_appendf (chk=0x7f26077d03e0, fmt=0x56539d7c5c09 "(0x%08x)") at src/chunk.c:139
        argp = {{
            gp_offset = 24,
            fp_offset = 48,
            overflow_arg_area = 0x7f26077ccfe0,
            reg_save_area = 0x7f26077ccf20
          }}
        ret = <optimized out>
#3  0x000056539d3e2a04 in h1_trace (level=<optimized out>, mask=4194304, src=0x56539d97b988 <trace_h1>, where=..., func=..., a1=<optimized out>, a2=<optimized out>, a3=<optimized out>, a4=<optimized out>) at src/mux_h1.c:377
        conn = <optimized out>
        h1c = 0x7f25e848df50
        h1s = <optimized out>
        htx = <optimized out>
        val = <optimized out>
#4  0x000056539d4fbc34 in __trace (level=TRACE_LEVEL_DEVELOPER, mask=4194304, src=0x56539d97b988 <trace_h1>, where=..., func=<optimized out>, a1=0x7f25e88115d0, a2=0x7f25dc201c10, a3=0x0, a4=0x7f26077cd1d8, cb=<optimized out>, msg=...) at src/trace.c:241
        ist_func = {
          ptr = 0x56539d7c7971 "h1_rcv_buf",
          len = 10
        }
        tnum = "10|"
        line = {{
            ptr = 0x56539d807de7 "[",
            len = 1
          }, {
            ptr = 0x7f26077cd05c "10|",
            len = 3
          }, {
            ptr = 0x56539d7c58ee "h1",
            len = 2
          }, {
            ptr = 0x56539d8052d3 "|",
            len = 1
          }, {
            ptr = 0x56539d802f75 "5",
            len = 1
          }, {
            ptr = 0x56539d8052d3 "|",
            len = 1
          }, {
            ptr = 0x56539d7c7a19 "mux_h1.c:3657",
            len = 13
          }, {
            ptr = 0x56539d821560 "] ",
            len = 2
          }, {
            ptr = 0x56539d7c7971 "h1_rcv_buf",
            len = 10
          }, {
            ptr = 0x56539d84320a "(): ",
            len = 4
          }, {
            ptr = 0x7f25dc019ae0 "leaving : [B,RUN] [MSG_DONE, MSG_DATA] - req=(.fl=0x00001511 .curr_len=0 .body_len=0)  res=(.fl=0x00001555 .curr_len=226593 .body_len=913347) - VAL=0 - h1c=0x7f25e848df50(0x80008000) conn=0x7f25e88115d0(0x00000300) h1s=0x7f25dc201c10(0x00004090) sd=0x7f25dc741150(0x02840001) sc=0x7f25dc4ac400(0x00000011) ibuf=0@(nil)+0/0 obuf=0@(nil)+0/0\n\t htx=0x7f25dc0c78a0(size=16336,data=2920,used=1,wrap=NO,flags=0x00000000,extra=226593,first=0,head=0,tail=0,tail_addr=2920,head_addr=0,end_addr=0)\n\t\t[0] type=HTX_BLK_DATA "...,
            len = 344
          }, {
            ptr = 0x1 <error: Cannot access memory at address 0x1>,
            len = 94917121053449
          }}
        li = <optimized out>
        fe = <optimized out>
        be = <optimized out>
        srv = <optimized out>
        sess = <optimized out>
        strm = 0x0
        conn = 0x7f25e88115d0
        check = 0x0
        qc = <optimized out>
        lockon_ptr = <optimized out>
        words = 10
#5  0x000056539d3e9362 in h1_rcv_buf (sc=<optimized out>, buf=0x7f25dc9713d8, count=<optimized out>, flags=17) at src/mux_h1.c:3657
        h1s = 0x7f25dc201c10
        h1c = 0x7f25e848df50
        h1m = <optimized out>
        ret = 0
#6  0x000056539d4b8d6c in sc_conn_recv (sc=sc@entry=0x7f25dc4ac400) at src/stconn.c:1446
        cur_flags = 17
        conn = 0x7f25e88115d0
        ic = 0x7f25dc9713d0
        cur_read = 2920
        read_poll = 3
        flags = <optimized out>
        ret = <optimized out>
        max = 13408
#7  0x000056539d4b7a54 in sc_conn_io_cb (t=t@entry=0x7f25dc125550, ctx=ctx@entry=0x7f25dc4ac400, state=<optimized out>) at src/stconn.c:1910
        sc = 0x7f25dc4ac400
        ret = 0
#8  0x000056539d4e09a0 in run_tasks_from_lists (budgets=budgets@entry=0x7f26077cd3d0) at src/task.c:596
        _ = {
          func = 0x56539d7fcff7 "run_tasks_from_lists",
          file = 0x56539d7fcf62 "src/task.c",
          line = 658,
          what = 5 '\005',
          arg8 = 0 '\000',
          arg32 = 0
        }
        tl_queues = 0x7f26077cd3c8
        budget_mask = 15 '\017'
        profile_entry = 0x0
        done = 0
        queue = 2
        t = 0x7f25dc125550
        process = 0x56539d4b79f0 <sc_conn_io_cb>
        ctx = 0x7f25dc4ac400
        state = 2147483640
#9  0x000056539d4e134a in process_runnable_tasks () at src/task.c:861
        max = {0, 0, 68, 0}
        tt = 0x56539dbdf180 <ha_thread_ctx+3840>
        heavy_queued = 1
        default_weights = {64, 48, 16, 1}
        max_processed = 69
        queue = 4
        budget = 0
        max_total = <optimized out>
        grq = <optimized out>
        lrq = <optimized out>
        gpicked = <optimized out>
        lpicked = <optimized out>
        t = <optimized out>
        tmp_list = <optimized out>
#10 0x000056539d4ac3d0 in run_poll_loop () at src/haproxy.c:2889
        _ = {
          func = 0x56539d7f2b6d "run_poll_loop",
          file = 0x56539d7f2b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = <optimized out>
#11 0x000056539d4b056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#12 0x00007f2612334609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#13 0x00007f2612059133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 3 (Thread 0x7f2610b16700 (LWP 50955)):
#0  0x00007f2611fd2568 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x00007f2611fd4299 in malloc () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#2  0x000056539d540f0e in ssl3_setup_read_buffer ()
No symbol table info available.
#3  0x000056539d540199 in ssl3_read_bytes ()
No symbol table info available.
#4  0x000056539d547c46 in ssl3_read_internal ()
No symbol table info available.
#5  0x000056539d55219f in SSL_read ()
No symbol table info available.
#6  0x000056539d3395ea in ssl_sock_to_buf (conn=0x5653bb5eddb0, xprt_ctx=0x7f25b8135120, buf=0x7f25b87c29e8, count=16329, flags=<optimized out>) at src/ssl_sock.c:6611
        ctx = 0x7f25b8135120
        done = 0
        try = <optimized out>
        ret = <optimized out>
#7  0x000056539d3b186f in h2_recv (h2c=0x7f25b87c29c0) at src/mux_h2.c:3626
        conn = 0x5653bb5eddb0
        buf = 0x7f25b87c29e8
        max = <optimized out>
        ret = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
#8  h2_io_cb (t=t@entry=0x7f25b8847190, ctx=ctx@entry=0x7f25b87c29c0, state=<optimized out>) at src/mux_h2.c:3824
        ret = 0
        conn = 0x5653bb5eddb0
        conn_in_list = 0
        tl = <optimized out>
        h2c = <optimized out>
#9  0x000056539d4e09a0 in run_tasks_from_lists (budgets=budgets@entry=0x7f2610af33d0) at src/task.c:596
        _ = {
          func = 0x56539d7fcff7 "run_tasks_from_lists",
          file = 0x56539d7fcf62 "src/task.c",
          line = 658,
          what = 5 '\005',
          arg8 = 0 '\000',
          arg32 = 0
        }
        tl_queues = 0x7f2610af33c8
        budget_mask = 15 '\017'
        profile_entry = 0x0
        done = 0
        queue = 2
        t = 0x7f25b8847190
        process = 0x56539d3b1580 <h2_io_cb>
        ctx = 0x7f25b87c29c0
        state = 4113
#10 0x000056539d4e134a in process_runnable_tasks () at src/task.c:861
        max = {0, 0, 68, 0}
        tt = 0x56539dbde580 <ha_thread_ctx+768>
        heavy_queued = 1
        default_weights = {64, 48, 16, 1}
        max_processed = 69
        queue = 4
        budget = 0
        max_total = <optimized out>
        grq = <optimized out>
        lrq = <optimized out>
        gpicked = <optimized out>
        lpicked = <optimized out>
        t = <optimized out>
        tmp_list = <optimized out>
#11 0x000056539d4ac3d0 in run_poll_loop () at src/haproxy.c:2889
        _ = {
          func = 0x56539d7f2b6d "run_poll_loop",
          file = 0x56539d7f2b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = <optimized out>
#12 0x000056539d4b056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#13 0x00007f2612334609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#14 0x00007f2612059133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 2 (Thread 0x7f2608ff3700 (LWP 50960)):
#0  0x00007f2611fb27b7 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x00007f2611fc5f9a in ?? () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#2  0x000056539d5344fd in chunk_appendf (chk=chk@entry=0x7f2608fd33e0, fmt=0x56539d7c5bd1 "x .curr_len=%lu .body_len=%lu)") at src/chunk.c:139
        argp = {{
            gp_offset = 16,
            fp_offset = 48,
            overflow_arg_area = 0x7f2608fcfcb0,
            reg_save_area = 0x7f2608fcfbf0
          }}
        ret = <optimized out>
#3  0x000056539d3e28bc in h1_trace (level=<optimized out>, mask=4096, src=0x56539d97b988 <trace_h1>, where=..., func=..., a1=<optimized out>, a2=0x7f25bc22db60, a3=0x7f25bc645480, a4=0x7f2608fd0010) at src/mux_h1.c:346
        conn = <optimized out>
        h1c = 0x7f25bc0be5c0
        h1s = <optimized out>
        htx = <optimized out>
        val = <optimized out>
#4  0x000056539d4fbc34 in __trace (level=TRACE_LEVEL_DEVELOPER, mask=4096, src=0x56539d97b988 <trace_h1>, where=..., func=<optimized out>, a1=0x7f25c4729380, a2=0x7f25bc22db60, a3=0x7f25bc645480, a4=0x7f2608fd0010, cb=<optimized out>, msg=...) at src/trace.c:241
        ist_func = {
          ptr = 0x56539d7c7ae6 "h1_process_mux",
          len = 14
        }
        tnum = "07|"
        line = {{
            ptr = 0x56539d807de7 "[",
            len = 1
          }, {
            ptr = 0x7f2608fcfd2c "07|",
            len = 3
          }, {
            ptr = 0x56539d7c58ee "h1",
            len = 2
          }, {
            ptr = 0x56539d8052d3 "|",
            len = 1
          }, {
            ptr = 0x56539d802f75 "5",
            len = 1
          }, {
            ptr = 0x56539d8052d3 "|",
            len = 1
          }, {
            ptr = 0x56539d7c80ca "mux_h1.c:2536",
            len = 13
          }, {
            ptr = 0x56539d821560 "] ",
            len = 2
          }, {
            ptr = 0x56539d7c7ae6 "h1_process_mux",
            len = 14
          }, {
            ptr = 0x56539d84320a "(): ",
            len = 4
          }, {
            ptr = 0x7f25bc019ae0 "leaving : [F,RUN] [MSG_DONE, MSG_DATA] - req=(.fl=0x00001550 .curr_len=0 .body_len=0)  res=(.fl=0x.body_len=0)  res=(.fl=0x00001515 .curr_len=252479 .body_len=619493) - VAL=2920 - h1c=0x7f25bc0be5c0(0x00028000) conn=0x7f25c4729380(0x80000300) h1s=0x7f25bc22db60(0x00104090) sd=0x7f25bc138410(0x02805001) sc=0x7f25bc6883b0(0x00000000) ibuf=0@(nil)+0/0 obuf=2920@0x7f25bc363d90+48/16384",
            len = 549
          }, {
            ptr = 0x0,
            len = 0
          }}
        li = <optimized out>
        fe = <optimized out>
        be = <optimized out>
        srv = <optimized out>
        sess = <optimized out>
        strm = 0x0
        conn = 0x7f25c4729380
        check = 0x0
        qc = <optimized out>
        lockon_ptr = <optimized out>
        words = 10
#5  0x000056539d3ec570 in h1_process_mux (h1c=0x7f25bc0be5c0, buf=0x7f25bc6ae398, count=<optimized out>) at src/mux_h1.c:2536
        tmp = {
          size = 94917124455193,
          area = 0x20 <error: Cannot access memory at address 0x20>,
          data = 1,
          head = 94917121753440
        }
        h1s = 0x7f25bc22db60
        chn_htx = 0x7f25bc645480
        total = <optimized out>
        last_data = <optimized out>
        h1m = <optimized out>
        blk = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        old_area = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __l = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __l = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __l = <optimized out>
        __x = <optimized out>
        n = <optimized out>
        v = <optimized out>
        type = <optimized out>
        sz = <optimized out>
        vlen = <optimized out>
        sl = <optimized out>
        chklen = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __l = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        srv = <optimized out>
        __x = <optimized out>
        __l = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __l = <optimized out>
        __x = <optimized out>
        key = <optimized out>
        __x = <optimized out>
        __l = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __l = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __l = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __l = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __l = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
        __x = <optimized out>
#6  h1_snd_buf (sc=sc@entry=0x7f25bc6883b0, buf=buf@entry=0x7f25bc6ae398, count=2920, flags=flags@entry=1) at src/mux_h1.c:3701
        ret = 0
        h1s = 0x7f25bc22db60
        total = 0
        h1c = 0x7f25bc0be5c0
#7  0x000056539d4b9436 in sc_conn_send (sc=sc@entry=0x7f25bc6883b0) at src/stconn.c:1742
        send_flag = 1
        conn = 0x7f25c4729380
        s = <optimized out>
        oc = 0x7f25bc6ae390
        did_send = 0
        ret = <optimized out>
#8  0x000056539d4b60c7 in sc_app_chk_snd_conn (sc=0x7f25bc6883b0) at src/stconn.c:791
        _ = {
          func = 0x56539d7f63c7 "sc_app_chk_snd_conn",
          file = 0x56539d7f60ac "src/stconn.c",
          line = 859,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        oc = 0x7f25bc6ae390
#9  0x000056539d4b9ca8 in sc_chk_snd (sc=0x7f25bc019b42, sc@entry=0x7f25bc6ae330) at include/haproxy/sc_strm.h:340
No locals.
#10 sc_notify (sc=sc@entry=0x7f25bc393eb0) at src/stconn.c:1166
        last_len = 2920
        new_len = <optimized out>
        _ = {
          func = 0x56539d7f6698 "sc_notify",
          file = 0x56539d7f60ac "src/stconn.c",
          line = 1211,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        ic = 0x7f25bc6ae390
        oc = 0x7f25bc6ae330
        sco = 0x7f25bc019b42
        task = 0x7f25bc33bef0
#11 0x000056539d4b6896 in sc_conn_process (sc=sc@entry=0x7f25bc393eb0) at src/stconn.c:1889
        _ = {
          func = 0x56539d7f6688 "sc_conn_process",
          file = 0x56539d7f60ac "src/stconn.c",
          line = 1848,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        conn = 0x7f25bc68ecf0
        ic = 0x7f25bc6ae390
        oc = 0x7f25bc6ae330
#12 0x000056539d4b7a64 in sc_conn_io_cb (t=t@entry=0x7f25bc6aec00, ctx=ctx@entry=0x7f25bc393eb0, state=<optimized out>) at src/stconn.c:1912
        sc = 0x7f25bc393eb0
        ret = 1
#13 0x000056539d4e09a0 in run_tasks_from_lists (budgets=budgets@entry=0x7f2608fd03d0) at src/task.c:596
        _ = {
          func = 0x56539d7fcff7 "run_tasks_from_lists",
          file = 0x56539d7fcf62 "src/task.c",
          line = 658,
          what = 5 '\005',
          arg8 = 0 '\000',
          arg32 = 0
        }
        tl_queues = 0x7f2608fd03c8
        budget_mask = 15 '\017'
        profile_entry = 0x0
        done = 0
        queue = 2
        t = 0x7f25bc6aec00
        process = 0x56539d4b79f0 <sc_conn_io_cb>
        ctx = 0x7f25bc393eb0
        state = 2493
#14 0x000056539d4e134a in process_runnable_tasks () at src/task.c:861
        max = {0, 0, 68, 0}
        tt = 0x56539dbded00 <ha_thread_ctx+2688>
        heavy_queued = 1
        default_weights = {64, 48, 16, 1}
        max_processed = 69
        queue = 4
        budget = 0
        max_total = <optimized out>
        grq = <optimized out>
        lrq = <optimized out>
        gpicked = <optimized out>
        lpicked = <optimized out>
        t = <optimized out>
        tmp_list = <optimized out>
#15 0x000056539d4ac3d0 in run_poll_loop () at src/haproxy.c:2889
        _ = {
          func = 0x56539d7f2b6d "run_poll_loop",
          file = 0x56539d7f2b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = <optimized out>
#16 0x000056539d4b056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#17 0x00007f2612334609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#18 0x00007f2612059133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

Thread 1 (Thread 0x7f26097f4700 (LWP 50959)):
#0  ha_crash_now () at include/haproxy/bug.h:52
No locals.
#1  h1s_destroy (h1s=0x7f25e04a5860) at src/mux_h1.c:870
        h1c = 0x7f25e47c8930
#2  0x000056539d3e23e9 in h1_release (h1c=h1c@entry=0x7f25e47c8930) at src/mux_h1.c:1045
        _ = {
          func = 0x56539d7c7673 "h1_release",
          file = 0x56539d7c5efe "src/mux_h1.c",
          line = 1038,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        conn = <optimized out>
#3  0x000056539d3e18d0 in h1_timeout_task (t=t@entry=0x7f260c5be170, context=context@entry=0x7f25e47c8930, state=<optimized out>) at src/mux_h1.c:3295
        h1c = 0x7f25e47c8930
        expired = <optimized out>
#4  0x000056539d4e0a6c in run_tasks_from_lists (budgets=budgets@entry=0x7f26097d13d0) at src/task.c:634
        _ = {
          func = 0x56539d7fcff7 "run_tasks_from_lists",
          file = 0x56539d7fcf62 "src/task.c",
          line = 658,
          what = 5 '\005',
          arg8 = 0 '\000',
          arg32 = 0
        }
        tl_queues = 0x7f26097d13c8
        budget_mask = 15 '\017'
        profile_entry = 0x0
        done = 2
        queue = 1
        t = 0x7f260c5be170
        process = 0x56539d3e1500 <h1_timeout_task>
        ctx = 0x7f25e47c8930
        state = 83
#5  0x000056539d4e134a in process_runnable_tasks () at src/task.c:861
        max = {39, 28, 0, 0}
        tt = 0x56539dbdeb80 <ha_thread_ctx+2304>
        heavy_queued = 1
        default_weights = {64, 48, 16, 1}
        max_processed = 70
        queue = 4
        budget = 30
        max_total = <optimized out>
        grq = <optimized out>
        lrq = <optimized out>
        gpicked = <optimized out>
        lpicked = <optimized out>
        t = <optimized out>
        tmp_list = <optimized out>
#6  0x000056539d4ac3d0 in run_poll_loop () at src/haproxy.c:2889
        _ = {
          func = 0x56539d7f2b6d "run_poll_loop",
          file = 0x56539d7f2b7b "src/haproxy.c",
          line = 2920,
          what = 1 '\001',
          arg8 = 0 '\000',
          arg32 = 0
        }
        wake = <optimized out>
        next = <optimized out>
#7  0x000056539d4b056f in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3078
        init_left = 0
        init_mutex = pthread_mutex_t = {
          Type = Normal,
          Status = Not acquired,
          Robust = No,
          Shared = No,
          Protocol = None
        }
        init_cond = pthread_cond_t = {
          Threads known to still execute a wait function = 0,
          Clock ID = CLOCK_REALTIME,
          Shared = No
        }
        warn_fail = 0
        warn_fail = 0
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
#8  0x00007f2612334609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#9  0x00007f2612059133 in clone () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.

And haproxy-traces-h1-1943.bin.gz

haproxy-mirror pushed a commit that referenced this issue Nov 22, 2022
…ached

When the H1 task timed out, we must be careful to not release the H1
conneciton if there is still a H1 stream with a stream-connector
attached. In this case, we must wait. There are some tests to prevent it
happens. But the last one only tests the UPGRADING state while there is also
the CLOSING state with a SC attached. But, in the end, it is safer to test
if there is a H1 stream with a SC attached.

This patch should partially fix the issue #1943. However, it only prevent
the segfault. There is another bug under the hood. BTW, this one is
2.7-specific. Not backport is needed.
haproxy-mirror pushed a commit that referenced this issue Nov 22, 2022
The recent refactoring about errors handling in the H1 multiplexer
introduced a bug on abort when the client wait for the server response. The
bug only exists if abortonclose option is not enabled. Indeed, in this case,
when the end of the message is reached, the mux stops to receive data
because these data are part of the next request. However, error on the
sending path are no longer fatal. An error on the reading path must be
caught to do so. So, in case of a client abort, the error is not reported to
the upper layer and the H1 connection cannot be closed if some pending data
are blocked (remember, an error on sending path was detected, blocking
outgoing data).

To be sure to have a chance to detect the abort in the case, when an error
is detected on the sending path, we force the subscription for reads.

This patch, with the previous one, should fix the issue #1943. It is
2.7-specific, no backport is needed.
@capflam
Copy link
Member

capflam commented Nov 22, 2022

I pushed 2 patches that should fix this issue.

@capflam capflam added status: fixed This issue is a now-fixed bug. and removed dev This issue affects the HAProxy development branch. status: reviewed This issue was reviewed. A fix is required. labels Nov 22, 2022
@Tristan971
Copy link
Member Author

I'll build and deploy that 👍

Tristan971 added a commit to mangadex-pub/haproxy that referenced this issue Nov 22, 2022
@Tristan971
Copy link
Member Author

Fwiw no crashes since 👍

@capflam
Copy link
Member

capflam commented Nov 23, 2022

Thanks !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status: fixed This issue is a now-fixed bug. type: bug This issue describes a bug.
Projects
None yet
Development

No branches or pull requests

2 participants