HAP 2.7.1 crashed under load · Issue #2011 · haproxy/haproxy · GitHub
Skip to content

HAP 2.7.1 crashed under load #2011

Closed
Closed

Description

@xanaxalan

Detailed Description of the Problem

We started to upgrade our current hap to 2.7.1 and on machines with low to moderate traffic no problems were detected. I did a roll out on a system which can have more load and after the upgrade it crashed. I restarted and it was fine for couple of days and then under higher load it crashed again. I have core dump from the crash.

Expected Behavior

(≖_≖ )

Steps to Reproduce the Behavior

I don't have a way to reproduce it.

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 36
  setenv TUNED_WEIGHT 98
  setenv val1_WEIGHT 50
  setenv val2_WEIGHT 20
  setenv val4_WEIGHT 30
  setenv val3_WEIGHT 10

listen dummy
  timeout connect 10ms
  timeout client  10ms
  timeout server  10ms
  bind 0.0.0.0:0

peers machines
  peer x x.x.x:x
  peer x x.x.x:x
  peer x x.x.x:x
  peer x x.x.x:x
  table peer-static type ip size 1m expire xs store gpc0,gpt0,gpc0_rate(xs),http_req_rate(xs),http_err_rate(xs),http_err_cnt,conn_cur,conn_rate(xs),sess_cnt,sess_rate(xs)
  table peer-netrep type ip size 1m expire xs store gpc0,gpt0,gpc0_rate(xs)

   log         0.0.0.0 local1 notice alert
    log         0.0.0.0 local2 info alert

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     250000
    user        haproxy
    group       haproxy
    daemon
    set-dumpable

    maxsslconn  500000
    tune.ssl.cachesize 5000000
    tune.ssl.default-dh-param 2048
    ssl-default-bind-options no-tls-tickets ssl-min-ver TLSv1.2
    ssl-default-bind-ciphers x
    stats socket /var/lib/haproxy/stats mode 0660 user haproxy group haproxy level admin

    tune.maxrewrite x

    tune.h2.max-concurrent-streams x

    tune.http.logurilen x

    ca-base /etc/pki/tls/certs/

defaults
    mode                    http
    log                     global
    no option               dontlognull
    option                  http-server-close
    option                  redispatch x
    option                  allbackups
    retries                 x
    timeout http-request    xs
    timeout queue           xs
    timeout connect         x
    timeout client          xs
    timeout server          xs
    timeout client-fin      xs
    timeout server-fin      xs
    timeout http-keep-alive xs
    timeout check           xs
    maxconn                 x
    option                  abortonclose
    option                  tcp-smart-connect
    hash-balance-factor     x
    hash-type               consistent
    errorfile 408 408_file.http
    errorfile 503 503_file.http

    default-server ca-file file.crt check check-ssl ssl verify required maxqueue 1
frontend me-https
    bind        0.0.0.0:0
    bind        0.0.0.0:0   ssl alpn http/1.1 crt file.pem
    bind        0.0.0.0:0 ssl alpn http/1.1 crt file.pem accept-proxy
    mode        http
    maxconn     x
    rate-limit sessions x
    log-format  "%{+Q}o %{-Q}ci - - [%trg] %r %ST %B \"\" \"\" %cp %ms %ft %b %s %TR %Tw %Tc %Tr %Ta %tsc %ac %fc %bc %sc %rc %sq %bq %CC %CS %hrl %hsl %sslv %sslc %[ssl_fc_session_id,base64] %[ssl_fc_sni]  %[var(txn.custom)]"

    tcp-request inspect-delay xs

    #### ACL AND HEADER SETTINGS

    http-request redirect code 301 location https://x if path1
    http-request redirect code 301 location https://x if path2
    http-request redirect code 301 location https://x

frontend redirect-www-http
    bind        0.0.0.0:0
    bind        0.0.0.0:0
    mode        http
    log-format  "%{+Q}o %{-Q}ci - - [%trg] %r %ST %B \"\" \"\" %cp %ms %ft %b %s %TR %Tw %Tc %Tr %Ta %tsc %ac %fc %bc %sc %rc %sq %bq %CC %CS"

    redirect    location https://x     code 301 if { hdr(host) -i x  }
    redirect    location https://x     code 301 if { hdr_end(host) -i x }
    redirect    location https://x     code 301 if { hdr_end(host) -i x }
    redirect    location https://x     code 301 if { hdr_end(host) -i x }
    redirect    location https://x     code 301 if { hdr_end(host) -i x }
    redirect    location https://x     code 301 if { hdr_end(host) -i x }
    redirect    location https://x     code 301 if { hdr_end(host) -i x  }
    redirect    location https://x     code 301


frontend com-http
    bind        0.0.0.0:0
    mode        http
    log-format  "%{+Q}o %{-Q}ci - - [%trg] %r %ST %B \"\" \"\" %cp %ms %ft %b %s %TR %Tw %Tc %Tr %Ta %tsc %ac %fc %bc %sc %rc %sq %bq %CC %CS  %[var(txn.custom)]"

    ## time to get full path
    tcp-request inspect-delay xs

    ## ACL HEADERS etc ###

    redirect    prefix https://x code 301

frontend com-https
    bind        0.0.0.0:0   ssl alpn http/1.1 crt file.pem
    bind        0.0.0.0:0 ssl alpn http/1.1 crt file.pem accept-proxy
    mode        http

    timeout http-keep-alive xs
    timeout http-request xs

    tcp-request inspect-delay xs

    log-format  "%{+Q}o %{-Q}ci - - [%trg] %r %ST %B \"\" \"\" %cp %ms %ft %b %s %TR %Tw %Tc %Tr %Ta %tsc %ac %fc %bc %sc %rc %sq %bq %CC %CS %hrl %hsl %sslv %sslc %[ssl_fc_session_id,base64] %[ssl_fc_sni]  %[var(txn.custom)]"

    ### ACLs HEADERS etc ##

    default_backend com-https-servers
backend com-https-servers
    mode        http
    balance     source
    option      httpchk
    http-check  connect port x ssl sni x
    http-check  send meth HEAD uri /x ver HTTP/1.1 hdr Host x
    http-check  expect status 200-399
    http-check  comment comment
    http-check  disable-on-404

    default-server sni x check-sni x maxconn 100

    server   server1           x:443  weight "${val1_WEIGHT}" backup
    server   server2           x:443  weight "${val1_WEIGHT}" backup
    server   server3           x:443  weight "${val1_WEIGHT}" backup
    server   server4           x:443  weight "${val1_WEIGHT}" backup
    server   server5           x:443  weight "${val1_WEIGHT}" backup
    server   server6           x:443  weight "${val1_WEIGHT}" backup
    server   server7           x:443  weight "${val2_WEIGHT}" backup
    server   server8           x:443  weight "${val1_WEIGHT}" backup
    server   server9           x:443  weight "${val2_WEIGHT}" backup
    server   server10          x:443  weight "${val2_WEIGHT}" backup
    server   server11          x:443  weight "${val2_WEIGHT}" backup
    server   server12          x:443  weight "${val3_WEIGHT}" backup
    server   server13          x:443  weight "${val3_WEIGHT}" backup
    server   server14          x:443  weight "${val4_WEIGHT}" backup
    server   server15          x:443  weight "${val4_WEIGHT}" backup
    server   server16          x:443  weight "${val4_WEIGHT}" backup
    server   server17          x:443  weight "${val4_WEIGHT}" backup
    server   server18          x:443  weight "${val4_WEIGHT}" backup
    server   server19          x:443  weight "${val3_WEIGHT}" backup
    server   server20          x:443  weight "${val3_WEIGHT}" backup
    server   server21          x:443  weight "${val2_WEIGHT}" backup
    server   server22          x:443  weight "${val2_WEIGHT}" backup
    server   server23          x:443  weight "${val3_WEIGHT}" backup
    server   s-01  x:443 weight "${val1_WEIGHT}" maxconn 1000
    server   s-02  x:443 weight "${val4_WEIGHT}"  maxconn 1000
    server   s-03  x:443 weight "${val1_WEIGHT}" maxconn 1000
    server   s-04  x:443 weight "${val4_WEIGHT}"  maxconn 1000

Output of haproxy -vv

haproxy -vv
HAProxy version 2.7.1-3e4af0e 2022/12/19 - https://haproxy.org/
Status: stable branch - will stop receiving fixes around Q1 2024.
Known bugs: http://www.haproxy.org/bugs/bugs-2.7.1.html
Running on: Linux 4.18.0-372.26.1.el8_6.x86_64 #1 SMP Tue Sep 13 18:09:48 UTC 2022 x86_64
Build options :
  TARGET  = linux-glibc
  CPU     = generic
  CC      = cc
  CFLAGS  = -O2 -g -Wall -Wextra -Wundef -Wdeclaration-after-statement -Wfatal-errors -Wtype-limits -fwrapv -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
  OPTIONS = USE_PCRE=1 USE_OPENSSL=1 USE_LUA=1 USE_ZLIB=1 USE_TFO=1 USE_SYSTEMD=1 USE_OT=1 USE_PROMEX=1
  DEBUG   = -DDEBUG_STRICT -DDEBUG_MEMORY_POOLS

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 -OPENSSL_WOLFSSL +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=2).
Built with OpenSSL version : OpenSSL 1.1.1s  1 Nov 2022
Running on OpenSSL version : OpenSSL 1.1.1s  1 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.4.4
Built with the Prometheus exporter as a service
Built with network namespace support.
Built with OpenTracing support.
Support for malloc_trim() is enabled.
Built with zlib version : 1.2.7
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 with PCRE version : 8.32 2012-11-30
Running on PCRE version : 8.42 2018-03-20
PCRE library supports JIT : no (USE_PCRE_JIT not set)
Encrypted password support via crypt(3): yes
Built with gcc compiler version 4.8.5 20150623 (Red Hat 4.8.5-44)

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
       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 :
        [BWLIM] bwlim-in
        [BWLIM] bwlim-out
        [CACHE] cache
        [COMP] compression
        [FCGI] fcgi-app
        [  OT] opentracing
        [SPOE] spoe
        [TRACE] trace

Last Outputs and Backtraces

Hap LOG:
 Thread 4 is about to kill the process.
  Thread 1 
      1/1    stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 2 
      1/2    stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 3 
      1/3    stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
 * Thread 4 
      1/4    stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 5 
      1/5    stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 6 
      1/6    stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 7 
      1/7    stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 8 
      1/8    stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 9 
      1/9    stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 10
      1/10   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 11
      1/11   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 12
      1/12   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 13
      1/13   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 14
      1/14   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 15
      1/15   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 16
      1/16   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 17
      1/17   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 18
      1/18   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 19
      1/19   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 20
      1/20   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 21
      1/21   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 22
      1/22   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 23
      1/23   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0x7f6034657c60 (task) calls=2 last=0
               fct=0x55698818ffe0(process_stream) ctx=(nil)
  Thread 24
      1/24   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 25
      1/25   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 26
      1/26   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 27
      1/27   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 28
      1/28   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 29
      1/29   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 30
      1/30   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 31
      1/31   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 32
      1/32   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 33
      1/33   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 34
      1/34   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 35
      1/35   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
  Thread 36
      1/36   stuck=0 prof=0 harmless=0 wantrdv=0
             cpu_ns
             curr_task=0
haproxy version is 2.7.1-3e4af0e
 path to executable is 
 Current worker (512411) exited with code 134 (Aborted)
 exit-on-failure
 All workers exited. Exiting... (134)



(gdb) t a a bt full

Thread 36 (Thread 0x7f60497f2700 (LWP 512446)):
#0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744056529682432) at include/import/plock.h:93
        loops = 62664
        ret = <optimized out>
        m = 135842
#1  0x000055698825d6cd in listener_accept (l=0x556989325f90) at src/listener.c:963
        __lk_r = 0x556989325fa0
        __set_r = 4
        __msk_r = 18446744056529682432
        count = 9
        status = 5
        mask = <optimized out>
        cli_conn = 0x0
        p = 0x556989324470
        max_accept = 4
        next_conn = 10
        next_feconn = <optimized out>
        next_actconn = <optimized out>
        expire = <optimized out>
        ret = <optimized out>
        __func__ = "listener_accept"
#2  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
        locked = <optimized out>
        old = 1179939
        new = <optimized out>
        new_flags = <optimized out>
        must_stop = 0
        rmask = 12954663424
        tmask = <optimized out>
#3  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
        n = <optimized out>
        e = <optimized out>
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 24
        old_fd = <optimized out>
#4  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
        next = <optimized out>
        wake = <optimized out>
        __func__ = "run_poll_loop"
#5  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
        ptaf = <optimized out>
        ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
#6  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#7  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
No symbol table info available.
#8  0x0000000000000000 in ?? ()
No symbol table info available.

Thread 35 (Thread 0x7f6049ff3700 (LWP 512445)):
#0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
        loops = 40987
        ret = <optimized out>
        m = 203765
#1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
        __lk_r = 0x556989325fa0
        __pl_r = <optimized out>
#2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
        cli_conn = <optimized out>
        p = 0x556989324470
        max_accept = 31
        next_conn = 31
        next_feconn = 0
        next_actconn = 0
        expire = 0
        ret = <optimized out>
        __func__ = "listener_accept"
#3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
        locked = <optimized out>
        old = 1179939
        new = <optimized out>
        new_flags = <optimized out>
        must_stop = 0
        rmask = 51518504831
        tmask = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--c
#4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
        n = <optimized out>
        e = <optimized out>
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 24
        old_fd = <optimized out>
#5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
        next = <optimized out>
        wake = <optimized out>
        __func__ = "run_poll_loop"
#6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
        ptaf = <optimized out>
        ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
#7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
No symbol table info available.
#9  0x0000000000000000 in ?? ()
No symbol table info available.

Thread 34 (Thread 0x7f604a7f4700 (LWP 512444)):
#0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744056529682432) at include/import/plock.h:93
        loops = 45574
        ret = <optimized out>
        m = 145602
#1  0x000055698825d6cd in listener_accept (l=0x556989325f90) at src/listener.c:963
        __lk_r = 0x556989325fa0
        __set_r = 4
        __msk_r = 18446744056529682432
        count = 2
        status = 5
        mask = <optimized out>
        cli_conn = 0x0
        p = 0x556989324470
        max_accept = 4
        next_conn = 3
        next_feconn = <optimized out>
        next_actconn = <optimized out>
        expire = <optimized out>
        ret = <optimized out>
        __func__ = "listener_accept"
#2  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
        locked = <optimized out>
        old = 1179939
        new = <optimized out>
        new_flags = <optimized out>
        must_stop = 0
        rmask = 2109440
        tmask = <optimized out>
#3  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
        n = <optimized out>
        e = <optimized out>
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 22
        old_fd = <optimized out>
#4  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
        next = <optimized out>
        wake = <optimized out>
        __func__ = "run_poll_loop"
#5  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
        ptaf = <optimized out>
        ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
#6  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#7  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
No symbol table info available.
#8  0x0000000000000000 in ?? ()
No symbol table info available.

Thread 33 (Thread 0x7f604aff5700 (LWP 512443)):
#0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744056529682432) at include/import/plock.h:93
        loops = 1155
        ret = <optimized out>
        m = 201593
#1  0x000055698825d6cd in listener_accept (l=0x556989325f90) at src/listener.c:963
        __lk_r = 0x556989325fa0
        __set_r = 4
        __msk_r = 18446744056529682432
        count = 6
        status = 5
        mask = <optimized out>
        cli_conn = 0x0
        p = 0x556989324470
        max_accept = 4
        next_conn = 7
        next_feconn = <optimized out>
        next_actconn = <optimized out>
        expire = <optimized out>
        ret = <optimized out>
        __func__ = "listener_accept"
#2  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
        locked = <optimized out>
        old = 1179939
        new = <optimized out>
        new_flags = <optimized out>
        must_stop = 0
        rmask = 8592570880
        tmask = <optimized out>
#3  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
        n = <optimized out>
        e = <optimized out>
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 24
        old_fd = <optimized out>
#4  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
        next = <optimized out>
        wake = <optimized out>
        __func__ = "run_poll_loop"
#5  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
        ptaf = <optimized out>
        ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
#6  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#7  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
No symbol table info available.
#8  0x0000000000000000 in ?? ()
No symbol table info available.

Thread 32 (Thread 0x7f604b7f6700 (LWP 512442)):
#0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
        loops = 166417
        ret = <optimized out>
        m = 203765
#1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
        __lk_r = 0x556989325fa0
        __pl_r = <optimized out>
#2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
        cli_conn = <optimized out>
        p = 0x556989324470
        max_accept = 11
        next_conn = 11
        next_feconn = 0
        next_actconn = 0
        expire = 0
        ret = <optimized out>
        __func__ = "listener_accept"
#3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
        locked = <optimized out>
        old = 1179939
        new = <optimized out>
        new_flags = <optimized out>
        must_stop = 0
        rmask = 47314401792
        tmask = <optimized out>
#4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
        n = <optimized out>
        e = <optimized out>
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 24
        old_fd = <optimized out>
#5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
        next = <optimized out>
        wake = <optimized out>
        __func__ = "run_poll_loop"
#6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
        ptaf = <optimized out>
        ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
#7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
No symbol table info available.
#9  0x0000000000000000 in ?? ()
No symbol table info available.

Thread 31 (Thread 0x7f604bff7700 (LWP 512441)):
#0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
        loops = 39283
        ret = <optimized out>
        m = 88631
#1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
        __lk_r = 0x556989325fa0
        __pl_r = <optimized out>
#2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
        cli_conn = <optimized out>
        p = 0x556989324470
        max_accept = 14
        next_conn = 14
        next_feconn = 0
        next_actconn = 0
        expire = 0
        ret = <optimized out>
        __func__ = "listener_accept"
#3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
        locked = <optimized out>
        old = 1179939
        new = <optimized out>
        new_flags = <optimized out>
        must_stop = 0
        rmask = 50132974080
        tmask = <optimized out>
#4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
        n = <optimized out>
        e = <optimized out>
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 24
        old_fd = <optimized out>
#5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
        next = <optimized out>
        wake = <optimized out>
        __func__ = "run_poll_loop"
#6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
        ptaf = <optimized out>
        ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
#7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
No symbol table info available.
#9  0x0000000000000000 in ?? ()
No symbol table info available.

Thread 30 (Thread 0x7f604c7f8700 (LWP 512440)):
#0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
        loops = 14294
        ret = <optimized out>
        m = 135842
#1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
        __lk_r = 0x556989325fa0
        __pl_r = <optimized out>
#2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
        cli_conn = <optimized out>
        p = 0x556989324470
        max_accept = 13
        next_conn = 13
        next_feconn = 0
        next_actconn = 0
        expire = 0
        ret = <optimized out>
        __func__ = "listener_accept"
#3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
        locked = <optimized out>
        old = 1179939
        new = <optimized out>
        new_flags = <optimized out>
        must_stop = 0
        rmask = 49596103168
        tmask = <optimized out>
#4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
        n = <optimized out>
        e = <optimized out>
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 24
        old_fd = <optimized out>
#5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
        next = <optimized out>
        wake = <optimized out>
        __func__ = "run_poll_loop"
#6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
        ptaf = <optimized out>
        ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
#7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
No symbol table info available.
#9  0x0000000000000000 in ?? ()
No symbol table info available.

Thread 29 (Thread 0x7f604cff9700 (LWP 512439)):
#0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
        loops = 181717
        ret = <optimized out>
        m = 218405
#1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
        __lk_r = 0x556989325fa0
        __pl_r = <optimized out>
#2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
        cli_conn = <optimized out>
        p = 0x556989324470
        max_accept = 20
        next_conn = 20
        next_feconn = 0
        next_actconn = 0
        expire = 0
        ret = <optimized out>
        __func__ = "listener_accept"
#3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
        locked = <optimized out>
        old = 1179939
        new = <optimized out>
        new_flags = <optimized out>
        must_stop = 0
        rmask = 51216481024
        tmask = <optimized out>
#4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
        n = <optimized out>
        e = <optimized out>
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 24
        old_fd = <optimized out>
#5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
        next = <optimized out>
        wake = <optimized out>
        __func__ = "run_poll_loop"
#6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
        ptaf = <optimized out>
        ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
#7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
No symbol table info available.
#9  0x0000000000000000 in ?? ()
No symbol table info available.

Thread 28 (Thread 0x7f604d7fa700 (LWP 512438)):
#0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
        loops = 3125
        ret = <optimized out>
        m = 201593
#1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
        __lk_r = 0x556989325fa0
        __pl_r = <optimized out>
#2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
        cli_conn = <optimized out>
        p = 0x556989324470
        max_accept = 12
        next_conn = 12
        next_feconn = 0
        next_actconn = 0
        expire = 0
        ret = <optimized out>
        __func__ = "listener_accept"
#3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
        locked = <optimized out>
        old = 1179939
        new = <optimized out>
        new_flags = <optimized out>
        must_stop = 0
        rmask = 49461885440
        tmask = <optimized out>
#4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
        n = <optimized out>
        e = <optimized out>
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 24
        old_fd = <optimized out>
#5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
        next = <optimized out>
        wake = <optimized out>
        __func__ = "run_poll_loop"
#6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
        ptaf = <optimized out>
        ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
#7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
No symbol table info available.
#9  0x0000000000000000 in ?? ()
No symbol table info available.

Thread 27 (Thread 0x7f604dffb700 (LWP 512437)):
#0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744056529682432) at include/import/plock.h:93
        loops = 16428
        ret = <optimized out>
        m = 39818
#1  0x000055698825d6cd in listener_accept (l=0x556989325f90) at src/listener.c:963
        __lk_r = 0x556989325fa0
        __set_r = 4
        __msk_r = 18446744056529682432
        count = 7
        status = 5
        mask = <optimized out>
        cli_conn = 0x0
        p = 0x556989324470
        max_accept = 4
        next_conn = 8
        next_feconn = <optimized out>
        next_actconn = <optimized out>
        expire = <optimized out>
        ret = <optimized out>
        __func__ = "listener_accept"
#2  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
        locked = <optimized out>
        old = 1179939
        new = <optimized out>
        new_flags = <optimized out>
        must_stop = 0
        rmask = 12887538176
        tmask = <optimized out>
#3  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615789, wake=0) at src/ev_epoll.c:268
        n = <optimized out>
        e = <optimized out>
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 3
        old_fd = <optimized out>
#4  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
        next = <optimized out>
        wake = <optimized out>
        __func__ = "run_poll_loop"
#5  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
        ptaf = <optimized out>
        ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
#6  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#7  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
No symbol table info available.
#8  0x0000000000000000 in ?? ()
No symbol table info available.

Thread 26 (Thread 0x7f604e7fc700 (LWP 512436)):
#0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:94
        loops = 33767
        ret = <optimized out>
        m = 40247
#1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
        __lk_r = 0x556989325fa0
        __pl_r = <optimized out>
#2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
        cli_conn = <optimized out>
        p = 0x556989324470
        max_accept = 27
        next_conn = 27
        next_feconn = 0
        next_actconn = 0
        expire = 0
        ret = <optimized out>
        __func__ = "listener_accept"
#3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
        locked = <optimized out>
        old = 1179939
        new = <optimized out>
        new_flags = <optimized out>
        must_stop = 0
        rmask = 51484917595
        tmask = <optimized out>
#4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
        n = <optimized out>
        e = <optimized out>
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 24
        old_fd = <optimized out>
#5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
        next = <optimized out>
        wake = <optimized out>
        __func__ = "run_poll_loop"
#6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
        ptaf = <optimized out>
        ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
#7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
No symbol table info available.
#9  0x0000000000000000 in ?? ()
No symbol table info available.

Thread 25 (Thread 0x7f604effd700 (LWP 512435)):
#0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
        loops = 99891
        ret = <optimized out>
        m = 233849
#1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
        __lk_r = 0x556989325fa0
        __pl_r = <optimized out>
#2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
        cli_conn = <optimized out>
        p = 0x556989324470
        max_accept = 32
        next_conn = 32
        next_feconn = 0
        next_actconn = 0
        expire = 0
        ret = <optimized out>
        __func__ = "listener_accept"
#3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
        locked = <optimized out>
        old = 1179939
        new = <optimized out>
        new_flags = <optimized out>
        must_stop = 0
        rmask = 68698374015
        tmask = <optimized out>
#4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
        n = <optimized out>
        e = <optimized out>
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 24
        old_fd = <optimized out>
#5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
        next = <optimized out>
        wake = <optimized out>
        __func__ = "run_poll_loop"
#6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
        ptaf = <optimized out>
        ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
#7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
No symbol table info available.
#9  0x0000000000000000 in ?? ()
No symbol table info available.

Thread 24 (Thread 0x7f604f7fe700 (LWP 512434)):
#0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
        loops = 106570
        ret = <optimized out>
        m = 230328
#1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
        __lk_r = 0x556989325fa0
        __pl_r = <optimized out>
#2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
        cli_conn = <optimized out>
        p = 0x556989324470
        max_accept = 19
        next_conn = 19
        next_feconn = 0
        next_actconn = 0
        expire = 0
        ret = <optimized out>
        __func__ = "listener_accept"
#3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
        locked = <optimized out>
        old = 1179939
        new = <optimized out>
        new_flags = <optimized out>
        must_stop = 0
        rmask = 51208092416
        tmask = <optimized out>
#4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
        n = <optimized out>
        e = <optimized out>
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 24
        old_fd = <optimized out>
#5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
        next = <optimized out>
        wake = <optimized out>
        __func__ = "run_poll_loop"
#6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
        ptaf = <optimized out>
        ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
#7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
No symbol table info available.
#9  0x0000000000000000 in ?? ()
No symbol table info available.

Thread 23 (Thread 0x7f604ffff700 (LWP 512433)):
#0  pl_wait_unlock_long (lock=lock@entry=0x556989325698, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
        loops = 11892
        ret = <optimized out>
        m = 83350
#1  0x000055698825bbc6 in resume_listener (l=0x556989325f90, lpx=lpx@entry=0) at src/listener.c:520
        __lk_r = 0x556989325698
        __set_r = 21474836484
        __msk_r = 18446744069414584320
        __pl_r = <optimized out>
        px = 0x556989324470
        was_paused = 0
        ret = 1
#2  0x000055698825db87 in listener_release (l=<optimized out>) at src/listener.c:1242
        fe = 0x556989324470
#3  0x00005569882a359f in session_free (sess=0x7f60182d7930) at src/session.c:71
        conn = <optimized out>
        conn_back = <optimized out>
        srv_list = <optimized out>
        srv_list_back = <optimized out>
#4  0x00005569882a39cd in conn_session_free (conn=0x7f60502fa070) at src/session.c:106
No locals.
#5  0x0000556988295cba in mux_pt_destroy (ctx=ctx@entry=0x7f6044156e00) at src/mux_pt.c:229
        conn = 0x7f60502fa070
        __FUNCTION__ = "mux_pt_destroy"
#6  0x00005569882962d1 in mux_pt_detach (sd=0x7f60400643b0) at src/mux_pt.c:442
        conn = 0x7f60502fa070
        ctx = 0x7f6044156e00
        __FUNCTION__ = "mux_pt_detach"
#7  0x000055698824afb8 in sc_detach_endp (scp=scp@entry=0x7f604ffdbbb8) at src/stconn.c:356
        conn = 0x7f60502fa070
        sedesc = 0x7f60400643b0
        sc = 0x55698aa05e70
#8  0x000055698824b5fa in sc_destroy (sc=0x55698aa05e70) at src/stconn.c:425
No locals.
#9  0x000055698818e963 in stream_free (s=s@entry=0x7f60281ca020) at src/stream.c:721
        sess = <optimized out>
        fe = 0x556989324470
        bref = <optimized out>
        back = <optimized out>
        i = <optimized out>
#10 0x00005569881933e5 in process_stream (t=<optimized out>, context=0x7f60281ca020, state=<optimized out>) at src/stream.c:2632
        srv = <optimized out>
        s = 0x7f60281ca020
        sess = <optimized out>
        rqf_last = 12886114
        rpf_last = <optimized out>
        rq_prod_last = 10
        rq_cons_last = 10
        rp_cons_last = 10
        rp_prod_last = 10
        req_ana_back = 0
        req = 0x7f60281ca040
        res = 0x7f60281ca0a0
        scf = <optimized out>
        scb = 0x7f6034110b40
        rate = <optimized out>
#11 0x0000556988273f80 in run_tasks_from_lists (budgets=budgets@entry=0x7f604ffdbde0) at src/task.c:632
        process = <optimized out>
        tl_queues = <optimized out>
        t = 0x7f6034657c60
        budget_mask = 15 '\017'
        profile_entry = 0x0
        done = 0
        queue = 1
        state = 1028
        ctx = <optimized out>
        __func__ = "run_tasks_from_lists"
#12 0x00005569882747c9 in process_runnable_tasks () at src/task.c:861
        tt = 0x556988aa0f00 <ha_thread_ctx+8448>
        lrq = <optimized out>
        grq = <optimized out>
        t = <optimized out>
        max = {0, 43, 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>
#13 0x0000556988242083 in run_poll_loop () at src/haproxy.c:2912
        next = <optimized out>
        wake = <optimized out>
        __func__ = "run_poll_loop"
#14 0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
        ptaf = <optimized out>
        ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
#15 0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#16 0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
No symbol table info available.
#17 0x0000000000000000 in ?? ()
No symbol table info available.

Thread 22 (Thread 0x7f6054c46700 (LWP 512432)):
#0  0x00005569882a6778 in fd_add_to_fd_list (list=0x556988ae7480 <update_list>, fd=58) at src/fd.c:134
        next = 0
        new = <optimized out>
        old = 0
        last = <optimized out>
#1  0x00005569882a6fe4 in updt_fd_polling (fd=<optimized out>) at src/fd.c:511
        update_mask = 0
        tgrp = <optimized out>
#2  0x000055698825bb2b in resume_listener (l=0x556989325f90, lpx=lpx@entry=0) at src/listener.c:542
        px = 0x556989324470
        was_paused = <optimized out>
        ret = 1
#3  0x000055698825be72 in dequeue_proxy_listeners (px=px@entry=0x556989324470) at src/listener.c:613
        listener = <optimized out>
#4  0x000055698825cf90 in listener_accept (l=<optimized out>) at src/listener.c:1190
        cli_conn = <optimized out>
        p = 0x556989324470
        max_accept = <optimized out>
        next_conn = <optimized out>
        next_feconn = <optimized out>
        next_actconn = <optimized out>
        expire = <optimized out>
        ret = <optimized out>
        __func__ = "listener_accept"
#5  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
        locked = <optimized out>
        old = 1179939
        new = <optimized out>
        new_flags = <optimized out>
        must_stop = 0
        rmask = 40869853696
        tmask = <optimized out>
#6  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615792, wake=0) at src/ev_epoll.c:268
        n = <optimized out>
        e = <optimized out>
        status = <optimized out>
        fd = <optimized out>
        count = <optimized out>
        updt_idx = <optimized out>
        wait_time = 12
        old_fd = <optimized out>

Additional Information

No response

Activity

  1. xanaxalan commented on Jan 25, 2023

    @xanaxalan
    Author
    #7  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #8  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #9  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #10 0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #11 0x0000000000000000 in ?? ()
    No symbol table info available.
    
    Thread 21 (Thread 0x7f6055447700 (LWP 512431)):
    #0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
            loops = 51162
            ret = <optimized out>
            m = 60372
    #1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
            __lk_r = 0x556989325fa0
            __pl_r = <optimized out>
    #2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
            cli_conn = <optimized out>
            p = 0x556989324470
            max_accept = 15
            next_conn = 15
            next_feconn = 0
            next_actconn = 0
            expire = 0
            ret = <optimized out>
            __func__ = "listener_accept"
    #3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179939
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 51206715904
            tmask = <optimized out>
    #4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 24
            old_fd = <optimized out>
    #5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #9  0x0000000000000000 in ?? ()
    No symbol table info available.
    
    Thread 20 (Thread 0x7f6055c48700 (LWP 512430)):
    #0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744056529682432) at include/import/plock.h:93
            loops = 156347
            ret = <optimized out>
            m = 203765
    #1  0x000055698825d6cd in listener_accept (l=0x556989325f90) at src/listener.c:963
            __lk_r = 0x556989325fa0
            __set_r = 4
            __msk_r = 18446744056529682432
            count = 5
            status = 5
            mask = <optimized out>
            cli_conn = 0x0
            p = 0x556989324470
            max_accept = 4
            next_conn = 6
            next_feconn = <optimized out>
            next_actconn = <optimized out>
            expire = <optimized out>
            ret = <optimized out>
            __func__ = "listener_accept"
    #2  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179939
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 8592046592
            tmask = <optimized out>
    #3  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615772, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 20
            old_fd = <optimized out>
    #4  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #5  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #6  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #7  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #8  0x0000000000000000 in ?? ()
    No symbol table info available.
    
    Thread 19 (Thread 0x7f6056449700 (LWP 512429)):
    #0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
            loops = 133064
            ret = <optimized out>
            m = 214202
    #1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
            __lk_r = 0x556989325fa0
            __pl_r = <optimized out>
    #2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
            cli_conn = <optimized out>
            p = 0x556989324470
            max_accept = 17
            next_conn = 17
            next_feconn = 0
            next_actconn = 0
            expire = 0
            ret = <optimized out>
            __func__ = "listener_accept"
    #3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179939
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 51207830016
            tmask = <optimized out>
    #4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 24
            old_fd = <optimized out>
    #5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #9  0x0000000000000000 in ?? ()
    No symbol table info available.
    
    Thread 18 (Thread 0x7f6056c4a700 (LWP 512428)):
    #0  0x000055698825a195 in pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
            loops = 89278
            ret = <optimized out>
            m = 170946
    #1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
            __lk_r = 0x556989325fa0
            __pl_r = <optimized out>
    #2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
            cli_conn = <optimized out>
            p = 0x556989324470
            max_accept = 33
            next_conn = 33
            next_feconn = 0
            next_actconn = 0
            expire = 0
            ret = <optimized out>
            __func__ = "listener_accept"
    #3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179939
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 68715151231
            tmask = <optimized out>
    #4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 24
            old_fd = <optimized out>
    #5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #9  0x0000000000000000 in ?? ()
    No symbol table info available.
    
    Thread 17 (Thread 0x7f605744b700 (LWP 512427)):
    #0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
            loops = 22868
            ret = <optimized out>
            m = 187296
    #1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
            __lk_r = 0x556989325fa0
            __pl_r = <optimized out>
    #2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
            cli_conn = <optimized out>
            p = 0x556989324470
            max_accept = 16
            next_conn = 16
            next_feconn = 0
            next_actconn = 0
            expire = 0
            ret = <optimized out>
            __func__ = "listener_accept"
    #3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179939
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 51207764480
            tmask = <optimized out>
    #4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 24
            old_fd = <optimized out>
    #5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #9  0x0000000000000000 in ?? ()
    No symbol table info available.
    
    Thread 16 (Thread 0x7f6057c4c700 (LWP 512426)):
    #0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
            loops = 12865
            ret = <optimized out>
            m = 201593
    #1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
            __lk_r = 0x556989325fa0
            __pl_r = <optimized out>
    #2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
            cli_conn = <optimized out>
            p = 0x556989324470
            max_accept = 28
            next_conn = 28
            next_feconn = 0
            next_actconn = 0
            expire = 0
            ret = <optimized out>
            __func__ = "listener_accept"
    #3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179939
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 51518472027
            tmask = <optimized out>
    #4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 24
            old_fd = <optimized out>
    #5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #9  0x0000000000000000 in ?? ()
    No symbol table info available.
    
    Thread 15 (Thread 0x7f605844d700 (LWP 512425)):
    #0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744056529682432) at include/import/plock.h:93
            loops = 41722
            ret = <optimized out>
            m = 90560
    #1  0x000055698825d6cd in listener_accept (l=0x556989325f90) at src/listener.c:963
            __lk_r = 0x556989325fa0
            __set_r = 4
            __msk_r = 18446744056529682432
            count = 8
            status = 5
            mask = <optimized out>
            cli_conn = 0x0
            p = 0x556989324470
            max_accept = 4
            next_conn = 9
            next_feconn = <optimized out>
            next_actconn = <optimized out>
            expire = <optimized out>
            ret = <optimized out>
            __func__ = "listener_accept"
    #2  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179939
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 12954647040
            tmask = <optimized out>
    #3  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 24
            old_fd = <optimized out>
    #4  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #5  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #6  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #7  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #8  0x0000000000000000 in ?? ()
    No symbol table info available.
    
    Thread 14 (Thread 0x7f605944f700 (LWP 512423)):
    #0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744056529682432) at include/import/plock.h:93
            loops = 47264
            ret = <optimized out>
            m = 135842
    #1  0x000055698825d6cd in listener_accept (l=0x556989325f90) at src/listener.c:963
            __lk_r = 0x556989325fa0
            __set_r = 4
            __msk_r = 18446744056529682432
            count = 1
            status = 5
            mask = <optimized out>
            cli_conn = 0x0
            p = 0x556989324470
            max_accept = 4
            next_conn = 2
            next_feconn = <optimized out>
            next_actconn = <optimized out>
            expire = <optimized out>
            ret = <optimized out>
            __func__ = "listener_accept"
    #2  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179937
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 2105344
            tmask = <optimized out>
    #3  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 24
            old_fd = <optimized out>
    #4  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #5  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #6  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #7  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #8  0x0000000000000000 in ?? ()
    No symbol table info available.
    
    Thread 13 (Thread 0x7f6058c4e700 (LWP 512424)):
    #0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744056529682432) at include/import/plock.h:93
            loops = 137314
            ret = <optimized out>
            m = 220952
    #1  0x000055698825d6cd in listener_accept (l=0x556989325f90) at src/listener.c:963
            __lk_r = 0x556989325fa0
            __set_r = 4
            __msk_r = 18446744056529682432
            count = 6
            status = 5
            mask = <optimized out>
            cli_conn = 0x0
            p = 0x556989324470
            max_accept = 3
            next_conn = 8
            next_feconn = <optimized out>
            next_actconn = <optimized out>
            expire = <optimized out>
            ret = <optimized out>
            __func__ = "listener_accept"
    #2  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179937
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 0
            tmask = <optimized out>
    #3  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615792, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 16
            old_fd = <optimized out>
    #4  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #5  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #6  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #7  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #8  0x0000000000000000 in ?? ()
    No symbol table info available.
    
    Thread 12 (Thread 0x7f6059c50700 (LWP 512422)):
    #0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744056529682432) at include/import/plock.h:93
            loops = 30425
            ret = <optimized out>
            m = 201593
    #1  0x000055698825d6cd in listener_accept (l=0x556989325f90) at src/listener.c:963
            __lk_r = 0x556989325fa0
            __set_r = 4
            __msk_r = 18446744056529682432
            count = 4
            status = 5
            mask = <optimized out>
            cli_conn = 0x0
            p = 0x556989324470
            max_accept = 4
            next_conn = 5
            next_feconn = <optimized out>
            next_actconn = <optimized out>
            expire = <optimized out>
            ret = <optimized out>
            __func__ = "listener_accept"
    #2  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179939
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 8592044544
            tmask = <optimized out>
    #3  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 24
            old_fd = <optimized out>
    #4  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #5  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #6  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #7  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #8  0x0000000000000000 in ?? ()
    No symbol table info available.
    
    Thread 11 (Thread 0x7f605a451700 (LWP 512421)):
    #0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
            loops = 2462
            ret = <optimized out>
            m = 60372
    #1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
            __lk_r = 0x556989325fa0
            __pl_r = <optimized out>
    #2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
            cli_conn = <optimized out>
            p = 0x556989324470
            max_accept = 22
            next_conn = 22
            next_feconn = 0
            next_actconn = 0
            expire = 0
            ret = <optimized out>
            __func__ = "listener_accept"
    #3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179939
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 51484916496
            tmask = <optimized out>
    #4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 24
            old_fd = <optimized out>
    #5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #9  0x0000000000000000 in ?? ()
    No symbol table info available.
    
    Thread 10 (Thread 0x7f605ac52700 (LWP 512420)):
    #0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744056529682432) at include/import/plock.h:93
            loops = 14194
            ret = <optimized out>
            m = 135842
    #1  0x000055698825d6cd in listener_accept (l=0x556989325f90) at src/listener.c:963
            __lk_r = 0x556989325fa0
            __set_r = 4
            __msk_r = 18446744056529682432
            count = 3
            status = 5
            mask = <optimized out>
            cli_conn = 0x0
            p = 0x556989324470
            max_accept = 4
            next_conn = 4
            next_feconn = <optimized out>
            next_actconn = <optimized out>
            expire = <optimized out>
            ret = <optimized out>
            __func__ = "listener_accept"
    #2  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179939
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 8592044032
            tmask = <optimized out>
    #3  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 24
            old_fd = <optimized out>
    #4  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #5  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #6  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #7  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #8  0x0000000000000000 in ?? ()
    No symbol table info available.
    
    Thread 9 (Thread 0x7f605b453700 (LWP 512419)):
    #0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
            loops = 108105
            ret = <optimized out>
            m = 201593
    #1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
            __lk_r = 0x556989325fa0
            __pl_r = <optimized out>
    #2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
            cli_conn = <optimized out>
            p = 0x556989324470
            max_accept = 18
            next_conn = 18
            next_feconn = 0
            next_actconn = 0
            expire = 0
            ret = <optimized out>
            __func__ = "listener_accept"
    #3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179939
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 51208092160
            tmask = <optimized out>
    #4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 24
            old_fd = <optimized out>
    #5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #9  0x0000000000000000 in ?? ()
    No symbol table info available.
    
    Thread 8 (Thread 0x7f605c455700 (LWP 512417)):
    #0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
            loops = 175230
            ret = <optimized out>
            m = 230328
    #1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
            __lk_r = 0x556989325fa0
            __pl_r = <optimized out>
    #2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
            cli_conn = <optimized out>
            p = 0x556989324470
            max_accept = 23
            next_conn = 23
            next_feconn = 0
            next_actconn = 0
            expire = 0
            ret = <optimized out>
            __func__ = "listener_accept"
    #3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179939
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 51484917520
            tmask = <optimized out>
    #4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 24
            old_fd = <optimized out>
    #5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #9  0x0000000000000000 in ?? ()
    No symbol table info available.
    
    Thread 7 (Thread 0x7f605bc54700 (LWP 512418)):
    #0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
            loops = 179719
            ret = <optimized out>
            m = 230037
    #1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
            __lk_r = 0x556989325fa0
            __pl_r = <optimized out>
    #2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
            cli_conn = <optimized out>
            p = 0x556989324470
            max_accept = 34
            next_conn = 34
            next_feconn = 0
            next_actconn = 0
            expire = 0
            ret = <optimized out>
            __func__ = "listener_accept"
    #3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179939
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 68715282303
            tmask = <optimized out>
    #4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 25
            old_fd = <optimized out>
    #5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #9  0x0000000000000000 in ?? ()
    No symbol table info available.
    
    Thread 6 (Thread 0x7f605cc56700 (LWP 512416)):
    #0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
            loops = 88015
            ret = <optimized out>
            m = 201593
    #1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
            __lk_r = 0x556989325fa0
            __pl_r = <optimized out>
    #2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
            cli_conn = <optimized out>
            p = 0x556989324470
            max_accept = 30
            next_conn = 30
            next_feconn = 0
            next_actconn = 0
            expire = 0
            ret = <optimized out>
            __func__ = "listener_accept"
    #3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179939
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 51518504799
            tmask = <optimized out>
    #4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 24
            old_fd = <optimized out>
    #5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #9  0x0000000000000000 in ?? ()
    No symbol table info available.
    
    Thread 5 (Thread 0x7f605d457700 (LWP 512415)):
    #0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
            loops = 28972
            ret = <optimized out>
            m = 90560
    #1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
            __lk_r = 0x556989325fa0
            __pl_r = <optimized out>
    #2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
            cli_conn = <optimized out>
            p = 0x556989324470
            max_accept = 21
            next_conn = 21
            next_feconn = 0
            next_actconn = 0
            expire = 0
            ret = <optimized out>
            __func__ = "listener_accept"
    #3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179939
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 51484916480
            tmask = <optimized out>
    #4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 24
            old_fd = <optimized out>
    #5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #9  0x0000000000000000 in ?? ()
    No symbol table info available.
    
    Thread 4 (Thread 0x7f605e459700 (LWP 512413)):
    #0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
            loops = 110477
            ret = <optimized out>
            m = 203765
    #1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
            __lk_r = 0x556989325fa0
            __pl_r = <optimized out>
    #2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
            cli_conn = <optimized out>
            p = 0x556989324470
            max_accept = 29
            next_conn = 29
            next_feconn = 0
            next_actconn = 0
            expire = 0
            ret = <optimized out>
            __func__ = "listener_accept"
    #3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179939
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 51518504795
            tmask = <optimized out>
    #4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 24
            old_fd = <optimized out>
    #5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #9  0x0000000000000000 in ?? ()
    No symbol table info available.
    
    Thread 3 (Thread 0x7f60b3fff700 (LWP 512412)):
    #0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
            loops = 36437
            ret = <optimized out>
            m = 40247
    #1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
            __lk_r = 0x556989325fa0
            __pl_r = <optimized out>
    #2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
            cli_conn = <optimized out>
            p = 0x556989324470
            max_accept = 24
            next_conn = 24
            next_feconn = 0
            next_actconn = 0
            expire = 0
            ret = <optimized out>
            __func__ = "listener_accept"
    #3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179939
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 51484917584
            tmask = <optimized out>
    #4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 24
            old_fd = <optimized out>
    #5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #7  0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #8  0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #9  0x0000000000000000 in ?? ()
    No symbol table info available.
    
    Thread 2 (Thread 0x7f60ba2ae740 (LWP 512411)):
    #0  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
            loops = 24885
            ret = <optimized out>
            m = 43505
    #1  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
            __lk_r = 0x556989325fa0
            __pl_r = <optimized out>
    #2  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
            cli_conn = <optimized out>
            p = 0x556989324470
            max_accept = 26
            next_conn = 26
            next_feconn = 0
            next_actconn = 0
            expire = 0
            ret = <optimized out>
            __func__ = "listener_accept"
    #3  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179939
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 51484917594
            tmask = <optimized out>
    #4  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 24
            old_fd = <optimized out>
    #5  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #6  0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #7  0x00005569880e65af in main (argc=<optimized out>, argv=<optimized out>) at src/haproxy.c:3757
            err = <optimized out>
            retry = <optimized out>
            limit = {rlim_cur = 18446744073709551615, rlim_max = 18446744073709551615}
            pidfd = <optimized out>
            intovf = <optimized out>
    
    Thread 1 (Thread 0x7f605dc58700 (LWP 512414)):
    #0  0x00007f60b744ea4f in raise () from /lib64/libc.so.6
    No symbol table info available.
    #1  0x00007f60b7421db5 in abort () from /lib64/libc.so.6
    No symbol table info available.
    #2  0x0000556988265ee9 in ha_panic () at src/debug.c:366
            __v = <optimized out>
    #3  <signal handler called>
    No symbol table info available.
    #4  pl_wait_unlock_long (lock=lock@entry=0x556989325fa0, mask=mask@entry=18446744069414584320) at include/import/plock.h:93
            loops = 71036
            ret = <optimized out>
            m = 108274
    #5  0x000055698825b525 in limit_listener (l=l@entry=0x556989325f90, list=list@entry=0x556989325bf8) at src/listener.c:582
            __lk_r = 0x556989325fa0
            __pl_r = <optimized out>
    #6  0x000055698825d6f0 in listener_accept (l=0x556989325f90) at src/listener.c:1220
            cli_conn = <optimized out>
            p = 0x556989324470
            max_accept = 25
            next_conn = 25
            next_feconn = 0
            next_actconn = 0
            expire = 0
            ret = <optimized out>
            __func__ = "listener_accept"
    #7  0x00005569882a7995 in fd_update_events (fd=58, evts=<optimized out>) at src/fd.c:628
            locked = <optimized out>
            old = 1179939
            new = <optimized out>
            new_flags = <optimized out>
            must_stop = 0
            rmask = 51484917586
            tmask = <optimized out>
    #8  0x00005569880e8942 in _do_poll (p=<optimized out>, exp=-991615768, wake=0) at src/ev_epoll.c:268
            n = <optimized out>
            e = <optimized out>
            status = <optimized out>
            fd = <optimized out>
            count = <optimized out>
            updt_idx = <optimized out>
            wait_time = 22
            old_fd = <optimized out>
    #9  0x0000556988242043 in run_poll_loop () at src/haproxy.c:2983
            next = <optimized out>
            wake = <optimized out>
            __func__ = "run_poll_loop"
    #10 0x00005569882426dc in run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:3101
            ptaf = <optimized out>
            ptif = 0x5569888806f0 <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 = {__lock = 333, __futex = 0, __total_seq = 279, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x6c, __nwaiters = 0, __broadcast_seq = 0}, __size = "M\001\000\000\000\000\000\000\027\001", '\000' <repeats 22 times>, "l", '\000' <repeats 14 times>, __align = 333}
    #11 0x00007f60b8c081cf in start_thread () from /lib64/libpthread.so.0
    No symbol table info available.
    #12 0x00007f60b7439d83 in iopl () from /lib64/libc.so.6
    No symbol table info available.
    #13 0x0000000000000000 in ?? ()
    No symbol table info available.
    
    
  2. Darlelet commented on Jan 25, 2023

    @Darlelet
    Contributor

    Hi,

    From your haproxy -vv output, haproxy reports that it detected 2 available threads:

    Built with multi-threading support (MAX_TGROUPS=16, MAX_THREADS=256, default=2).

    From your config snippet, I can see that you manually set nbthread to 36.

    Is the haproxy -vv output from another machine that the one which suffers from the crash?
    If not, any reason for manually setting nbthread to 36?

    Thanks

  3. xanaxalan commented on Jan 25, 2023

    @xanaxalan
    Author

    @Darlelet nbthread is set to 36 in the config to accommodate resources of the machine. A little correction -vv is not from the same machine as the config, I reverted the installation, because of the 2 crashes, this was installed in vm.

  4. Darlelet commented on Jan 26, 2023

    @Darlelet
    Contributor

    Ok thank you, so do you confirm that the machine running the config you posted has >= 36 threads and that you don't have other haproxy processes running on the same threads?

    Because from your trace it looks like some lock contention over the listener lock.

    Moreover, from your config file:
    maxconn x
    You intentionally didn't share maxconn info for your global and https frontend sections, are you sure this is correctly tuned for your load?
    The trace suggests that nearly all threads are waiting for the listener lock in limit_listener() function, this function is only being called when either reaching global maxconn or proxy maxconn.
    Edit: I was wrong, it could also result from rate-limit sessions, maxconnrate, maxsessrate or maxsslrate statements, but given your config, rate-limit sessions and maxconn could be interesting leads.

    Also, you said you were rolling out to 2.7.1 from an older version when the issue occurred: what is your current haproxy version? (the one that seems to do fine under load using the same config as the one you provided)
    This could help pinpoint the major changes in haproxy architecture that could explain why the crash is occurring with 2.7.1 but not with your older version with same config and load.

  5. xanaxalan commented on Jan 26, 2023

    @xanaxalan
    Author

    We have other machines with hap 2.4.19 in anycast setup with this configuration and sizing should be fine. It runs without an issue.
    Upgrade was done on one of them and as I mentioned it was fine for couple of days until load spike killed it. Version which we are running now below. maxconn in defaults is set to 150000
    haproxy -vv

    HAProxy version 2.4.19-ec55434 2022/09/28 - 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.19.html
    Running on: Linux 5.18.3-1.el8.elrepo.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jun 8 10:40:51 EDT 2022 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 -Wtype-limits
      OPTIONS = USE_PCRE=1 USE_PTHREAD_PSHARED=1 USE_OPENSSL=1 USE_LUA=1 USE_ZLIB=1 USE_TFO=1 USE_SYSTEMD=1 USE_OT=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=64).
    Built with OpenSSL version : OpenSSL 1.1.1s  1 Nov 2022
    Running on OpenSSL version : OpenSSL 1.1.1s  1 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.4.4
    Built with the Prometheus exporter as a service
    Built with network namespace support.
    Built with OpenTracing support.
    Built with zlib version : 1.2.7
    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 with PCRE version : 8.32 2012-11-30
    Running on PCRE version : 8.42 2018-03-20
    PCRE library supports JIT : no (USE_PCRE_JIT not set)
    Encrypted password support via crypt(3): yes
    Built with gcc compiler version 4.8.5 20150623 (Red Hat 4.8.5-44)
    
    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 :
            [  OT] opentracing
            [SPOE] spoe
            [CACHE] cache
            [FCGI] fcgi-app
            [COMP] compression
            [TRACE] trace
    
    
  6. Darlelet commented on Jan 26, 2023

    @Darlelet
    Contributor

    Thank you for the extra information

    On your existing setup running 2.4.19, do you appear to witness some log messages similar to this one from time to time?
    Proxy X reached the configured maximum connection limit. Please check the global 'maxconn' value.

  7. xanaxalan commented on Jan 26, 2023

    @xanaxalan
    Author

    No nothing about the maxconn in the logs.

  8. wtarreau commented on Jan 27, 2023

    @wtarreau
    Member

    I confirm that the trace shows that a listener reached some limits, however we don't know if these are per-process limits or per-proxy limits. It could also be a configured rate-limit but I'm not seeing any in the config snippet. Anoter possibility could be that the peers port received some heavy connection attempts, for example if it's open to the whole world, as peers do have per-proxy connection limits as well.

    All this doesn't justify such a crash, it looks like there's a race there. But a few very related ones were fixed between 2.7.1 and 2.7.2, and I'm not sure whether they could produce this one or not. In any case it would be worth updating it. If it's not urgent on your side we may emit 2.7.3 next week with a few more fixes (unrelated though).

  9. Darlelet commented on Jan 27, 2023

    @Darlelet
    Contributor

    It could also be a configured rate-limit but I'm not seeing any in the config snippet.

    Looks like rate-limit sessions is in play in @xanaxalan config

  10. wtarreau commented on Jan 27, 2023

    @wtarreau
    Member

    Ah you're right, I indeed missed it.

  11. xanaxalan commented on Jan 27, 2023

    @xanaxalan
    Author

    I will deploy 7.2 today and monitor it, will see how it behaves. I can pick up 7.3 next week after that. Just out of curiosity, when old version of hap is running and update of pkg is done, should hap survive reload? I am doing restarts but just was wondering if this would be possible :)

  12. xanaxalan commented on Jan 31, 2023

    @xanaxalan
    Author

    Unfortunately on 7.2 I've got same behavior. Crashed today.

    Thread 18 is about to kill the process.
    >Thread 1 : id=0x7f460430a740 act=0 glob=0 wq=1 rq=0 tl=0 tlsz=0 rqsz=0
         1/1    stuck=1 prof=0 harmless=0 wantrdv=0
                cpu_ns: poll=2197983873182 now=2199996510491 diff=2012637309
                curr_task=0
                call trace(12):
                | 0x5557cdc6737b [85 c0 89 c5 75 2f 48 8b]: ha_dump_backtrace+0x3b/0x31d
                | 0x5557cdc67f17 [64 41 8b 36 8d 56 01 41]: debug_handler+0x157/0x283
                | 0x7f4602c12ce0 [48 c7 c0 0f 00 00 00 0f]: libpthread:+0x12ce0
                | 0x5557cdc5a782 [83 e8 0a 3d c7 00 00 00]: main+0x174e32
                | 0x5557cdc5dcac [44 8b 44 24 24 8b 54 24]: listener_accept+0xd9c/0x118c
                | 0x5557cdca7f95 [48 89 d8 48 03 05 21 2c]: fd_update_events+0x285/0x464
                | 0x5557cdae8b72 [48 39 dd 74 39 48 89 ea]: main+0x3222
    >Thread 2 : id=0x7f45fdfff700 act=0 glob=0 wq=1 rq=0 tl=0 tlsz=0 rqsz=0
         1/2    stuck=1 prof=0 harmless=0 wantrdv=0
                cpu_ns: poll=1440021016263 now=1442035985959 diff=2014969696
                curr_task=0
                call trace(12):
                | 0x5557cdc6737b [85 c0 89 c5 75 2f 48 8b]: ha_dump_backtrace+0x3b/0x31d
                | 0x5557cdc67f17 [64 41 8b 36 8d 56 01 41]: debug_handler+0x157/0x283
                | 0x7f4602c12ce0 [48 c7 c0 0f 00 00 00 0f]: libpthread:+0x12ce0
                | 0x5557cdc5a782 [83 e8 0a 3d c7 00 00 00]: main+0x174e32
                | 0x5557cdc5bb15 [4c 89 e8 f0 49 0f c1 04]: main+0x1761c5
                | 0x5557cdc5dcf4 [31 c0 8b 14 24 e9 c1 fa]: listener_accept+0xde4/0x118c
                | 0x5557cdca7f95 [48 89 d8 48 03 05 21 2c]: fd_update_events+0x285/0x464
                | 0x5557cdae8b72 [48 39 dd 74 39 48 89 ea]: main+0x3222
    >Thread 3 : id=0x7f45a89a2700 act=0 glob=0 wq=1 rq=0 tl=0 tlsz=0 rqsz=0
         1/3    stuck=1 prof=0 harmless=0 wantrdv=0
                cpu_ns: poll=1435565842088 now=1437584748248 diff=2018906160
                curr_task=0
                call trace(11):
                | 0x5557cdc6737b [85 c0 89 c5 75 2f 48 8b]: ha_dump_backtrace+0x3b/0x31d
                | 0x5557cdc67f17 [64 41 8b 36 8d 56 01 41]: debug_handler+0x157/0x283
                | 0x7f4602c12ce0 [48 c7 c0 0f 00 00 00 0f]: libpthread:+0x12ce0
                | 0x5557cdc5a782 [83 e8 0a 3d c7 00 00 00]: main+0x174e32
                | 0x5557cdc5dcac [44 8b 44 24 24 8b 54 24]: listener_accept+0xd9c/0x118c
                | 0x5557cdca7f95 [48 89 d8 48 03 05 21 2c]: fd_update_events+0x285/0x464
                | 0x5557cdae8b72 [48 39 dd 74 39 48 89 ea]: main+0x3222
    >Thread 4 : id=0x7f45a81a1700 act=0 glob=0 wq=1 rq=0 tl=0 tlsz=0 rqsz=0
         1/4    stuck=1 prof=0 harmless=0 wantrdv=0
                cpu_ns: poll=1396575717811 now=1398598517514 diff=2022799703
                curr_task=0
                call trace(11):
                | 0x5557cdc6737b [85 c0 89 c5 75 2f 48 8b]: ha_dump_backtrace+0x3b/0x31d
                | 0x5557cdc67f17 [64 41 8b 36 8d 56 01 41]: debug_handler+0x157/0x283
                | 0x7f4602c12ce0 [48 c7 c0 0f 00 00 00 0f]: libpthread:+0x12ce0
                | 0x5557cdc5a782 [83 e8 0a 3d c7 00 00 00]: main+0x174e32
                | 0x5557cdc5dcac [44 8b 44 24 24 8b 54 24]: listener_accept+0xd9c/0x118c
                | 0x5557cdca7f95 [48 89 d8 48 03 05 21 2c]: fd_update_events+0x285/0x464
                | 0x5557cdae8b72 [48 39 dd 74 39 48 89 ea]: main+0x3222
    >Thread 5 : id=0x7f45a79a0700 act=0 glob=0 wq=1 rq=0 tl=0 tlsz=0 rqsz=0
         1/5    stuck=1 prof=0 harmless=0 wantrdv=0
                cpu_ns: poll=1360752336975 now=1362784128478 diff=2031791503
                curr_task=0
                call trace(12):
                | 0x5557cdc6737b [85 c0 89 c5 75 2f 48 8b]: ha_dump_backtrace+0x3b/0x31d
                | 0x5557cdc67f17 [64 41 8b 36 8d 56 01 41]: debug_handler+0x157/0x283
                | 0x7f4602c12ce0 [48 c7 c0 0f 00 00 00 0f]: libpthread:+0x12ce0
                | 0x5557cdc5a782 [83 e8 0a 3d c7 00 00 00]: main+0x174e32
                | 0x5557cdc5bb15 [4c 89 e8 f0 49 0f c1 04]: main+0x1761c5
                | 0x5557cdc5dcf4 [31 c0 8b 14 24 e9 c1 fa]: listener_accept+0xde4/0x118c
                | 0x5557cdca7f95 [48 89 d8 48 03 05 21 2c]: fd_update_events+0x285/0x464
                | 0x5557cdae8b72 [48 39 dd 74 39 48 89 ea]: main+0x3222
    >Thread 6 : id=0x7f45a719f700 act=0 glob=0 wq=1 rq=0 tl=0 tlsz=0 rqsz=0
         1/6    stuck=1 prof=0 harmless=0 wantrdv=0
                cpu_ns: poll=1323326731419 now=1325337417876 diff=2010686457
                curr_task=0
                call trace(12):
                | 0x5557cdc6737b [85 c0 89 c5 75 2f 48 8b]: ha_dump_backtrace+0x3b/0x31d
                | 0x5557cdc67f17 [64 41 8b 36 8d 56 01 41]: debug_handler+0x157/0x283
                | 0x7f4602c12ce0 [48 c7 c0 0f 00 00 00 0f]: libpthread:+0x12ce0
                | 0x5557cdc5a785 [3d c7 00 00 00 77 f4 eb]: main+0x174e35
                | 0x5557cdc5bb15 [4c 89 e8 f0 49 0f c1 04]: main+0x1761c5
                | 0x5557cdc5dcf4 [31 c0 8b 14 24 e9 c1 fa]: listener_accept+0xde4/0x118c
                | 0x5557cdca7f95 [48 89 d8 48 03 05 21 2c]: fd_update_events+0x285/0x464
                | 0x5557cdae8b72 [48 39 dd 74 39 48 89 ea]: main+0x3222
    >Thread 7 : id=0x7f45a699e700 act=0 glob=0 wq=1 rq=0 tl=0 tlsz=0 rqsz=0
         1/7    stuck=1 prof=0 harmless=0 wantrdv=0
                cpu_ns: poll=1329663590889 now=1331703256441 diff=2039665552
                curr_task=0
                call trace(12):
                | 0x5557cdc6737b [85 c0 89 c5 75 2f 48 8b]: ha_dump_backtrace+0x3b/0x31d
                | 0x5557cdc67f17 [64 41 8b 36 8d 56 01 41]: debug_handler+0x157/0x283
                | 0x7f4602c12ce0 [48 c7 c0 0f 00 00 00 0f]: libpthread:+0x12ce0
                | 0x5557cdc5a782 [83 e8 0a 3d c7 00 00 00]: main+0x174e32
                | 0x5557cdc5bb15 [4c 89 e8 f0 49 0f c1 04]: main+0x1761c5
                | 0x5557cdc5dcf4 [31 c0 8b 14 24 e9 c1 fa]: listener_accept+0xde4/0x118c
                | 0x5557cdca7f95 [48 89 d8 48 03 05 21 2c]: fd_update_events+0x285/0x464
                | 0x5557cdae8b72 [48 39 dd 74 39 48 89 ea]: main+0x3222
    >Thread 8 : id=0x7f45a619d700 act=1 glob=0 wq=1 rq=1 tl=0 tlsz=0 rqsz=1
         1/8    stuck=1 prof=0 harmless=0 wantrdv=0
                cpu_ns: poll=1391647164559 now=1393688876059 diff=2041711500
                curr_task=0x7f458c95c5f0 (task) calls=2 last=0
                  fct=0x5557cdb903c0(process_stream) ctx=(nil)
                call trace(20):
                | 0x5557cdc6737b [85 c0 89 c5 75 2f 48 8b]: ha_dump_backtrace+0x3b/0x31d
                | 0x5557cdc67f17 [64 41 8b 36 8d 56 01 41]: debug_handler+0x157/0x283
                | 0x7f4602c12ce0 [48 c7 c0 0f 00 00 00 0f]: libpthread:+0x12ce0
                | 0x5557cdc5a782 [83 e8 0a 3d c7 00 00 00]: main+0x174e32
                | 0x5557cdc5c1bc [4c 89 f8 f0 49 0f c1 04]: resume_listener+0x1dc/0x289
                | 0x5557cdc5e177 [e9 78 ff ff ff 0f 1f 40]: listener_release+0xd7/0xdc
                | 0x5557cdca3b8f [4d 8d 67 38 45 31 ed 49]: session_free+0x1f/0x439
                | 0x5557cdca3fbd [48 c7 43 30 00 00 00 00]: conn_session_free+0xd/0x17
                | 0x5557cdc962aa [48 83 c4 40 48 89 df 5b]: main+0x1b095a
                | 0x5557cdc968c1 [8b 05 81 3b 5f 00 85 c0]: main+0x1b0f71
                | 0x5557cdc4b568 [48 8b 6b 20 48 85 ed 0f]: main+0x165c18
                | 0x5557cdc4bbaa [48 8b 5c 24 08 48 85 db]: sc_destroy+0x1a/0x17f
                | 0x5557cdb8ed43 [48 8b 3d 1e b5 6f 00 48]: stream_free+0x453/0x9a6
                | 0x5557cdb937c5 [48 83 7c 24 68 00 74 6f]: process_stream+0x3405/0x3810
    >Thread 9 : id=0x7f45a599c700 act=0 glob=0 wq=1 rq=0 tl=0 tlsz=0 rqsz=0
         1/9    stuck=1 prof=0 harmless=0 wantrdv=0
                cpu_ns: poll=1318746192367 now=1320762095094 diff=2015902727
                curr_task=0
                call trace(12):
                | 0x5557cdc6737b [85 c0 89 c5 75 2f 48 8b]: ha_dump_backtrace+0x3b/0x31d
                | 0x5557cdc67f17 [64 41 8b 36 8d 56 01 41]: debug_handler+0x157/0x283
                | 0x7f4602c12ce0 [48 c7 c0 0f 00 00 00 0f]: libpthread:+0x12ce0
                | 0x5557cdc5a782 [83 e8 0a 3d c7 00 00 00]: main+0x174e32
                | 0x5557cdc5bb15 [4c 89 e8 f0 49 0f c1 04]: main+0x1761c5
                | 0x5557cdc5dcf4 [31 c0 8b 14 24 e9 c1 fa]: listener_accept+0xde4/0x118c
                | 0x5557cdca7f95 [48 89 d8 48 03 05 21 2c]: fd_update_events+0x285/0x464
                | 0x5557cdae8b72 [48 39 dd 74 39 48 89 ea]: main+0x3222
    >Thread 10: id=0x7f45a519b700 act=0 glob=0 wq=1 rq=0 tl=0 tlsz=0 rqsz=0
         1/10   stuck=1 prof=0 harmless=0 wantrdv=0
                cpu_ns: poll=1354449802790 now=1356493454454 diff=2043651664
                curr_task=0
                call trace(11):
                | 0x5557cdc6737b [85 c0 89 c5 75 2f 48 8b]: ha_dump_backtrace+0x3b/0x31d
                | 0x5557cdc67f17 [64 41 8b 36 8d 56 01 41]: debug_handler+0x157/0x283
                | 0x7f4602c12ce0 [48 c7 c0 0f 00 00 00 0f]: libpthread:+0x12ce0
                | 0x5557cdc5a782 [83 e8 0a 3d c7 00 00 00]: main+0x174e32
                | 0x5557cdc5dcac [44 8b 44 24 24 8b 54 24]: listener_accept+0xd9c/0x118c
                | 0x5557cdca7f95 [48 89 d8 48 03 05 21 2c]: fd_update_events+0x285/0x464
                | 0x5557cdae8b72 [48 39 dd 74 39 48 89 ea]: main+0x3222
    >Thread 11: id=0x7f45a499a700 act=0 glob=0 wq=1 rq=0 tl=0 tlsz=0 rqsz=0
         1/11   stuck=1 prof=0 harmless=0 wantrdv=0
                cpu_ns: poll=1364977484446 now=1367029707753 diff=2052223307
                curr_task=0
                call trace(12):
                | 0x5557cdc6737b [85 c0 89 c5 75 2f 48 8b]: ha_dump_backtrace+0x3b/0x31d
                | 0x5557cdc67f17 [64 41 8b 36 8d 56 01 41]: debug_handler+0x157/0x283
                | 0x7f4602c12ce0 [48 c7 c0 0f 00 00 00 0f]: libpthread:+0x12ce0
                | 0x5557cdc5a782 [83 e8 0a 3d c7 00 00 00]: main+0x174e32
                | 0x5557cdc5bb15 [4c 89 e8 f0 49 0f c1 04]: main+0x1761c5
                | 0x5557cdc5dcf4 [31 c0 8b 14 24 e9 c1 fa]: listener_accept+0xde4/0x118c
                | 0x5557cdca7f95 [48 89 d8 48 03 05 21 2c]: fd_update_events+0x285/0x464
                | 0x5557cdae8b72 [48 39 dd 74 39 48 89 ea]: main+0x3222
    >Thread 12: id=0x7f45a4199700 act=0 glob=0 wq=1 rq=0 tl=0 tlsz=0 rqsz=0
         1/12   stuck=1 prof=0 harmless=0 wantrdv=0
                cpu_ns: poll=1296605141613 now=1298655767359 diff=2050625746
                curr_task=0
                call trace(12):
                | 0x5557cdc6737b [85 c0 89 c5 75 2f 48 8b]: ha_dump_backtrace+0x3b/0x31d
                | 0x5557cdc67f17 [64 41 8b 36 8d 56 01 41]: debug_handler+0x157/0x283
                | 0x7f4602c12ce0 [48 c7 c0 0f 00 00 00 0f]: libpthread:+0x12ce0
                | 0x5557cdc5a782 [83 e8 0a 3d c7 00 00 00]: main+0x174e32
                | 0x5557cdc5bb15 [4c 89 e8 f0 49 0f c1 04]: main+0x1761c5
                | 0x5557cdc5dcf4 [31 c0 8b 14 24 e9 c1 fa]: listener_accept+0xde4/0x118c
                | 0x5557cdca7f95 [48 89 d8 48 03 05 21 2c]: fd_update_events+0x285/0x464
                | 0x5557cdae8b72 [48 39 dd 74 39 48 89 ea]: main+0x3222
    >Thread 13: id=0x7f45a3998700 act=0 glob=0 wq=1 rq=0 tl=0 tlsz=0 rqsz=0
         1/13   stuck=1 prof=0 harmless=0 wantrdv=0
                cpu_ns: poll=1336426146203 now=1338475838720 diff=2049692517
                curr_task=0
                call trace(12):
                | 0x5557cdc6737b [85 c0 89 c5 75 2f 48 8b]: ha_dump_backtrace+0x3b/0x31d
                | 0x5557cdc67f17 [64 41 8b 36 8d 56 01 41]: debug_handler+0x157/0x283
                | 0x7f4602c12ce0 [48 c7 c0 0f 00 00 00 0f]: libpthread:+0x12ce0
                | 0x5557cdc5a782 [83 e8 0a 3d c7 00 00 00]: main+0x174e32
                | 0x5557cdc5bb15 [4c 89 e8 f0 49 0f c1 04]: main+0x1761c5
                | 0x5557cdc5dcf4 [31 c0 8b 14 24 e9 c1 fa]: listener_accept+0xde4/0x118c
                | 0x5557cdca7f95 [48 89 d8 48 03 05 21 2c]: fd_update_events+0x285/0x464
                | 0x5557cdae8b72 [48 39 dd 74 39 48 89 ea]: main+0x3222
    >Thread 14: id=0x7f45a3197700 act=0 glob=0 wq=1 rq=0 tl=0 tlsz=0 rqsz=0
         1/14   stuck=1 prof=0 harmless=0 wantrdv=0
                cpu_ns: poll=1329235833028 now=1331289079022 diff=2053245994
                curr_task=0
                call trace(12):
                | 0x5557cdc6737b [85 c0 89 c5 75 2f 48 8b]: ha_dump_backtrace+0x3b/0x31d
                | 0x5557cdc67f17 [64 41 8b 36 8d 56 01 41]: debug_handler+0x157/0x283
                | 0x7f4602c12ce0 [48 c7 c0 0f 00 00 00 0f]: libpthread:+0x12ce0
                | 0x5557cdc5a782 [83 e8 0a 3d c7 00 00 00]: main+0x174e32
                | 0x5557cdc5bb15 [4c 89 e8 f0 49 0f c1 04]: main+0x1761c5
                | 0x5557cdc5dcf4 [31 c0 8b 14 24 e9 c1 fa]: listener_accept+0xde4/0x118c
                | 0x5557cdca7f95 [48 89 d8 48 03 05 21 2c]: fd_update_events+0x285/0x464
                | 0x5557cdae8b72 [48 39 dd 74 39 48 89 ea]: main+0x3222
    >Thread 15: id=0x7f45a2996700 act=0 glob=0 wq=1 rq=0 tl=0 tlsz=0 rqsz=0
         1/15   stuck=1 prof=0 harmless=0 wantrdv=0
                cpu_ns: poll=1370015558520 now=1372072737383 diff=2057178863
                curr_task=0
                call trace(12):
                | 0x5557cdc6737b [85 c0 89 c5 75 2f 48 8b]: ha_dump_backtrace+0x3b/0x31d
                | 0x5557cdc67f17 [64 41 8b 36 8d 56 01 41]: debug_handler+0x157/0x283
                | 0x7f4602c12ce0 [48 c7 c0 0f 00 00 00 0f]: libpthread:+0x12ce0
                | 0x5557cdc5a782 [83 e8 0a 3d c7 00 00 00]: main+0x174e32
                | 0x5557cdc5bb15 [4c 89 e8 f0 49 0f c1 04]: main+0x1761c5
                | 0x5557cdc5dcf4 [31 c0 8b 14 24 e9 c1 fa]: listener_accept+0xde4/0x118c
                | 0x5557cdca7f95 [48 89 d8 48 03 05 21 2c]: fd_update_events+0x285/0x464
                | 0x5557cdae8b72 [48 39 dd 74 39 48 89 ea]: main+0x3222
    >Thread 16: id=0x7f45a2195700 act=0 glob=0 wq=1 rq=0 tl=0 tlsz=0 rqsz=0
         1/16   stuck=1 prof=0 harmless=0 wantrdv=0
                cpu_ns: poll=1322001399048 now=1324062664122 diff=2061265074
                curr_task=0
                call trace(12):
                | 0x5557cdc6737b [85 c0 89 c5 75 2f 48 8b]: ha_dump_backtrace+0x3b/0x31d
                | 0x5557cdc67f17 [64 41 8b 36 8d 56 01 41]: debug_handler+0x157/0x283
                | 0x7f4602c12ce0 [48 c7 c0 0f 00 00 00 0f]: libpthread:+0x12ce0
                | 0x5557cdc5a782 [83 e8 0a 3d c7 00 00 00]: main+0x174e32
                | 0x5557cdc5bb15 [4c 89 e8 f0 49 0f c1 04]: main+0x1761c5
                | 0x5557cdc5dcf4 [31 c0 8b 14 24 e9 c1 fa]: listener_accept+0xde4/0x118c
                | 0x5557cdca7f95 [48 89 d8 48 03 05 21 2c]: fd_update_events+0x285/0x464
                | 0x5557cdae8b72 [48 39 dd 74 39 48 89 ea]: main+0x3222
    >Thread 17: id=0x7f45a1994700 act=0 glob=0 wq=1 rq=0 tl=0 tlsz=0 rqsz=0
         1/17   stuck=1 prof=0 harmless=0 wantrdv=0
                cpu_ns: poll=1319407651378 now=1321472347771 diff=2064696393
                curr_task=0
                call trace(12):
                | 0x5557cdc6737b [85 c0 89 c5 75 2f 48 8b]: ha_dump_backtrace+0x3b/0x31d
                | 0x5557cdc67f17 [64 41 8b 36 8d 56 01 41]: debug_handler+0x157/0x283
                | 0x7f4602c12ce0 [48 c7 c0 0f 00 00 00 0f]: libpthread:+0x12ce0
                | 0x5557cdc5a782 [83 e8 0a 3d c7 00 00 00]: main+0x174e32
                | 0x5557cdc5bb15 [4c 89 e8 f0 49 0f c1 04]: main+0x1761c5
                | 0x5557cdc5dcf4 [31 c0 8b 14 24 e9 c1 fa]: listener_accept+0xde4/0x118c
                | 0x5557cdca7f95 [48 89 d8 48 03 05 21 2c]: fd_update_events+0x285/0x464
                | 0x5557cdae8b72 [48 39 dd 74 39 48 89 ea]: main+0x3222
    *>Thread 18: id=0x7f45a1193700 act=0 glob=0 wq=1 rq=0 tl=0 tlsz=0 rqsz=0
         1/18   stuck=1 prof=0 harmless=0 wantrdv=0
                cpu_ns: poll=1312955887734 now=1315022593896 diff=2066706162
                curr_task=0
                call trace(16):
                | 0x7f4602c12ce0 [48 c7 c0 0f 00 00 00 0f]: libpthread:+0x12ce0
                | 0x5557cdc5a782 [83 e8 0a 3d c7 00 00 00]: main+0x174e32
                | 0x5557cdc5bb15 [4c 89 e8 f0 49 0f c1 04]: main+0x1761c5
                | 0x5557cdc5dcf4 [31 c0 8b 14 24 e9 c1 fa]: listener_accept+0xde4/0x118c
                | 0x5557cdca7f95 [48 89 d8 48 03 05 21 2c]: fd_update_events+0x285/0x464
                | 0x5557cdae8b72 [48 39 dd 74 39 48 89 ea]: main+0x3222
    >Thread 19: id=0x7f45a0992700 act=0 glob=0 wq=1 rq=0 tl=0 tlsz=0 rqsz=0
         1/19   stuck=1 prof=0 harmless=0 wantrdv=0
                cpu_ns: poll=1299715067651 now=1301784412562 diff=2069344911
                curr_task=0
                call trace(11):
                | 0x5557cdc6737b [85 c0 89 c5 75 2f 48 8b]: ha_dump_backtrace+0x3b/0x31d
                | 0x5557cdc67f17 [64 41 8b 36 8d 56 01 41]:
    48
    48
    NOTICE]   (631754) : haproxy version is 2.7.2-7e295dd
    [NOTICE]   (631754) : path to executable is /opt/haproxy/sbin/haproxy
    [ALERT]    (631754) : Current worker (631780) exited with code 134 (Aborted)
    [WARNING]  (631754) : All workers exited. Exiting... (13
    
    
    
    haproxy -vv
    HAProxy version 2.7.2-7e295dd 2023/01/20 - https://haproxy.org/
    Status: stable branch - will stop receiving fixes around Q1 2024.
    Known bugs: http://www.haproxy.org/bugs/bugs-2.7.2.html
    Running on: Linux 5.18.3-1.el8.elrepo.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jun 8 10:40:51 EDT 2022 x86_64
    Build options :
      TARGET  = linux-glibc
      CPU     = generic
      CC      = cc
      CFLAGS  = -O2 -g -Wall -Wextra -Wundef -Wdeclaration-after-statement -Wfatal-errors -Wtype-limits -fwrapv -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
      OPTIONS = USE_PCRE=1 USE_OPENSSL=1 USE_LUA=1 USE_ZLIB=1 USE_TFO=1 USE_SYSTEMD=1 USE_OT=1 USE_PROMEX=1
      DEBUG   = -DDEBUG_STRICT -DDEBUG_MEMORY_POOLS
    
    Feature list : -51DEGREES +ACCEPT4 +BACKTRACE -CLOSEFROM +CPU_AFFINITY +CRYPT_H -DEVICEATLAS +DL -ENGINE +EPOLL -EVPORTS +GETADDRINFO -KQUEUE +LIBCRYPT +LINUX_SPLICE +LINUX_TPROXY +LUA -MEMORY_PROFILING +NETFILTER +NS -OBSOLETE_LINKER +OPENSSL -OPENSSL_WOLFSSL +OT +PCRE -PCRE2 -PCRE2_JIT -PCRE_JIT +POLL +PRCTL -PROCCTL +PROMEX -PTHREAD_EMULATION -QUIC +RT +SHM_OPEN -SLZ -STATIC_PCRE -STATIC_PCRE2 +SYSTEMD +TFO +THREAD +THREAD_DUMP +TPROXY -WURFL +ZLIB
    
    Default settings :
      bufsize = 16384, maxrewrite = 1024, maxpollevents = 200
    
    Built with multi-threading support (MAX_TGROUPS=16, MAX_THREADS=256, default=72).
    Built with OpenSSL version : OpenSSL 1.1.1s  1 Nov 2022
    Running on OpenSSL version : OpenSSL 1.1.1s  1 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.4.4
    Built with the Prometheus exporter as a service
    Built with network namespace support.
    Built with OpenTracing support.
    Support for malloc_trim() is enabled.
    Built with zlib version : 1.2.7
    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 with PCRE version : 8.32 2012-11-30
    Running on PCRE version : 8.42 2018-03-20
    PCRE library supports JIT : no (USE_PCRE_JIT not set)
    Encrypted password support via crypt(3): yes
    Built with gcc compiler version 4.8.5 20150623 (Red Hat 4.8.5-44)
    
    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
           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 :
            [BWLIM] bwlim-in
            [BWLIM] bwlim-out
            [CACHE] cache
            [COMP] compression
            [FCGI] fcgi-app
            [  OT] opentracing
            [SPOE] spoe
            [TRACE] trace
    
  13. xanaxalan commented on Feb 27, 2023

    @xanaxalan
    Author

    I was testing 2.7.3 and still crashing. Tried on different HW this time and it survived medium load spike just fine which was promising and then after 3 days it crashed without any significant load. Attaching core dump from 2.7.3 [ (gdb) t a a bt full ]
    gdb_hap_2.7.3_ssl_1.1.1t.txt

  14. 2 remaining items

  15. Darlelet commented on Feb 27, 2023

    @Darlelet
    Contributor

    Great!

    The patch should be applied for fd_rm_from_fd_list() as well, as in @xanaxalan previous trace, the issue occurred in fd_rm_from_fd_list()

    The culprit is likely 4d9888c since the "volatile" keyword was lost at multiple places with this commit.

  16. xanaxalan commented on Feb 27, 2023

    @xanaxalan
    Author

    Great we have something to test :) thank you!! Will patch and let it run again. Will let you know about the outcome.

  17. xanaxalan commented on Feb 27, 2023

    @xanaxalan
    Author

    @Darlelet can you provide me a diff for fd_rm_from_fd_list() I am looking at it and it's not obvious to me what I should change.

  18. wtarreau commented on Feb 27, 2023

    @wtarreau
    Member

    @Darlelet oh indeed, good catch. I didn't remember about that one but it definitely explains what it's new.

    @xanaxalan here's the one Aurélien was talking about (not even build-tested but should be straight-forward):

                                            shard++;
    diff --git a/src/fd.c b/src/fd.c
    index 4d4700f8d..10ca2af65 100644
    --- a/src/fd.c
    +++ b/src/fd.c
    @@ -214,7 +214,7 @@ void fd_rm_from_fd_list(volatile struct fdlist *list, int fd)
     
     #else
     lock_self_next:
    -       next = fdtab[fd].update.next;
    +       next = HA_ATOMIC_LOAD(&fdtab[fd].update.next);
            if (next == -2)
                    goto lock_self_next;
            if (next <= -3)
    @@ -222,7 +222,7 @@ void fd_rm_from_fd_list(volatile struct fdlist *list, int fd)
            if (unlikely(!_HA_ATOMIC_CAS(&fdtab[fd].update.next, &next, -2)))
                    goto lock_self_next;
     lock_self_prev:
    -       prev = fdtab[fd].update.prev;
    +       prev = HA_ATOMIC_LOAD(&fdtab[fd].update.prev);
            if (prev == -2)
                    goto lock_self_prev;
            if (unlikely(!_HA_ATOMIC_CAS(&fdtab[fd].update.prev, &prev, -2)))
    

    At each place, the change consists in replacing x=y with x=HA_ATOMIC_LOAD(&y).

  19. wtarreau commented on Feb 27, 2023

    @wtarreau
    Member

    I just check for other parts being affected. The one above was not used for x86_64, but it could have got blocked by another one looping in fd_add_to_fd_list). I've run a quick check on the whole executable and only found the fd_add one on my binary:

    $ objdump -dr haproxy | fgrep -w jmp | grep ':\s*eb fe'
      6a9dfc:       eb fe                   jmp    6a9dfc <fd_add_to_fd_list+0x7c>
    

    It's indeed only present since 2.7, as 2.6 doesn't have it.

  20. wtarreau commented on Feb 27, 2023

    @wtarreau
    Member

    @Darlelet since you diagnosed the problem and its origin, I'll let you handle the final patch if that's OK for you. Thanks!

  21. Darlelet commented on Feb 27, 2023

    @Darlelet
    Contributor

    The patch should be applied for fd_rm_from_fd_list() as well, as in @xanaxalan previous trace, the issue occurred in fd_rm_from_fd_list()

    You're right Willy, I didn't take the time to properly re-check the original backtrace and remembered I saw the same check being performed in fd_rm_from_fd_list() while looking at the code a few days ago, that got me confused in thinking that I originally saw it in the backtrace but it was only a side-discovery.
    So indeed this last one probably doesn't affect @xanaxalan

    However, there is one last thing about fd_rm_from_fd_list():

    What do you think Willy, is this needed as well (since fdtab is not declared as volatile)?

    diff --git a/src/fd.c b/src/fd.c
    index f4f1bae81..b53182c64 100644
    --- a/src/fd.c
    +++ b/src/fd.c
    @@ -194,7 +194,7 @@ void fd_rm_from_fd_list(volatile struct fdlist *list, int fd)
     lock_self:
     #if (defined(HA_CAS_IS_8B) || defined(HA_HAVE_CAS_DW))
            next_list.ent.next = next_list.ent.prev = -2;
    -       cur_list.ent = fdtab[fd].update;
    +       cur_list.ent = *(volatile struct fdlist_entry *)&fdtab[fd].update;
            /* First, attempt to lock our own entries */
            do {
                    /* The FD is not in the FD cache, give up */

    Or even better:

    diff --git a/src/fd.c b/src/fd.c
    index f4f1bae81..ff644b482 100644
    --- a/src/fd.c
    +++ b/src/fd.c
    @@ -194,7 +194,11 @@ void fd_rm_from_fd_list(volatile struct fdlist *list, int fd)
     lock_self:
     #if (defined(HA_CAS_IS_8B) || defined(HA_HAVE_CAS_DW))
            next_list.ent.next = next_list.ent.prev = -2;
    -       cur_list.ent = fdtab[fd].update;
    +#ifdef HA_CAS_IS_8B
    +       cur_list.u64 = HA_ATOMIC_LOAD(((uint64_t *)&fdtab[fd].update));
    +#else
    +       cur_list.u32 = HA_ATOMIC_LOAD(((long *)&fdtab[fd].update));
    +#endif
            /* First, attempt to lock our own entries */
            do {
                    /* The FD is not in the FD cache, give up */

    (this way we make sure we don't miss anything from 4d9888c)

    @Darlelet since you diagnosed the problem and its origin, I'll let you handle the final patch if that's OK for you. Thanks!

    You did help a lot, thank you :) Alright I'm fine with that

  22. wtarreau commented on Feb 27, 2023

    @wtarreau
    Member

    The first one could be a good idea, because indeed, while we're copying a structure, it only contains two fields and could reside in a register pair that the compiler may propagate through the loop if it had enough. The second option however is not correct for 32-bit (single load) and is generally not a good idea in that we prefer to avoid explicit casts as much as possible as they tend to hide problems. And yes I know we do have some a few lines later for the CAS and DWCAS but that's for the good cause :-) You can even use this one which will preserve type checking in case we decide to change the type of fdtab->update in the future:

    cur_list.ent = *(volatile typeof(fdtab->update)*)&fdtab[fd].update;
    
  23. Darlelet commented on Feb 27, 2023

    @Darlelet
    Contributor

    Oh yes indeed I missed the double-load for the DWCAS case, good catch

    You can even use this one which will preserve type checking in case we decide to change the type of fdtab->update in the future:

    I'll take it, thanks!

  24. wtarreau commented on Feb 27, 2023

    @wtarreau
    Member

    And by the way I could confirm that exactly this could happen there indeed with the following simplified code:

    struct pair {
    	int a, b;
    };
    
    void wait_zero(const struct pair *pair)
    {
    	volatile union {
    		struct pair ent;
    		unsigned int u32[2];
    	} cur_list;
    
    	do {
    		cur_list.ent = *pair;
    	} while (cur_list.u32[0]);
    }
    

    It just keeps a copy of the values in a single 64-bit register and works it it in loops:

       0:   48 8b 17                mov    (%rdi),%rdx        ### loads *pair into rdx
       3:   0f 1f 44 00 00          nopl   0x0(%rax,%rax,1)
       8:   48 89 54 24 f8          mov    %rdx,-0x8(%rsp)
       d:   8b 44 24 f8             mov    -0x8(%rsp),%eax
      11:   85 c0                   test   %eax,%eax
      13:   75 f3                   jne    8                  ### loops back with the cached rdx value
      15:   c3                      ret    
    

    Fixing it using the volatile dereference does the job, as expected:

    	do {
    		cur_list.ent = *(volatile struct pair*)pair;
    	} while (cur_list.u32[0]);
    ...
       0:   48 8b 07                mov    (%rdi),%rax
       3:   48 89 44 24 f8          mov    %rax,-0x8(%rsp)
       8:   8b 44 24 f8             mov    -0x8(%rsp),%eax
       c:   85 c0                   test   %eax,%eax
       e:   75 f0                   jne    0
      10:   c3                      ret    
    
    

    With that said, on my machine fd_rm_from_fd_list() didn't have this problem since it used to store the update struct into rax which is overwritten over and over, so the fdtab[fd].update was always reloaded.

  25. xanaxalan commented on Mar 8, 2023

    @xanaxalan
    Author

    Looks like latest patch fixed the issue. Did not see any crashes since I deployed patched version.

  26. Darlelet commented on Mar 8, 2023

    @Darlelet
    Contributor

    Great! Thank you for letting us know @xanaxalan

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    status: needs-triageThis issue needs to be triaged.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