haproxy / haproxy

HAProxy Load Balancer's development branch (mirror of git.haproxy.org)
https://git.haproxy.org/
Other
4.89k stars 790 forks source link

2.4.12 peer sync segfault #1525

Closed idl0r closed 2 years ago

idl0r commented 2 years ago

Detailed Description of the Problem

Details are not clear yet. Looks like it is peers related though

Expected Behavior

Shouldn't crash

Steps to Reproduce the Behavior

As I said, not clear yet

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?

Huge config with a lot of sensitive information. So I cannot share it, unfortunately.
We have around 34 peers at the moment and we share 2 stick-tables

Output of haproxy -vv

HAProxy version 2.4.12-4b7772e 2022/01/11 - https://haproxy.org/
Status: long-term supported branch - will stop receiving fixes around Q2 2026.
Known bugs: http://www.haproxy.org/bugs/bugs-2.4.12.html
Running on: Linux 5.10.0-10-amd64 #1 SMP Debian 5.10.84-1 (2021-12-08) x86_64
Build options :
  TARGET  = linux-glibc
  CPU     = generic
  CC      = cc
  CFLAGS  = -O2 -g -Wall -Wextra -Wdeclaration-after-statement -fwrapv -Wno-unused-label -Wno-sign-compare -Wno-unused-parameter -Wno-clobbered -Wno-missing-field-initializers -Wno-cast-function-type -Wtype-limits -Wshift-negative-value -Wshift-overflow=2 -Wduplicated-cond -Wnull-dereference
  OPTIONS = USE_PCRE= USE_PCRE_JIT= USE_PCRE2=1 USE_PCRE2_JIT= USE_LIBCRYPT=1 USE_OPENSSL=1 USE_LUA=1 USE_ZLIB= USE_SLZ=1 USE_NS= USE_SYSTEMD=1 USE_PROMEX=1
  DEBUG   = 

Feature list : +EPOLL -KQUEUE +NETFILTER -PCRE -PCRE_JIT +PCRE2 -PCRE2_JIT +POLL -PRIVATE_CACHE +THREAD -PTHREAD_PSHARED +BACKTRACE -STATIC_PCRE -STATIC_PCRE2 +TPROXY +LINUX_TPROXY +LINUX_SPLICE +LIBCRYPT +CRYPT_H +GETADDRINFO +OPENSSL +LUA +FUTEX +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

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

Built with multi-threading support (MAX_THREADS=64, default=8).
Built with OpenSSL version : OpenSSL 1.1.1d  10 Sep 2019
Running on OpenSSL version : OpenSSL 1.1.1d  10 Sep 2019
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.3
Built with the Prometheus exporter as a service
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.32 2018-09-10
PCRE2 library supports JIT : no (USE_PCRE2_JIT not set)
Encrypted password support via crypt(3): yes
Built with gcc compiler version 8.3.0

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)
              h2 : mode=HTTP       side=FE|BE     mux=H2       flags=HTX|CLEAN_ABRT|HOL_RISK|NO_UPG
            fcgi : mode=HTTP       side=BE        mux=FCGI     flags=HTX|HOL_RISK|NO_UPG
       <default> : mode=HTTP       side=FE|BE     mux=H1       flags=HTX
              h1 : mode=HTTP       side=FE|BE     mux=H1       flags=HTX|NO_UPG
       <default> : mode=TCP        side=FE|BE     mux=PASS     flags=
            none : mode=TCP        side=FE|BE     mux=PASS     flags=NO_UPG

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

Last Outputs and Backtraces

gdb -core /tmp/core.995.780.1642687283 /usr/sbin/haproxy
GNU gdb (Debian 8.2.1-2+b3) 8.2.1
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/sbin/haproxy...done.
[New LWP 780]
[New LWP 781]
[New LWP 783]
[New LWP 786]
[New LWP 782]
[New LWP 787]
[New LWP 784]
[New LWP 785]
[Thread debugging using libthread_db enabled]
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 SIGABRT, Aborted.
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50  ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
[Current thread is 1 (Thread 0x7f1f0d95cfc0 (LWP 780))]
(gdb) t a a bt full

Thread 8 (Thread 0x7f1eeea33700 (LWP 785)):
#0  si_oc (si=0x7f1ed80cb7d8, si@entry=0x0) at include/haproxy/stream_interface.h:64
No locals.
#1  si_sync_send (si=si@entry=0x7f1ed80cb7d8) at src/stream_interface.c:915
        oc = <optimized out>
        cs = <optimized out>
#2  0x0000564e0cae7ccf in process_stream (t=<optimized out>, context=0x7f1ed80cb4d0, state=<optimized out>) at src/stream.c:2237
        srv = <optimized out>
        s = 0x7f1ed80cb4d0
        sess = <optimized out>
        rqf_last = <optimized out>
        rpf_last = 2147483648
        rq_prod_last = 8
        rq_cons_last = 0
        rp_cons_last = 8
        rp_prod_last = 0
        req_ana_back = <optimized out>
        req = 0x7f1ed80cb4e0
        res = 0x7f1ed80cb540
        si_f = 0x7f1ed80cb780
        si_b = 0x7f1ed80cb7d8
        rate = <optimized out>
#3  0x0000564e0cbce2fb in run_tasks_from_lists (budgets=budgets@entry=0x7f1eeea10590) at src/task.c:567
        process = <optimized out>
        tl_queues = 0x564e0cd82040 <task_per_thread+1344>
        t = 0x7f1ed80d1450
        budget_mask = 15 '\017'
        profile_entry = 0x0
        done = 2
        queue = <optimized out>
        state = <optimized out>
        ctx = <optimized out>
#4  0x0000564e0cbcec70 in process_runnable_tasks () at src/task.c:808
        tt = 0x564e0cd82000 <task_per_thread+1280>
        lrq = <optimized out>
        grq = <optimized out>
        t = <optimized out>
        max = {8, 5, 0, 0}
        max_total = <optimized out>
        tmp_list = <optimized out>
        queue = <optimized out>
        max_processed = <optimized out>
        lpicked = <optimized out>
        gpicked = <optimized out>
        heavy_queued = 1
        budget = <optimized out>
#5  0x0000564e0cb97392 in run_poll_loop () at src/haproxy.c:2615
        next = <optimized out>
        wake = <optimized out>
#6  0x0000564e0cb977c5 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:2786
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
        init_left = 0
        init_mutex = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 39 times>, __align = 0}
        init_cond = {__data = {{__wseq = 33, __wseq32 = {__low = 33, __high = 0}}, {__g1_start = 27, __g1_start32 = {__low = 27, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 12, __wrefs = 0, __g_signals = {0, 0}}, 
          __size = "!\000\000\000\000\000\000\000\033", '\000' <repeats 23 times>, "\f", '\000' <repeats 14 times>, __align = 33}
#7  0x00007f1f0e318fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
        ret = <optimized out>
        pd = <optimized out>
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139770829420288, 5546925355578275477, 140733967092206, 140733967092207, 139770829420288, 94893240159808, -5564339748453370219, -5565112838599756139}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, 
              cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#8  0x00007f1f0dbe44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.

Thread 7 (Thread 0x7f1eef234700 (LWP 784)):
#0  si_oc (si=0x7f1edc1b7b48, si@entry=0x0) at include/haproxy/stream_interface.h:64
No locals.
#1  si_sync_send (si=si@entry=0x7f1edc1b7b48) at src/stream_interface.c:915
        oc = <optimized out>
        cs = <optimized out>
#2  0x0000564e0cae7ccf in process_stream (t=<optimized out>, context=0x7f1edc1b7840, state=<optimized out>) at src/stream.c:2237
        srv = <optimized out>
        s = 0x7f1edc1b7840
        sess = <optimized out>
        rqf_last = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--c
        rpf_last = 2147483648
        rq_prod_last = 8
        rq_cons_last = 0
        rp_cons_last = 8
        rp_prod_last = 0
        req_ana_back = <optimized out>
        req = 0x7f1edc1b7850
        res = 0x7f1edc1b78b0
        si_f = 0x7f1edc1b7af0
        si_b = 0x7f1edc1b7b48
        rate = <optimized out>
#3  0x0000564e0cbce2fb in run_tasks_from_lists (budgets=budgets@entry=0x7f1eef211590) at src/task.c:567
        process = <optimized out>
        tl_queues = 0x564e0cd81f40 <task_per_thread+1088>
        t = 0x7f1edc1d1910
        budget_mask = 14 '\016'
        profile_entry = 0x0
        done = 21
        queue = <optimized out>
        state = <optimized out>
        ctx = <optimized out>
#4  0x0000564e0cbcec70 in process_runnable_tasks () at src/task.c:808
        tt = 0x564e0cd81f00 <task_per_thread+1024>
        lrq = <optimized out>
        grq = <optimized out>
        t = <optimized out>
        max = {0, 13, 0, 0}
        max_total = <optimized out>
        tmp_list = <optimized out>
        queue = <optimized out>
        max_processed = <optimized out>
        lpicked = <optimized out>
        gpicked = <optimized out>
        heavy_queued = 1
        budget = <optimized out>
#5  0x0000564e0cb97392 in run_poll_loop () at src/haproxy.c:2615
        next = <optimized out>
        wake = <optimized out>
#6  0x0000564e0cb977c5 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:2786
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
        init_left = 0
        init_mutex = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 39 times>, __align = 0}
        init_cond = {__data = {{__wseq = 33, __wseq32 = {__low = 33, __high = 0}}, {__g1_start = 27, __g1_start32 = {__low = 27, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 12, __wrefs = 0, __g_signals = {0, 0}}, __size = "!\000\000\000\000\000\000\000\033", '\000' <repeats 23 times>, "\f", '\000' <repeats 14 times>, __align = 33}
#7  0x00007f1f0e318fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
        ret = <optimized out>
        pd = <optimized out>
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139770837812992, 5546925355578275477, 140733967092206, 140733967092207, 139770837812992, 94893240159808, -5564340847428127083, -5565112838599756139}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#8  0x00007f1f0dbe44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.

Thread 6 (Thread 0x7f1eeda31700 (LWP 787)):
#0  0x0000564e0cb9df1a in cs_shutr (mode=<optimized out>, cs=<optimized out>) at include/haproxy/connection.h:304
No locals.
#1  cs_close (cs=<optimized out>) at include/haproxy/connection.h:324
No locals.
#2  cs_close (cs=<optimized out>) at include/haproxy/connection.h:321
No locals.
#3  stream_int_shutw_conn (si=0x7f1ecc06f3d8) at src/stream_interface.c:1082
        cs = <optimized out>
        ic = 0x7f1ecc06f140
        oc = <optimized out>
#4  0x0000564e0cae8f3c in si_shutw (si=0x7f1ecc06f3d8) at include/haproxy/stream_interface.h:437
No locals.
#5  process_stream (t=<optimized out>, context=0x7f1ecc06f0d0, state=<optimized out>) at src/stream.c:2258
        srv = <optimized out>
        s = 0x7f1ecc06f0d0
        sess = <optimized out>
        rqf_last = <optimized out>
        rpf_last = 2147526656
        rq_prod_last = 10
        rq_cons_last = 8
        rp_cons_last = 10
        rp_prod_last = 8
        req_ana_back = <optimized out>
        req = 0x7f1ecc06f0e0
        res = 0x7f1ecc06f140
        si_f = 0x7f1ecc06f380
        si_b = 0x7f1ecc06f3d8
        rate = <optimized out>
#6  0x0000564e0cbce2fb in run_tasks_from_lists (budgets=budgets@entry=0x7f1eeda0e590) at src/task.c:567
        process = <optimized out>
        tl_queues = 0x564e0cd82240 <task_per_thread+1856>
        t = 0x7f1ecc08ca70
        budget_mask = 15 '\017'
        profile_entry = 0x0
        done = 3
        queue = <optimized out>
        state = <optimized out>
        ctx = <optimized out>
#7  0x0000564e0cbcec70 in process_runnable_tasks () at src/task.c:808
        tt = 0x564e0cd82200 <task_per_thread+1792>
        lrq = <optimized out>
        grq = <optimized out>
        t = <optimized out>
        max = {51, 39, 0, 0}
        max_total = <optimized out>
        tmp_list = <optimized out>
        queue = <optimized out>
        max_processed = <optimized out>
        lpicked = <optimized out>
        gpicked = <optimized out>
        heavy_queued = 1
        budget = <optimized out>
#8  0x0000564e0cb97392 in run_poll_loop () at src/haproxy.c:2615
        next = <optimized out>
        wake = <optimized out>
#9  0x0000564e0cb977c5 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:2786
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
        init_left = 0
        init_mutex = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 39 times>, __align = 0}
        init_cond = {__data = {{__wseq = 33, __wseq32 = {__low = 33, __high = 0}}, {__g1_start = 27, __g1_start32 = {__low = 27, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 12, __wrefs = 0, __g_signals = {0, 0}}, __size = "!\000\000\000\000\000\000\000\033", '\000' <repeats 23 times>, "\f", '\000' <repeats 14 times>, __align = 33}
#10 0x00007f1f0e318fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
        ret = <optimized out>
        pd = <optimized out>
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139770812634880, 5546925355578275477, 140733967092206, 140733967092207, 139770812634880, 94893240159808, -5564346353039329643, -5565112838599756139}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#11 0x00007f1f0dbe44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.

Thread 5 (Thread 0x7f1ef117c700 (LWP 782)):
#0  si_oc (si=0x7f1ee80be268, si@entry=0x0) at include/haproxy/stream_interface.h:64
No locals.
#1  si_sync_send (si=si@entry=0x7f1ee80be268) at src/stream_interface.c:915
        oc = <optimized out>
        cs = <optimized out>
#2  0x0000564e0cae7ccf in process_stream (t=<optimized out>, context=0x7f1ee80bdf60, state=<optimized out>) at src/stream.c:2237
        srv = <optimized out>
        s = 0x7f1ee80bdf60
        sess = <optimized out>
        rqf_last = <optimized out>
        rpf_last = 2147483648
        rq_prod_last = 8
        rq_cons_last = 0
        rp_cons_last = 8
        rp_prod_last = 0
        req_ana_back = <optimized out>
        req = 0x7f1ee80bdf70
        res = 0x7f1ee80bdfd0
        si_f = 0x7f1ee80be210
        si_b = 0x7f1ee80be268
        rate = <optimized out>
#3  0x0000564e0cbce2fb in run_tasks_from_lists (budgets=budgets@entry=0x7f1ef1159590) at src/task.c:567
        process = <optimized out>
        tl_queues = 0x564e0cd81d40 <task_per_thread+576>
        t = 0x7f1ee80788e0
        budget_mask = 15 '\017'
        profile_entry = 0x0
        done = 0
        queue = <optimized out>
        state = <optimized out>
        ctx = <optimized out>
#4  0x0000564e0cbcec70 in process_runnable_tasks () at src/task.c:808
        tt = 0x564e0cd81d00 <task_per_thread+512>
        lrq = <optimized out>
        grq = <optimized out>
        t = <optimized out>
        max = {0, 1, 0, 0}
        max_total = <optimized out>
        tmp_list = <optimized out>
        queue = <optimized out>
        max_processed = <optimized out>
        lpicked = <optimized out>
        gpicked = <optimized out>
        heavy_queued = 1
        budget = <optimized out>
#5  0x0000564e0cb97392 in run_poll_loop () at src/haproxy.c:2615
        next = <optimized out>
        wake = <optimized out>
#6  0x0000564e0cb977c5 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:2786
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
        init_left = 0
        init_mutex = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 39 times>, __align = 0}
        init_cond = {__data = {{__wseq = 33, __wseq32 = {__low = 33, __high = 0}}, {__g1_start = 27, __g1_start32 = {__low = 27, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 12, __wrefs = 0, __g_signals = {0, 0}}, __size = "!\000\000\000\000\000\000\000\033", '\000' <repeats 23 times>, "\f", '\000' <repeats 14 times>, __align = 33}
#7  0x00007f1f0e318fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
        ret = <optimized out>
        pd = <optimized out>
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139770870613760, 5546925355578275477, 140733967092206, 140733967092207, 139770870613760, 94893240159808, -5564407260507425131, -5565112838599756139}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#8  0x00007f1f0dbe44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.

Thread 4 (Thread 0x7f1eee232700 (LWP 786)):
#0  si_oc (si=0x7f1ed409a0d8, si@entry=0x0) at include/haproxy/stream_interface.h:64
No locals.
#1  si_sync_send (si=si@entry=0x7f1ed409a0d8) at src/stream_interface.c:915
        oc = <optimized out>
        cs = <optimized out>
#2  0x0000564e0cae7ccf in process_stream (t=<optimized out>, context=0x7f1ed4099dd0, state=<optimized out>) at src/stream.c:2237
        srv = <optimized out>
        s = 0x7f1ed4099dd0
        sess = <optimized out>
        rqf_last = <optimized out>
        rpf_last = 2147483648
        rq_prod_last = 8
        rq_cons_last = 0
        rp_cons_last = 8
        rp_prod_last = 0
        req_ana_back = <optimized out>
        req = 0x7f1ed4099de0
        res = 0x7f1ed4099e40
        si_f = 0x7f1ed409a080
        si_b = 0x7f1ed409a0d8
        rate = <optimized out>
#3  0x0000564e0cbce2fb in run_tasks_from_lists (budgets=budgets@entry=0x7f1eee20f590) at src/task.c:567
        process = <optimized out>
        tl_queues = 0x564e0cd82140 <task_per_thread+1600>
        t = 0x7f1ed409e5e0
        budget_mask = 15 '\017'
        profile_entry = 0x0
        done = 1
        queue = <optimized out>
        state = <optimized out>
        ctx = <optimized out>
#4  0x0000564e0cbcec70 in process_runnable_tasks () at src/task.c:808
        tt = 0x564e0cd82100 <task_per_thread+1536>
        lrq = <optimized out>
        grq = <optimized out>
        t = <optimized out>
        max = {0, 52, 18, 0}
        max_total = <optimized out>
        tmp_list = <optimized out>
        queue = <optimized out>
        max_processed = <optimized out>
        lpicked = <optimized out>
        gpicked = <optimized out>
        heavy_queued = 1
        budget = <optimized out>
#5  0x0000564e0cb97392 in run_poll_loop () at src/haproxy.c:2615
        next = <optimized out>
        wake = <optimized out>
#6  0x0000564e0cb977c5 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:2786
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
        init_left = 0
        init_mutex = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 39 times>, __align = 0}
        init_cond = {__data = {{__wseq = 33, __wseq32 = {__low = 33, __high = 0}}, {__g1_start = 27, __g1_start32 = {__low = 27, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 12, __wrefs = 0, __g_signals = {0, 0}}, __size = "!\000\000\000\000\000\000\000\033", '\000' <repeats 23 times>, "\f", '\000' <repeats 14 times>, __align = 33}
#7  0x00007f1f0e318fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
        ret = <optimized out>
        pd = <optimized out>
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139770821027584, 5546925355578275477, 140733967092206, 140733967092207, 139770821027584, 94893240159808, -5564338655921064299, -5565112838599756139}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#8  0x00007f1f0dbe44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.

Thread 3 (Thread 0x7f1ef097b700 (LWP 783)):
#0  h1_init (conn=0x7f1ee0083330, proxy=0x564e1798fc70, sess=0x7f1ee00f6dc0, input=0x7f1ef09582f0) at src/mux_h1.c:787
        h1c = <optimized out>
        t = 0x0
        conn_ctx = <optimized out>
        __FUNCTION__ = "h1_init"
#1  0x0000564e0caefde6 in conn_install_mux (sess=<optimized out>, prx=0x564e1798fc70, ctx=0x7f1ee0113720, mux=<optimized out>, conn=0x7f1ee0083330) at include/haproxy/connection.h:774
        ret = <optimized out>
        ret = <optimized out>
#2  tcpcheck_eval_connect (check=check@entry=0x564e17994be8, rule=rule@entry=0x564e134273d0) at src/tcpcheck.c:1253
        mux_ops = <optimized out>
        ret = TCPCHK_EVAL_CONTINUE
        connect = 0x564e134273f0
        proxy = <optimized out>
        s = <optimized out>
        t = <optimized out>
        cs = 0x7f1ee0113720
        conn = 0x7f1ee0083330
        proto = <optimized out>
        xprt = <optimized out>
        next = 0x564e179923a0
        status = <optimized out>
        port = <optimized out>
        __FUNCTION__ = "tcpcheck_eval_connect"
#3  0x0000564e0caf36ba in tcpcheck_main (check=check@entry=0x564e17994be8) at src/tcpcheck.c:2207
        rule = 0x564e134273d0
        cs = <optimized out>
        conn = <optimized out>
        must_read = <optimized out>
        last_read = <optimized out>
        retcode = 0
        eval_ret = <optimized out>
        __FUNCTION__ = "tcpcheck_main"
#4  0x0000564e0cb866c4 in process_chk_conn (t=0x564e148d97c0, context=0x564e17994be8, state=<optimized out>) at src/check.c:1131
        check = 0x564e17994be8
        proxy = 0x564e1798fc70
        cs = <optimized out>
        conn = <optimized out>
        rv = <optimized out>
        expired = <optimized out>
        __FUNCTION__ = "process_chk_conn"
#5  0x0000564e0cbce2eb in run_tasks_from_lists (budgets=budgets@entry=0x7f1ef0958590) at src/task.c:569
        process = <optimized out>
        tl_queues = 0x564e0cd81e40 <task_per_thread+832>
        t = 0x564e148d97c0
        budget_mask = 15 '\017'
        profile_entry = 0x0
        done = 9
        queue = <optimized out>
        state = <optimized out>
        ctx = <optimized out>
#6  0x0000564e0cbcec70 in process_runnable_tasks () at src/task.c:808
        tt = 0x564e0cd81e00 <task_per_thread+768>
        lrq = <optimized out>
        grq = <optimized out>
        t = <optimized out>
        max = {0, 60, 24, 0}
        max_total = <optimized out>
        tmp_list = <optimized out>
        queue = <optimized out>
        max_processed = <optimized out>
        lpicked = <optimized out>
        gpicked = <optimized out>
        heavy_queued = 1
        budget = <optimized out>
#7  0x0000564e0cb97392 in run_poll_loop () at src/haproxy.c:2615
        next = <optimized out>
        wake = <optimized out>
#8  0x0000564e0cb977c5 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:2786
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
        init_left = 0
        init_mutex = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 39 times>, __align = 0}
        init_cond = {__data = {{__wseq = 33, __wseq32 = {__low = 33, __high = 0}}, {__g1_start = 27, __g1_start32 = {__low = 27, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 12, __wrefs = 0, __g_signals = {0, 0}}, __size = "!\000\000\000\000\000\000\000\033", '\000' <repeats 23 times>, "\f", '\000' <repeats 14 times>, __align = 33}
#9  0x00007f1f0e318fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
        ret = <optimized out>
        pd = <optimized out>
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139770862221056, 5546925355578275477, 140733967092206, 140733967092207, 139770862221056, 94893240159808, -5564406161532668267, -5565112838599756139}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#10 0x00007f1f0dbe44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.

Thread 2 (Thread 0x7f1f0d939700 (LWP 781)):
#0  0x0000564e0cb5b43f in peer_session_release (appctx=0x564e19ef6570) at src/peers.c:989
        peer = 0x564e0de16f30
#1  0x0000564e0cb9d1ed in si_applet_release (si=0x7f1f0809a1b0, si=0x7f1f0809a1b0) at include/haproxy/stream_interface.h:236
        appctx = <optimized out>
        appctx = <optimized out>
#2  stream_int_shutw_applet (si=0x7f1f0809a1b0) at src/stream_interface.c:1697
        ic = 0x7f1f08099f10
        oc = <optimized out>
#3  0x0000564e0cae8f6b in si_shutw (si=0x7f1f0809a1b0) at include/haproxy/stream_interface.h:437
No locals.
#4  process_stream (t=<optimized out>, context=0x7f1f08099f00, state=<optimized out>) at src/stream.c:2383
        srv = <optimized out>
        s = 0x7f1f08099f00
        sess = <optimized out>
        rqf_last = <optimized out>
        rpf_last = <optimized out>
        rq_prod_last = 8
        rq_cons_last = 10
        rp_cons_last = 8
        rp_prod_last = 10
        req_ana_back = <optimized out>
        req = 0x7f1f08099f10
        res = 0x7f1f08099f70
        si_f = 0x7f1f0809a1b0
        si_b = 0x7f1f0809a208
        rate = <optimized out>
#5  0x0000564e0cbce2fb in run_tasks_from_lists (budgets=budgets@entry=0x7f1f0d916590) at src/task.c:567
        process = <optimized out>
        tl_queues = 0x564e0cd81c40 <task_per_thread+320>
        t = 0x7f1f0809d9e0
        budget_mask = 15 '\017'
        profile_entry = 0x0
        done = 2
        queue = <optimized out>
        state = <optimized out>
        ctx = <optimized out>
#6  0x0000564e0cbcec70 in process_runnable_tasks () at src/task.c:808
        tt = 0x564e0cd81c00 <task_per_thread+256>
        lrq = <optimized out>
        grq = <optimized out>
        t = <optimized out>
        max = {46, 33, 12, 0}
        max_total = <optimized out>
        tmp_list = <optimized out>
        queue = <optimized out>
        max_processed = <optimized out>
        lpicked = <optimized out>
        gpicked = <optimized out>
        heavy_queued = 1
        budget = <optimized out>
#7  0x0000564e0cb97392 in run_poll_loop () at src/haproxy.c:2615
        next = <optimized out>
        wake = <optimized out>
#8  0x0000564e0cb977c5 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:2786
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
        init_left = 0
        init_mutex = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 39 times>, __align = 0}
        init_cond = {__data = {{__wseq = 33, __wseq32 = {__low = 33, __high = 0}}, {__g1_start = 27, __g1_start32 = {__low = 27, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 12, __wrefs = 0, __g_signals = {0, 0}}, __size = "!\000\000\000\000\000\000\000\033", '\000' <repeats 23 times>, "\f", '\000' <repeats 14 times>, __align = 33}
#9  0x00007f1f0e318fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
        ret = <optimized out>
        pd = <optimized out>
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139771348489984, 5546925355578275477, 140733967092206, 140733967092207, 139771348489984, 94893239721952, -5565120817247177067, -5565112838599756139}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#10 0x00007f1f0dbe44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.

Thread 1 (Thread 0x7f1f0d95cfc0 (LWP 780)):
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
        set = {__val = {8192, 0 <repeats 15 times>}}
        pid = <optimized out>
        tid = <optimized out>
        ret = <optimized out>
#1  0x00007f1f0db0d535 in __GI_abort () at abort.c:79
        save_stage = 1
        act = {__sigaction_handler = {sa_handler = 0x1, sa_sigaction = 0x1}, sa_mask = {__val = {0, 18446744067267100671, 18446744073709551615 <repeats 12 times>, 139771358880956, 18446744073709551615}}, sa_flags = 6103, sa_restorer = 0xfffffffffffdfed8}
        sigs = {__val = {32, 0 <repeats 15 times>}}
#2  0x0000564e0cbb4128 in ha_panic () at src/debug.c:327
No locals.
#3  0x0000564e0cc123e7 in wdt_handler (sig=<optimized out>, si=<optimized out>, arg=<optimized out>) at src/wdt.c:120
        n = <optimized out>
        p = <optimized out>
        thr = <optimized out>
#4  <signal handler called>
No locals.
#5  0x0000564e0cb5ea47 in process_peer_sync (task=0x564e124471c0, context=0x564e0ddeeea0, state=524) at src/peers.c:2961
        peers = 0x564e0ddeeea0
        ps = 0x564e0de14e10
        st = <optimized out>
#6  0x0000564e0cbce2eb in run_tasks_from_lists (budgets=budgets@entry=0x7fff2e1dc980) at src/task.c:569
        process = <optimized out>
        tl_queues = 0x564e0cd81b40 <task_per_thread+64>
        t = 0x564e124471c0
        budget_mask = 14 '\016'
        profile_entry = 0x0
        done = 67
        queue = <optimized out>
        state = <optimized out>
        ctx = <optimized out>
#7  0x0000564e0cbcec70 in process_runnable_tasks () at src/task.c:808
        tt = 0x564e0cd81b00 <task_per_thread>
        lrq = <optimized out>
        grq = <optimized out>
        t = <optimized out>
        max = {0, 2, 0, 0}
        max_total = <optimized out>
        tmp_list = <optimized out>
        queue = <optimized out>
        max_processed = <optimized out>
        lpicked = <optimized out>
        gpicked = <optimized out>
        heavy_queued = 1
        budget = <optimized out>
#8  0x0000564e0cb97392 in run_poll_loop () at src/haproxy.c:2615
        next = <optimized out>
        wake = <optimized out>
#9  0x0000564e0cb977c5 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:2786
        ptaf = <optimized out>
        ptif = <optimized out>
        ptdf = <optimized out>
        ptff = <optimized out>
        init_left = 0
        init_mutex = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 39 times>, __align = 0}
        init_cond = {__data = {{__wseq = 33, __wseq32 = {__low = 33, __high = 0}}, {__g1_start = 27, __g1_start32 = {__low = 27, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 12, __wrefs = 0, __g_signals = {0, 0}}, __size = "!\000\000\000\000\000\000\000\033", '\000' <repeats 23 times>, "\f", '\000' <repeats 14 times>, __align = 33}
#10 0x0000564e0ca5b14c in main (argc=<optimized out>, argv=<optimized out>) at src/haproxy.c:3493
        blocked_sig = {__val = {18446744067199990583, 18446744073709551615 <repeats 15 times>}}
        old_sig = {__val = {0, 7354670, 1, 33188, 0, 0, 7401034, 4096, 14456, 1642675625, 441174128, 0, 0, 1642675528, 864883302, 0}}
        i = <optimized out>
        err = <optimized out>
        retry = <optimized out>
        limit = {rlim_cur = 18446744073709551615, rlim_max = 18446744073709551615}
        pidfd = <optimized out>
        intovf = <optimized out>

Additional Information

No response

idl0r commented 2 years ago

If you guys need a coredump, just let me know and I'll mail it.

idl0r commented 2 years ago

Log:

n095147 is the host itself.

Thread 1 is about to kill the process.
*>Thread 1 : id=0x7f1f0d95cfc0 act=1 glob=1 wq=1 rq=1 tl=1 tlsz=2 rqsz=142
             stuck=1 prof=0 harmless=0 wantrdv=0
             cpu_ns: poll=53690908167 now=56299777281 diff=2608869114
             curr_task=0x564e124471c0 (task) calls=1406 last=0
               fct=0x564e0cb5e830(process_peer_sync) ctx=0x564e0ddeeea0
             call trace(16):
             | 0x564e0cc123e7 [48 83 c4 10 5b 5d 41 5c]: wdt_handler+0x107/0x114
             | 0x7f1f0e323730 [48 c7 c0 0f 00 00 00 0f]: libpthread:+0x12730
             | 0x564e0cb5ea47 [e9 24 fe ff ff 80 e6 08]: process_peer_sync+0x217/0x8fa
  Thread 2 : id=0x7f1f0d939700 act=1 glob=0 wq=1 rq=1 tl=1 tlsz=0 rqsz=7
             stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns: poll=25392108115 now=27134040820 diff=1741932705
             curr_task=0x7f1f0809d9e0 (task) calls=8 last=0
               fct=0x564e0cae7660(process_stream) ctx=0x7f1f08099f00
             strm=0x7f1f08099f00,25006 src=<PEER> fe=n095147 be=n095147 dst=unknown
             txn=(nil),0 txn.req=-,0 txn.rsp=-,0
             rqf=80a860 rqa=0 rpf=8040a028 rpa=0 sif=EST,2c0060 sib=CLO,80072
             af=0x564e19ef6570,6 csf=(nil),0
             ab=(nil),0 csb=0x7f1f08071f10,8200
             cof=(nil),0:NONE((nil))/NONE((nil))/NONE(0)
             cob=0x7f1edc203a70,105c2300:PASS(0x7f1f080a8080)/RAW((nil))/tcpv4(2562)
  Thread 3 : id=0x7f1ef117c700 act=1 glob=0 wq=1 rq=1 tl=1 tlsz=1 rqsz=8
             stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns: poll=42699764579 now=42752268106 diff=52503527
             curr_task=0x7f1ee80788e0 (task) calls=1 last=0
               fct=0x564e0cae7660(process_stream) ctx=0x7f1ee80bdf60
             strm=0x7f1ee80bdf60,e src=127.0.0.1 fe=genlisten_62041-provid_health_check_cache_tls be=genlisten_62041-provid_health_check_cache_tls dst=n095022
             txn=(nil),0 txn.req=-,0 txn.rsp=-,0
             rqf=908000 rqa=0 rpf=80000000 rpa=0 sif=EST,200020 sib=ASS,30
             af=(nil),0 csf=0x7f1ee806eca0,8200
             ab=(nil),0 csb=0x7f1ee80aaa40,0
             cof=0x7f1ed8073eb0,80001300:PASS(0x7f1ee808a930)/RAW((nil))/tcpv4(2547)
             cob=0x7f1ee007d450,18c00000:NONE(0x7f1ee80aaa40)/SSL(0x7f1edc2200c0)/NONE(2864)
  Thread 4 : id=0x7f1ef097b700 act=1 glob=1 wq=1 rq=0 tl=1 tlsz=19 rqsz=24
             stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns: poll=7565911646 now=7622932969 diff=57021323
             curr_task=0x564e148d97c0 (task) calls=2589 last=0
               fct=0x564e0cb87d40(process_chk) ctx=0x564e17994be8
  Thread 5 : id=0x7f1eef234700 act=1 glob=0 wq=1 rq=1 tl=1 tlsz=2 rqsz=21
             stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns: poll=21345221572 now=21410249319 diff=65027747
             curr_task=0x7f1edc1d1910 (task) calls=1 last=0
               fct=0x564e0cae7660(process_stream) ctx=0x7f1edc1b7840
             strm=0x7f1edc1b7840,e src=127.0.0.1 fe=genlisten_62041-provid_health_check_cache_tls be=genlisten_62041-provid_health_check_cache_tls dst=n095021
             txn=(nil),0 txn.req=-,0 txn.rsp=-,0
             rqf=908000 rqa=0 rpf=80000000 rpa=0 sif=EST,200020 sib=ASS,30
             af=(nil),0 csf=0x7f1edc17ed90,8200
             ab=(nil),0 csb=0x7f1edc115cc0,0
             cof=0x7f1edc093c90,80001300:PASS(0x7f1edc094d20)/RAW((nil))/tcpv4(2828)
             cob=0x7f1edc0edc50,18c00000:NONE(0x7f1edc115cc0)/SSL(0x7f1edc134af0)/NONE(2863)
  Thread 6 : id=0x7f1eeea33700 act=1 glob=0 wq=1 rq=0 tl=1 tlsz=2 rqsz=3
             stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns: poll=29571746163 now=29655252504 diff=83506341
             curr_task=0x7f1ed80d1450 (task) calls=1 last=0
               fct=0x564e0cae7660(process_stream) ctx=0x7f1ed80cb4d0
             strm=0x7f1ed80cb4d0,e src=127.0.0.1 fe=genlisten_62041-provid_health_check_cache_tls be=genlisten_62041-provid_health_check_cache_tls dst=n095022
             txn=(nil),0 txn.req=-,0 txn.rsp=-,0
             rqf=908000 rqa=0 rpf=80000000 rpa=0 sif=EST,200020 sib=ASS,30
             af=(nil),0 csf=0x7f1ed8056160,8200
             ab=(nil),0 csb=0x7f1ed80dfe80,0
             cof=0x7f1edc095cc0,80001300:PASS(0x7f1ed805b0f0)/RAW((nil))/tcpv4(2827)
             cob=0x7f1ed80e1520,18c00000:NONE(0x7f1ed80dfe80)/SSL(0x7f1edc121260)/NONE(2862)
  Thread 7 : id=0x7f1eee232700 act=1 glob=0 wq=1 rq=0 tl=1 tlsz=12 rqsz=15
             stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns: poll=7607516498 now=7658831733 diff=51315235
             curr_task=0x7f1ed409e5e0 (task) calls=1 last=0
               fct=0x564e0cae7660(process_stream) ctx=0x7f1ed4099dd0
             strm=0x7f1ed4099dd0,e src=127.0.0.1 fe=genlisten_62041-provid_health_check_cache_tls be=genlisten_62041-provid_health_check_cache_tls dst=n095020
             txn=(nil),0 txn.req=-,0 txn.rsp=-,0
             rqf=908000 rqa=0 rpf=80000000 rpa=0 sif=EST,200020 sib=ASS,30
             af=(nil),0 csf=0x7f1ed40e9830,8200
             ab=(nil),0 csb=0x7f1ed4096a80,0
             cof=0x7f1edc062620,80001300:PASS(0x7f1ed408aa50)/RAW((nil))/tcpv4(2551)
             cob=0x7f1ed41cb1a0,18c00000:NONE(0x7f1ed4096a80)/SSL(0x564e19eed860)/NONE(2580)
  Thread 8 : id=0x7f1eeda31700 act=1 glob=0 wq=0 rq=1 tl=1 tlsz=0 rqsz=4
             stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns: poll=8160125688 now=8222233286 diff=62107598
             curr_task=0x7f1ecc08ca70 (task) calls=4 last=0
               fct=0x564e0cae7660(process_stream) ctx=0x7f1ecc06f0d0
             strm=0x7f1ecc06f0d0,4304e src=127.0.0.1 fe=genlisten_62041-provid_health_check_cache_tls be=genlisten_62041-provid_health_check_cache_tls dst=n095022
             txn=(nil),0 txn.req=-,0 txn.rsp=-,0
             rqf=84a029 rqa=0 rpf=8000a800 rpa=0 sif=CLO,280022 sib=EST,2000b0
             af=(nil),0 csf=0x7f1ecc0a8330,91a0
             ab=(nil),0 csb=0x7f1ecc0a88a0,8080
             cof=0x7f1ed41c9030,801c1300:PASS(0x7f1ecc06c9d0)/RAW((nil))/tcpv4(2619)
             cob=0x7f1edc092bf0,10082000:PASS(0x7f1ecc08e410)/NONE((nil))/NONE(2528)
[NOTICE]   (777) : haproxy version is 2.4.12-4b7772e
[NOTICE]   (777) : path to executable is /usr/sbin/haproxy
[ALERT]    (777) : Current worker #1 (780) exited with code 134 (Aborted)
[ALERT]    (777) : exit-on-failure: killing every processes with SIGTERM
[WARNING]  (777) : All workers exited. Exiting... (134)
wtarreau commented 2 years ago

Thank you Christian. If you could go up into process_peers_sync() and issue "p/x ps->lock", that would be cool. The function has only one lock and one unlock and it cannot bypass it, so it seriously looks like the lock itself got corrupted, likely the same thing we're looking for at other places. And since these locks usually have few bits set we could possibly figure that what you find there looks like a pointer or like an extra flag that will allow us to narrow the issue down.

idl0r commented 2 years ago

I'm afraid we have to wait until it happens again. The dump was in /tmp/ and my college rebootet that host so /tmp/ got wiped. I haven't saved it to a different location :(

wtarreau commented 2 years ago

No problem Christian, don't feel sad for this :-) I'm totally convinced it's the same issue as the other one anyway.

wtarreau commented 2 years ago

So in the end there was one bug in the scheduler affecting peers and a few others, and more importantly a use-after-free issue in SPOE causing random memory corruption.

wtarreau commented 2 years ago

Oh and the cause was finally the same as #1494, so marking duplicate and closing.