Skip to content

haproxy crash when updating ca and certificate files #3165

@slux78

Description

@slux78

Detailed Description of the Problem

Hello

I attempted to update the root CA and certificates at runtime through the CLI while HAProxy was running, as follows.
When updating the rootca file and certificate file via the CLI using runtimeAPI, HAProxy crashes. However, if only the rootca file (ca file) is updated, no crash occurs. But, after updating the ca file, when the certificate file is updated (whether it's the same certificate or a newly generated one), HAProxy crashes. This crash occurs even when no messages are being received from the outside.
If this crash is caused by an issue with the test sequence, could you please provide guidance on how to proceed with the testing? If it is a latent issue, I hope the attached script and backtrace will be helpful in making the necessary corrections.

Expected Behavior

If it is not possible to update the certificate, it would be preferable for HAProxy to output an error message and not perform the update, rather than crashing.

Steps to Reproduce the Behavior

The test was conducted as follows:

I opened a terminal and executed the command './haproxy -V -f haproxy.cfg' to start HAProxy.
In another terminal, I ran a script to update the certificates.
The script that caused the crash updates the root CA file (ca.crt), waits for 1 second, and then updates the certificates.
For the first scenario, the same certificate was updated without any changes. For the second scenario, a new certificate was generated and then updated.

Each scenario was executed independently, and in both cases, a crash occurred.

The script for the first scenario is as follows:

let cnt=0
while true; do
date

sudo /bin/rm test_rootCA.key test_rootCA.crt

echo "make rootCA key"
sudo openssl genrsa -out test_rootCA.key 4096

echo "make rootCA crt"
sudo openssl req \
  -config /ext_hdd/haproxy_test/ocsp/exampleCA/openssl-root.cnf \
  -extensions v3_ca \
  -new \
  -x509 \
  -days 7300 \
  -sha256 \
  -subj "/C=KR/ST=GY/L=Suwon/O=SEC/OU=NW/CN=Root CA" \
  -key test_rootCA.key \
  -out test_rootCA.crt

    let cnt=$cnt+1

    if [ $cnt -gt 2 ]; then
        let cnt=0
        echo -e "set ssl ca-file ca.crt <<\n$(cat ca.crt)\n" | ./socat unix-connect:/var/run/haproxy.sock stdio
    else
        echo -e "set ssl ca-file ca.crt <<\n$(cat test_rootCA.crt)\n" | ./socat unix-connect:/var/run/haproxy.sock stdio
    fi

    echo "commit ssl ca-file ca.crt" | ./socat unix-connect:/var/run/haproxy.sock stdio
    sleep 1
    echo -e "set ssl cert haproxy.pem <<\n$(cat haproxy.pem)\n" | ./socat unix-connect:/var/run/haproxy.sock stdio
    echo "commit ssl cert haproxy.pem" | ./socat unix-connect:/var/run/haproxy.sock stdio

done

The script for the second scenario is as follows:

let cnt=0
while true; do
date

sudo /bin/rm test_rootCA.key test_rootCA.crt

echo "make rootCA key"
sudo openssl genrsa -out test_rootCA.key 4096

echo "make rootCA crt"
sudo openssl req \
  -config /ext_hdd/haproxy_test/ocsp/exampleCA/openssl-root.cnf \
  -extensions v3_ca \
  -new \
  -x509 \
  -days 7300 \
  -sha256 \
  -subj "/C=KR/ST=GY/L=Suwon/O=SEC/OU=NW/CN=Root CA" \
  -key test_rootCA.key \
  -out test_rootCA.crt

    let cnt=$cnt+1

    if [ $cnt -gt 2 ]; then
        let cnt=0
        echo -e "set ssl ca-file ca.crt <<\n$(cat ca.crt)\n" | ./socat unix-connect:/var/run/haproxy.sock stdio
    else
        echo -e "set ssl ca-file ca.crt <<\n$(cat test_rootCA.crt)\n" | ./socat unix-connect:/var/run/haproxy.sock stdio
    fi

    echo "commit ssl ca-file ca.crt" | ./socat unix-connect:/var/run/haproxy.sock stdio
    sleep 1

openssl req \
  -config /ext_hdd/haproxy_test/ocsp/exampleCA/openssl-root.cnf \
  -newkey rsa:2048 \
  -nodes \
  -subj "/C=KR/ST=GY/L=Suwon/O=SEC/OU=NW/CN=www.example.com" \
  -keyout haproxy.key \
  -out haproxy.csr

openssl ca \
  -config /ext_hdd/haproxy_test/ocsp/exampleCA/openssl-root.cnf \
  -extensions v3_both \
  -days 3650 \
  -notext \
  -md sha256 \
  -in haproxy.csr \
  -out haproxy.crt

cat haproxy.crt > haproxy.pem
cat haproxy.key >> haproxy.pem
cat test_rootCA.key >> haproxy.pem

    echo -e "set ssl cert haproxy.pem <<\n$(cat haproxy.pem)\n" | ./socat unix-connect:/var/run/haproxy.sock stdio
    echo "commit ssl cert haproxy.pem" | ./socat unix-connect:/var/run/haproxy.sock stdio

done

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?

global
   nbthread 8
   maxconn 30000
   stats socket /var/run/haproxy.sock mode 660 expose-fd listeners level admin
   stats timeout 2m
   tune.h2.initial-window-size 6553600
   log stdout format raw local0 info
   ocsp-update.mode on

defaults
    timeout connect 10s
    timeout client 40s
    timeout server 1h
    timeout queue 5s
    option forwardfor
    option nolinger
    mode http
    maxconn 30000
    log global
    option httplog


frontend frontend_12345
    http-request set-tos 0xE0
    http-response set-tos 0xE0
    bind 0.0.0.0:12345 ssl crt haproxy.pem ca-file ca.crt verify required alpn h2 proto h2
    bind [::]:12345 ssl crt haproxy.pem ca-file ca.crt verify required alpn h2 proto h2
    http-request set-header X-SSL-Client-DN %{+Q}[ssl_c_s_dn]

    default_backend testBackend

backend testBackend
    balance static-rr
    server 41  172.200.0.3:12346   proto h2 check inter 1s observe layer4 error-limit 2 on-error mark-down

Output of haproxy -vv

HAProxy version 3.2.6-81568b2 2025/10/03 - https://haproxy.org/
Status: long-term supported branch - will stop receiving fixes around Q2 2030.
Known bugs: http://www.haproxy.org/bugs/bugs-3.2.6.html
Running on: Linux 5.15.0-136-generic #147~20.04.1-Ubuntu SMP Wed Mar 19 16:13:14 UTC 2025 x86_64
Build options : 
  TARGET  = linux-glibc
  CC      = cc
  CFLAGS  = -O2 -g -fwrapv
  OPTIONS = USE_OPENSSL=1 USE_LUA=1 USE_ZLIB=1
  DEBUG   = 

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

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

Built with multi-threading support (MAX_TGROUPS=32, MAX_THREADS=1024, default=8).
Built with SSL library version : OpenSSL 3.0.18 30 Sep 2025
Running on SSL library version : OpenSSL 3.0.18 30 Sep 2025
SSL library supports TLS extensions : yes
SSL library supports SNI : yes
SSL library supports : TLSv1.0 TLSv1.1 TLSv1.2 TLSv1.3
OpenSSL providers loaded : default
Built with Lua version : Lua 5.4.8
Built with network namespace support.
Built with zlib version : 1.2.11
Running on zlib version : 1.2.11
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 without PCRE or PCRE2 support (using libc's regex instead)
Encrypted password support via crypt(3): yes
Built with gcc compiler version 9.4.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|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
       fcgi : mode=HTTP  side=BE     mux=FCGI  flags=HTX|HOL_RISK|NO_UPG
  <default> : mode=SPOP  side=BE     mux=SPOP  flags=HOL_RISK|NO_UPG
       spop : mode=SPOP  side=BE     mux=SPOP  flags=HOL_RISK|NO_UPG
  <default> : mode=TCP   side=FE|BE  mux=PASS  flags=
       none : mode=TCP   side=FE|BE  mux=PASS  flags=NO_UPG

Available services : none

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

Last Outputs and Backtraces

The backtrace for the first scenario is as follows:

Thread 7 "haproxy" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff4edb640 (LWP 544498)]
0x00005555556b0809 in ssl_sock_put_ckch_into_ctx (err=0x7fffdc03f2c0, ctx=0x7fffdc047480, store=0x5555569c45b0, path=0x5555569c4650 "haproxy.pem")
    at src/ssl_sock.c:2785
2785		if (SSL_CTX_use_PrivateKey(ctx, data->key) <= 0) {
Missing separate debuginfos, use: dnf debuginfo-install glibc-2.34-60.el9_2.7.x86_64 libgcc-11.3.1-4.3.el9.x86_64 libxcrypt-compat-4.4.18-3.el9.x86_64 zlib-1.2.11-39.el9.x86_64
(gdb) t a a bt full

Thread 9 (Thread 0x7fffe77fe640 (LWP 544500) "haproxy"):
#0  0x00007ffff7db783e in epoll_wait () from /lib64/libc.so.6
No symbol table info available.
#1  0x00005555556a0cf2 in _do_poll (p=<optimized out>, exp=<optimized out>, wake=<optimized out>) at src/ev_epoll.c:250
        timeout = 60000
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 60000
        old_fd = <optimized out>
        __func__ = {<optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>}
#2  0x000055555588055b in run_poll_loop () at src/haproxy.c:2929
        next = <optimized out>
        wake = <optimized out>
        __func__ = {<optimized out> <repeats 14 times>}
#3  0x0000555555880cc1 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3071
        ptaf = <optimized out>
        ptif = 0x555555e83930 <per_thread_init_list>
        ptdf = <optimized out>
        ptff = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
        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 = 55, __wseq32 = {__low = 55, __high = 0}}, {__g1_start = 43, __g1_start32 = {__low = 43, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 24, __wrefs = 0, __g_signals = {0, 0}}, __size = "7\000\000\000\000\000\000\000+", '\000' <repeats 23 times>, "\030", '\000' <repeats 14 times>, __align = 55}
#4  0x00007ffff7d08802 in start_thread () from /lib64/libc.so.6
No symbol table info available.
#5  0x00007ffff7ca8450 in clone3 () from /lib64/libc.so.6
No symbol table info available.

Thread 8 (Thread 0x7fffe7fff640 (LWP 544499) "haproxy"):
#0  0x00007ffff7db783e in epoll_wait () from /lib64/libc.so.6
No symbol table info available.
#1  0x00005555556a0cf2 in _do_poll (p=<optimized out>, exp=<optimized out>, wake=<optimized out>) at src/ev_epoll.c:250
        timeout = 45
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 45
        old_fd = <optimized out>
        __func__ = {<optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, --Type <RET> for more, q to quit, c to continue without paging--
<optimized out>}
#2  0x000055555588055b in run_poll_loop () at src/haproxy.c:2929
        next = <optimized out>
        wake = <optimized out>
        __func__ = {<optimized out> <repeats 14 times>}
#3  0x0000555555880cc1 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3071
        ptaf = <optimized out>
        ptif = 0x555555e83930 <per_thread_init_list>
        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 = 55, __wseq32 = {__low = 55, __high = 0}}, {__g1_start = 43, __g1_start32 = {__low = 43, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 24, __wrefs = 0, __g_signals = {0, 0}}, __size = "7\000\000\000\000\000\000\000+", '\000' <repeats 23 times>, "\030", '\000' <repeats 14 times>, __align = 55}
#4  0x00007ffff7d08802 in start_thread () from /lib64/libc.so.6
No symbol table info available.
#5  0x00007ffff7ca8450 in clone3 () from /lib64/libc.so.6
No symbol table info available.

Thread 7 (Thread 0x7ffff4edb640 (LWP 544498) "haproxy"):
#0  0x00005555556b0809 in ssl_sock_put_ckch_into_ctx (err=0x7fffdc03f2c0, ctx=0x7fffdc047480, store=0x5555569c45b0, path=0x5555569c4650 "haproxy.pem") at sr--Type <RET> for more, q to quit, c to continue without paging--
c/ssl_sock.c:2785
        errcode = 0
        data = 0x5555569c4
        find_chain = 0x0
        errcode = <optimized out>
        data = <optimized out>
        find_chain = <optimized out>
        end = <optimized out>
        ret = <optimized out>
#1  ckch_inst_new_load_store (path=0x5555569c4650 "haproxy.pem", ckchs=0x5555569c45b0, bind_conf=0x5555569c3f80, ssl_conf=0x0, sni_filter=0x0, fcount=0, is_default=1, ckchi=0x7ffff4ecfe40, err=0x7fffdc03f2c0) at src/ssl_sock.c:2931
        ctx = 0x7fffdc047480
        i = <optimized out>
        order = 0
        xname = <optimized out>
        str = 0x555556c2f510 "ca.crt"
        pkey = <optimized out>
        kinfo = {sig = <optimized out>, bits = <optimized out>}
        names = <optimized out>
        data = 0x5555569c4
        ckch_inst = 0x0
        errcode = 0
        error = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
#2  0x00005555556c122a in ckch_inst_rebuild (ckch_store=<optimized out>, ckchi=0x7ffff004f190, new_inst=new_inst@entry=0x7ffff4ecfe40, err=err@entry=0x7fffdc03f2c0) at src/ssl_ckch.c:2587
        retval = 0
        errcode = 0
        sc0 = <optimized out>
        sc0s = <optimized out>
        sni_filter = <optimized out>
        fcount = <optimized out>
#3  0x00005555556c15c1 in cli_io_handler_commit_cafile_crlfile (appctx=0x7fffdc03f1a0) at src/ssl_ckch.c:3484
        new_inst = 0x0
        ctx = 0x7fffdc03f2a0
        y = 0
        old_cafile_entry = 0x555556c2f4c0
        new_cafile_entry = <optimized out>
        ckchi_link = 0x7ffff004fde0
        path = <optimized out>
        yield = <optimized out>
        end = <optimized out>
#4  0x0000555555826dfe in cli_io_handler (appctx=0x7fffdc03f1a0) at src/cli.c:1202
        ctx = <optimized out>
        msg = <optimized out>
        sev = <optimized out>
        __func__ = {<optimized out> <repeats 15 times>}
--Type <RET> for more, q to quit, c to continue without paging--
#5  0x000055555588bd33 in task_process_applet (t=0x7fffdc03f3b0, context=0x7fffdc03f1a0, state=<optimized out>) at src/applet.c:920
        app = 0x7fffdc03f1a0
        sc = <optimized out>
        rate = <optimized out>
        __FUNCTION__ = "task_process_applet"
        __func__ = {<optimized out> <repeats 20 times>}
#6  0x0000555555919aa5 in run_tasks_from_lists (budgets=budgets@entry=0x7ffff4ecffe0) at src/task.c:659
        process = <optimized out>
        tl_queues = <optimized out>
        t = 0x7fffdc03f3b0
        budget_mask = <optimized out>
        profile_entry = 0x0
        done = <optimized out>
        queue = <optimized out>
        state = <optimized out>
        ctx = <optimized out>
        __func__ = {<optimized out> <repeats 21 times>}
#7  0x000055555591a81b in process_runnable_tasks () at src/task.c:892
        tt = 0x5555566ed780 <ha_thread_ctx+2560>
        lrq = <optimized out>
        grq = <optimized out>
        t = <optimized out>
        max = {0, 91, 0, 0}
--Type <RET> for more, q to quit, c to continue without paging--
        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>
        not_done_yet = <optimized out>
        __lk_r = <optimized out>
        __set_r = <optimized out>
        __msk_r = <optimized out>
#8  0x0000555555880599 in run_poll_loop () at src/haproxy.c:2851
        next = <optimized out>
        wake = <optimized out>
        __func__ = {<optimized out> <repeats 14 times>}
#9  0x0000555555880cc1 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3071
        ptaf = <optimized out>
        ptif = 0x555555e83930 <per_thread_init_list>
        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 =--Type <RET> for more, q to quit, c to continue without paging--
 0x0}}, __size = '\000' <repeats 39 times>, __align = 0}
        init_cond = {__data = {{__wseq = 55, __wseq32 = {__low = 55, __high = 0}}, {__g1_start = 43, __g1_start32 = {__low = 43, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 24, __wrefs = 0, __g_signals = {0, 0}}, __size = "7\000\000\000\000\000\000\000+", '\000' <repeats 23 times>, "\030", '\000' <repeats 14 times>, __align = 55}
#10 0x00007ffff7d08802 in start_thread () from /lib64/libc.so.6
No symbol table info available.
#11 0x00007ffff7ca8450 in clone3 () from /lib64/libc.so.6
No symbol table info available.

Thread 6 (Thread 0x7ffff5717640 (LWP 544497) "haproxy"):
#0  0x00007ffff7db783e in epoll_wait () from /lib64/libc.so.6
No symbol table info available.
#1  0x00005555556a0cf2 in _do_poll (p=<optimized out>, exp=<optimized out>, wake=<optimized out>) at src/ev_epoll.c:250
        timeout = 60000
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 60000
        old_fd = <optimized out>
        __func__ = {<optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>}
#2  0x000055555588055b in run_poll_loop () at src/haproxy.c:2929
--Type <RET> for more, q to quit, c to continue without paging--
        next = <optimized out>
        wake = <optimized out>
        __func__ = {<optimized out> <repeats 14 times>}
#3  0x0000555555880cc1 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3071
        ptaf = <optimized out>
        ptif = 0x555555e83930 <per_thread_init_list>
        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 = 55, __wseq32 = {__low = 55, __high = 0}}, {__g1_start = 43, __g1_start32 = {__low = 43, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 24, __wrefs = 0, __g_signals = {0, 0}}, __size = "7\000\000\000\000\000\000\000+", '\000' <repeats 23 times>, "\030", '\000' <repeats 14 times>, __align = 55}
#4  0x00007ffff7d08802 in start_thread () from /lib64/libc.so.6
No symbol table info available.
#5  0x00007ffff7ca8450 in clone3 () from /lib64/libc.so.6
No symbol table info available.

Thread 5 (Thread 0x7ffff5f53640 (LWP 544496) "haproxy"):
#0  0x00007ffff7db783e in epoll_wait () from /lib64/libc.so.6
No symbol table info available.
#1  0x00005555556a0cf2 in _do_poll (p=<optimized out>, exp=<optimized out>, wake=<optimized out>) at src/ev_epoll.c:250
--Type <RET> for more, q to quit, c to continue without paging--
        timeout = 60000
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 60000
        old_fd = <optimized out>
        __func__ = {<optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>}
#2  0x000055555588055b in run_poll_loop () at src/haproxy.c:2929
        next = <optimized out>
        wake = <optimized out>
        __func__ = {<optimized out> <repeats 14 times>}
#3  0x0000555555880cc1 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3071
        ptaf = <optimized out>
        ptif = 0x555555e83930 <per_thread_init_list>
        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 = 55, __wseq32 = {__low = 55, __high = 0}}, {__g1_start = 43, __g1_start32 = {__low = 43, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 24, __wrefs = 0, __g_signals = {0, 0}}, __size = "7\000\000\000\000\000\000\000+", '\000' <repeats 23 times>, "\03--Type <RET> for more, q to quit, c to continue without paging--
0", '\000' <repeats 14 times>, __align = 55}
#4  0x00007ffff7d08802 in start_thread () from /lib64/libc.so.6
No symbol table info available.
#5  0x00007ffff7ca8450 in clone3 () from /lib64/libc.so.6
No symbol table info available.

Thread 4 (Thread 0x7ffff678f640 (LWP 544495) "haproxy"):
#0  0x00007ffff7db783e in epoll_wait () from /lib64/libc.so.6
No symbol table info available.
#1  0x00005555556a0cf2 in _do_poll (p=<optimized out>, exp=<optimized out>, wake=<optimized out>) at src/ev_epoll.c:250
        timeout = 60000
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 60000
        old_fd = <optimized out>
        __func__ = {<optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>}
#2  0x000055555588055b in run_poll_loop () at src/haproxy.c:2929
        next = <optimized out>
        wake = <optimized out>
        __func__ = {<optimized out> <repeats 14 times>}
--Type <RET> for more, q to quit, c to continue without paging--
#3  0x0000555555880cc1 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3071
        ptaf = <optimized out>
        ptif = 0x555555e83930 <per_thread_init_list>
        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 = 55, __wseq32 = {__low = 55, __high = 0}}, {__g1_start = 43, __g1_start32 = {__low = 43, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 24, __wrefs = 0, __g_signals = {0, 0}}, __size = "7\000\000\000\000\000\000\000+", '\000' <repeats 23 times>, "\030", '\000' <repeats 14 times>, __align = 55}
#4  0x00007ffff7d08802 in start_thread () from /lib64/libc.so.6
No symbol table info available.
#5  0x00007ffff7ca8450 in clone3 () from /lib64/libc.so.6
No symbol table info available.

Thread 3 (Thread 0x7ffff7c5b640 (LWP 544494) "haproxy"):
#0  0x00007ffff7db783e in epoll_wait () from /lib64/libc.so.6
No symbol table info available.
#1  0x00005555556a0cf2 in _do_poll (p=<optimized out>, exp=<optimized out>, wake=<optimized out>) at src/ev_epoll.c:250
        timeout = 60000
        status = <optimized out>
        fd = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 60000
        old_fd = <optimized out>
        __func__ = {<optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>}
#2  0x000055555588055b in run_poll_loop () at src/haproxy.c:2929
        next = <optimized out>
        wake = <optimized out>
        __func__ = {<optimized out> <repeats 14 times>}
#3  0x0000555555880cc1 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3071
        ptaf = <optimized out>
        ptif = 0x555555e83930 <per_thread_init_list>
        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 = 55, __wseq32 = {__low = 55, __high = 0}}, {__g1_start = 43, __g1_start32 = {__low = 43, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 24, __wrefs = 0, __g_signals = {0, 0}}, __size = "7\000\000\000\000\000\000\000+", '\000' <repeats 23 times>, "\030", '\000' <repeats 14 times>, __align = 55}
#4  0x00007ffff7d08802 in start_thread () from /lib64/libc.so.6
No symbol table info available.
--Type <RET> for more, q to quit, c to continue without paging--
#5  0x00007ffff7ca8450 in clone3 () from /lib64/libc.so.6
No symbol table info available.

Thread 1 (Thread 0x7ffff7c67480 (LWP 544489) "haproxy"):
#0  0x00007ffff7db783e in epoll_wait () from /lib64/libc.so.6
No symbol table info available.
#1  0x00005555556a0cf2 in _do_poll (p=<optimized out>, exp=<optimized out>, wake=<optimized out>) at src/ev_epoll.c:250
        timeout = 60000
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 60000
        old_fd = <optimized out>
        __func__ = {<optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>}
#2  0x000055555588055b in run_poll_loop () at src/haproxy.c:2929
        next = <optimized out>
        wake = <optimized out>
        __func__ = {<optimized out> <repeats 14 times>}
#3  0x0000555555880cc1 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3071
        ptaf = <optimized out>
        ptif = 0x555555e83930 <per_thread_init_list>
--Type <RET> for more, q to quit, c to continue without paging--
        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 = 55, __wseq32 = {__low = 55, __high = 0}}, {__g1_start = 43, __g1_start32 = {__low = 43, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 24, __wrefs = 0, __g_signals = {0, 0}}, __size = "7\000\000\000\000\000\000\000+", '\000' <repeats 23 times>, "\030", '\000' <repeats 14 times>, __align = 55}
#4  0x000055555569e479 in main (argc=<optimized out>, argv=<optimized out>) at src/haproxy.c:3685
        devnullfd = <optimized out>
        limit = {rlim_cur = 1048576, rlim_max = 1048576}
        intovf = <optimized out>
        cfg = <optimized out>
        cfg_tmp = <optimized out>
        tmp_startup_logs = <optimized out>
        proc = <optimized out>
        msg = 0x555555c8d2db "READY\n"
        msg = <optimized out>
(gdb) quit


The script for the second scenario is as follows:

Thread 7 "haproxy" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff4edb640 (LWP 544618)]
0x00005555556b0809 in ssl_sock_put_ckch_into_ctx (err=0x7fffdc03f2c0, ctx=0x7fffdc047480, store=0x5555569c45b0, path=0x5555569c4650 "haproxy.pem")
    at src/ssl_sock.c:2785
2785		if (SSL_CTX_use_PrivateKey(ctx, data->key) <= 0) {
Missing separate debuginfos, use: dnf debuginfo-install glibc-2.34-60.el9_2.7.x86_64 libgcc-11.3.1-4.3.el9.x86_64 libxcrypt-compat-4.4.18-3.el9.x86_64 zlib-1.2.11-39.el9.x86_64
(gdb) t a a bt full

Thread 9 (Thread 0x7fffe77fe640 (LWP 544620) "haproxy"):
#0  0x00007ffff7db783e in epoll_wait () from /lib64/libc.so.6
No symbol table info available.
#1  0x00005555556a0cf2 in _do_poll (p=<optimized out>, exp=<optimized out>, wake=<optimized out>) at src/ev_epoll.c:250
        timeout = 1001
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 1001
        old_fd = <optimized out>
        __func__ = {<optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>}
#2  0x000055555588055b in run_poll_loop () at src/haproxy.c:2929
        next = <optimized out>
        wake = <optimized out>
        __func__ = {<optimized out> <repeats 14 times>}
#3  0x0000555555880cc1 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3071
        ptaf = <optimized out>
        ptif = 0x555555e83930 <per_thread_init_list>
        ptdf = <optimized out>
        ptff = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
        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 = 55, __wseq32 = {__low = 55, __high = 0}}, {__g1_start = 43, __g1_start32 = {__low = 43, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 24, __wrefs = 0, __g_signals = {0, 0}}, __size = "7\000\000\000\000\000\000\000+", '\000' <repeats 23 times>, "\030", '\000' <repeats 14 times>, __align = 55}
#4  0x00007ffff7d08802 in start_thread () from /lib64/libc.so.6
No symbol table info available.
#5  0x00007ffff7ca8450 in clone3 () from /lib64/libc.so.6
No symbol table info available.

Thread 8 (Thread 0x7fffe7fff640 (LWP 544619) "haproxy"):
#0  0x00007ffff7db783e in epoll_wait () from /lib64/libc.so.6
No symbol table info available.
#1  0x00005555556a0cf2 in _do_poll (p=<optimized out>, exp=<optimized out>, wake=<optimized out>) at src/ev_epoll.c:250
        timeout = 60000
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 60000
        old_fd = <optimized out>
        __func__ = {<optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, --Type <RET> for more, q to quit, c to continue without paging--
<optimized out>}
#2  0x000055555588055b in run_poll_loop () at src/haproxy.c:2929
        next = <optimized out>
        wake = <optimized out>
        __func__ = {<optimized out> <repeats 14 times>}
#3  0x0000555555880cc1 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3071
        ptaf = <optimized out>
        ptif = 0x555555e83930 <per_thread_init_list>
        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 = 55, __wseq32 = {__low = 55, __high = 0}}, {__g1_start = 43, __g1_start32 = {__low = 43, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 24, __wrefs = 0, __g_signals = {0, 0}}, __size = "7\000\000\000\000\000\000\000+", '\000' <repeats 23 times>, "\030", '\000' <repeats 14 times>, __align = 55}
#4  0x00007ffff7d08802 in start_thread () from /lib64/libc.so.6
No symbol table info available.
#5  0x00007ffff7ca8450 in clone3 () from /lib64/libc.so.6
No symbol table info available.

Thread 7 (Thread 0x7ffff4edb640 (LWP 544618) "haproxy"):
#0  0x00005555556b0809 in ssl_sock_put_ckch_into_ctx (err=0x7fffdc03f2c0, ctx=0x7fffdc047480, store=0x5555569c45b0, path=0x5555569c4650 "haproxy.pem") at sr--Type <RET> for more, q to quit, c to continue without paging--
c/ssl_sock.c:2785
        errcode = 0
        data = 0x5555569c4
        find_chain = 0x0
        errcode = <optimized out>
        data = <optimized out>
        find_chain = <optimized out>
        end = <optimized out>
        ret = <optimized out>
#1  ckch_inst_new_load_store (path=0x5555569c4650 "haproxy.pem", ckchs=0x5555569c45b0, bind_conf=0x5555569c3f80, ssl_conf=0x0, sni_filter=0x0, fcount=0, is_default=1, ckchi=0x7ffff4ecfe40, err=0x7fffdc03f2c0) at src/ssl_sock.c:2931
        ctx = 0x7fffdc047480
        i = <optimized out>
        order = 0
        xname = <optimized out>
        str = 0x555556c2f510 "ca.crt"
        pkey = <optimized out>
        kinfo = {sig = <optimized out>, bits = <optimized out>}
        names = <optimized out>
        data = 0x5555569c4
        ckch_inst = 0x0
        errcode = 0
        error = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
#2  0x00005555556c122a in ckch_inst_rebuild (ckch_store=<optimized out>, ckchi=0x7ffff004f190, new_inst=new_inst@entry=0x7ffff4ecfe40, err=err@entry=0x7fffdc03f2c0) at src/ssl_ckch.c:2587
        retval = 0
        errcode = 0
        sc0 = <optimized out>
        sc0s = <optimized out>
        sni_filter = <optimized out>
        fcount = <optimized out>
#3  0x00005555556c15c1 in cli_io_handler_commit_cafile_crlfile (appctx=0x7fffdc03f1a0) at src/ssl_ckch.c:3484
        new_inst = 0x0
        ctx = 0x7fffdc03f2a0
        y = 0
        old_cafile_entry = 0x555556c2f4c0
        new_cafile_entry = <optimized out>
        ckchi_link = 0x7ffff004fde0
        path = <optimized out>
        yield = <optimized out>
        end = <optimized out>
#4  0x0000555555826dfe in cli_io_handler (appctx=0x7fffdc03f1a0) at src/cli.c:1202
        ctx = <optimized out>
        msg = <optimized out>
        sev = <optimized out>
        __func__ = {<optimized out> <repeats 15 times>}
--Type <RET> for more, q to quit, c to continue without paging--
#5  0x000055555588bd33 in task_process_applet (t=0x7fffdc03f3b0, context=0x7fffdc03f1a0, state=<optimized out>) at src/applet.c:920
        app = 0x7fffdc03f1a0
        sc = <optimized out>
        rate = <optimized out>
        __FUNCTION__ = "task_process_applet"
        __func__ = {<optimized out> <repeats 20 times>}
#6  0x0000555555919aa5 in run_tasks_from_lists (budgets=budgets@entry=0x7ffff4ecffe0) at src/task.c:659
        process = <optimized out>
        tl_queues = <optimized out>
        t = 0x7fffdc03f3b0
        budget_mask = <optimized out>
        profile_entry = 0x0
        done = <optimized out>
        queue = <optimized out>
        state = <optimized out>
        ctx = <optimized out>
        __func__ = {<optimized out> <repeats 21 times>}
#7  0x000055555591a81b in process_runnable_tasks () at src/task.c:892
        tt = 0x5555566ed780 <ha_thread_ctx+2560>
        lrq = <optimized out>
        grq = <optimized out>
        t = <optimized out>
        max = {0, 68, 23, 0}
--Type <RET> for more, q to quit, c to continue without paging--
        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>
        not_done_yet = <optimized out>
        __lk_r = <optimized out>
        __set_r = <optimized out>
        __msk_r = <optimized out>
#8  0x0000555555880599 in run_poll_loop () at src/haproxy.c:2851
        next = <optimized out>
        wake = <optimized out>
        __func__ = {<optimized out> <repeats 14 times>}
#9  0x0000555555880cc1 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3071
        ptaf = <optimized out>
        ptif = 0x555555e83930 <per_thread_init_list>
        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 =--Type <RET> for more, q to quit, c to continue without paging--
 0x0}}, __size = '\000' <repeats 39 times>, __align = 0}
        init_cond = {__data = {{__wseq = 55, __wseq32 = {__low = 55, __high = 0}}, {__g1_start = 43, __g1_start32 = {__low = 43, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 24, __wrefs = 0, __g_signals = {0, 0}}, __size = "7\000\000\000\000\000\000\000+", '\000' <repeats 23 times>, "\030", '\000' <repeats 14 times>, __align = 55}
#10 0x00007ffff7d08802 in start_thread () from /lib64/libc.so.6
No symbol table info available.
#11 0x00007ffff7ca8450 in clone3 () from /lib64/libc.so.6
No symbol table info available.

Thread 6 (Thread 0x7ffff5717640 (LWP 544617) "haproxy"):
#0  0x00007ffff7db783e in epoll_wait () from /lib64/libc.so.6
No symbol table info available.
#1  0x00005555556a0cf2 in _do_poll (p=<optimized out>, exp=<optimized out>, wake=<optimized out>) at src/ev_epoll.c:250
        timeout = 60000
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 60000
        old_fd = <optimized out>
        __func__ = {<optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>}
#2  0x000055555588055b in run_poll_loop () at src/haproxy.c:2929
--Type <RET> for more, q to quit, c to continue without paging--
        next = <optimized out>
        wake = <optimized out>
        __func__ = {<optimized out> <repeats 14 times>}
#3  0x0000555555880cc1 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3071
        ptaf = <optimized out>
        ptif = 0x555555e83930 <per_thread_init_list>
        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 = 55, __wseq32 = {__low = 55, __high = 0}}, {__g1_start = 43, __g1_start32 = {__low = 43, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 24, __wrefs = 0, __g_signals = {0, 0}}, __size = "7\000\000\000\000\000\000\000+", '\000' <repeats 23 times>, "\030", '\000' <repeats 14 times>, __align = 55}
#4  0x00007ffff7d08802 in start_thread () from /lib64/libc.so.6
No symbol table info available.
#5  0x00007ffff7ca8450 in clone3 () from /lib64/libc.so.6
No symbol table info available.

Thread 5 (Thread 0x7ffff5f53640 (LWP 544616) "haproxy"):
#0  0x00007ffff7db783e in epoll_wait () from /lib64/libc.so.6
No symbol table info available.
#1  0x00005555556a0cf2 in _do_poll (p=<optimized out>, exp=<optimized out>, wake=<optimized out>) at src/ev_epoll.c:250
--Type <RET> for more, q to quit, c to continue without paging--
        timeout = 60000
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 60000
        old_fd = <optimized out>
        __func__ = {<optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>}
#2  0x000055555588055b in run_poll_loop () at src/haproxy.c:2929
        next = <optimized out>
        wake = <optimized out>
        __func__ = {<optimized out> <repeats 14 times>}
#3  0x0000555555880cc1 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3071
        ptaf = <optimized out>
        ptif = 0x555555e83930 <per_thread_init_list>
        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 = 55, __wseq32 = {__low = 55, __high = 0}}, {__g1_start = 43, __g1_start32 = {__low = 43, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 24, __wrefs = 0, __g_signals = {0, 0}}, __size = "7\000\000\000\000\000\000\000+", '\000' <repeats 23 times>, "\03--Type <RET> for more, q to quit, c to continue without paging--
0", '\000' <repeats 14 times>, __align = 55}
#4  0x00007ffff7d08802 in start_thread () from /lib64/libc.so.6
No symbol table info available.
#5  0x00007ffff7ca8450 in clone3 () from /lib64/libc.so.6
No symbol table info available.

Thread 4 (Thread 0x7ffff6754640 (LWP 544615) "haproxy"):
#0  0x00007ffff7db783e in epoll_wait () from /lib64/libc.so.6
No symbol table info available.
#1  0x00005555556a0cf2 in _do_poll (p=<optimized out>, exp=<optimized out>, wake=<optimized out>) at src/ev_epoll.c:250
        timeout = 60000
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 60000
        old_fd = <optimized out>
        __func__ = {<optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>}
#2  0x000055555588055b in run_poll_loop () at src/haproxy.c:2929
        next = <optimized out>
        wake = <optimized out>
        __func__ = {<optimized out> <repeats 14 times>}
--Type <RET> for more, q to quit, c to continue without paging--
#3  0x0000555555880cc1 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3071
        ptaf = <optimized out>
        ptif = 0x555555e83930 <per_thread_init_list>
        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 = 55, __wseq32 = {__low = 55, __high = 0}}, {__g1_start = 43, __g1_start32 = {__low = 43, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 24, __wrefs = 0, __g_signals = {0, 0}}, __size = "7\000\000\000\000\000\000\000+", '\000' <repeats 23 times>, "\030", '\000' <repeats 14 times>, __align = 55}
#4  0x00007ffff7d08802 in start_thread () from /lib64/libc.so.6
No symbol table info available.
#5  0x00007ffff7ca8450 in clone3 () from /lib64/libc.so.6
No symbol table info available.

Thread 3 (Thread 0x7ffff7c5b640 (LWP 544614) "haproxy"):
#0  0x00007ffff7db783e in epoll_wait () from /lib64/libc.so.6
No symbol table info available.
#1  0x00005555556a0cf2 in _do_poll (p=<optimized out>, exp=<optimized out>, wake=<optimized out>) at src/ev_epoll.c:250
        timeout = 60000
        status = <optimized out>
        fd = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 60000
        old_fd = <optimized out>
        __func__ = {<optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>}
#2  0x000055555588055b in run_poll_loop () at src/haproxy.c:2929
        next = <optimized out>
        wake = <optimized out>
        __func__ = {<optimized out> <repeats 14 times>}
#3  0x0000555555880cc1 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3071
        ptaf = <optimized out>
        ptif = 0x555555e83930 <per_thread_init_list>
        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 = 55, __wseq32 = {__low = 55, __high = 0}}, {__g1_start = 43, __g1_start32 = {__low = 43, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 24, __wrefs = 0, __g_signals = {0, 0}}, __size = "7\000\000\000\000\000\000\000+", '\000' <repeats 23 times>, "\030", '\000' <repeats 14 times>, __align = 55}
#4  0x00007ffff7d08802 in start_thread () from /lib64/libc.so.6
No symbol table info available.
--Type <RET> for more, q to quit, c to continue without paging--
#5  0x00007ffff7ca8450 in clone3 () from /lib64/libc.so.6
No symbol table info available.

Thread 1 (Thread 0x7ffff7c67480 (LWP 544609) "haproxy"):
#0  0x00007ffff7db783e in epoll_wait () from /lib64/libc.so.6
No symbol table info available.
#1  0x00005555556a0cf2 in _do_poll (p=<optimized out>, exp=<optimized out>, wake=<optimized out>) at src/ev_epoll.c:250
        timeout = 60000
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 60000
        old_fd = <optimized out>
        __func__ = {<optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>, <optimized out>}
#2  0x000055555588055b in run_poll_loop () at src/haproxy.c:2929
        next = <optimized out>
        wake = <optimized out>
        __func__ = {<optimized out> <repeats 14 times>}
#3  0x0000555555880cc1 in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3071
        ptaf = <optimized out>
        ptif = 0x555555e83930 <per_thread_init_list>
--Type <RET> for more, q to quit, c to continue without paging--
        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 = 55, __wseq32 = {__low = 55, __high = 0}}, {__g1_start = 43, __g1_start32 = {__low = 43, __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 24, __wrefs = 0, __g_signals = {0, 0}}, __size = "7\000\000\000\000\000\000\000+", '\000' <repeats 23 times>, "\030", '\000' <repeats 14 times>, __align = 55}
#4  0x000055555569e479 in main (argc=<optimized out>, argv=<optimized out>) at src/haproxy.c:3685
        devnullfd = <optimized out>
        limit = {rlim_cur = 1048576, rlim_max = 1048576}
        intovf = <optimized out>
        cfg = <optimized out>
        cfg_tmp = <optimized out>
        tmp_startup_logs = <optimized out>
        proc = <optimized out>
        msg = 0x555555c8d2db "READY\n"
        msg = <optimized out>
(gdb) 
(gdb) quit

Additional Information

The crash occurs even when no packets or messages are sent to HAProxy from the outside, and it happens immediately when the script is executed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    2.4This issue affects the HAProxy 2.4 stable branch.2.6This issue affects the HAProxy 2.6 stable branch.2.8This issue affects the HAProxy 2.8 stable branch.3.0This issue affects the HAProxy 3.0 stable branch.3.1This issue affects the HAProxy 3.1 stable branch.3.2The issue affects the HAProxy 3.2 stable branch.status: fixedThis issue is a now-fixed bug.type: bugThis issue describes a bug.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions