Hi,

I'm using haproxy on FreeBSD 9.1-amd64 inside a VMware VM.

I realized that when I have a situation where all servers in a backend
are down, haproxy crashes:
Jul 30 08:03:52 px2-bla kernel: pid 58816 (haproxy), uid 80:
exited on signal 11 (core dumped)

pkg info|grep haproxy
haproxy-1.4.24                 The Reliable, High Performance
TCP/HTTP Load Balancer 
# ldd /usr/local/sbin/haproxy
/usr/local/sbin/haproxy: libcrypt.so.5 => /lib/libcrypt.so.5
(0x8008c7000) libc.so.7 => /lib/libc.so.7 (0x800ae6000)

I've got the following options:

cat /usr/local/etc/poudriere.d/91amd64-options/net_haproxy/options 
# This file is auto-generated by 'make config'.
# Options for haproxy-1.4.24
_OPTIONS_READ=haproxy-1.4.24
_FILE_COMPLETE_OPTIONS_LIST=PCRE DPCRE SPCRE
OPTIONS_FILE_SET+=PCRE
OPTIONS_FILE_UNSET+=DPCRE
OPTIONS_FILE_SET+=SPCRE

After some tinkering, I got a core-dump out of it:

(px2-bla </root>) 0 #
gdb /usr/local/sbin/haproxy /var/tmp/haproxy.58816
GNU gdb 6.1.1 [FreeBSD] Copyright 2004 Free Software
Foundation, Inc. GDB is free software, covered by the GNU General
Public License, and you are welcome to change it and/or distribute
copies of it under certain conditions. Type "show copying" to see the
conditions. There is absolutely no warranty for GDB.  Type "show
warranty" for details. This GDB was configured as
"amd64-marcel-freebsd"...(no debugging symbols found)... Core was
generated by `haproxy'. Program terminated with signal 11, Segmentation
fault. Reading symbols from /lib/libcrypt.so.5...(no debugging symbols
found)...done. Loaded symbols for /lib/libcrypt.so.5
Reading symbols from /lib/libc.so.7...(no debugging symbols
found)...done. Loaded symbols for /lib/libc.so.7
Reading symbols from /libexec/ld-elf.so.1...(no debugging symbols
found)...done. Loaded symbols for /libexec/ld-elf.so.1
#0  0x000000000043be27 in ?? ()
(gdb) bt
#0  0x000000000043be27 in ?? ()
#1  0x00000000004087e1 in ?? ()
#2  0x0000000000402c01 in ?? ()
#3  0x0000000000404607 in ?? ()
#4  0x0000000000402ade in ?? ()
#5  0x00000008006c9000 in ?? ()
#6  0x0000000000000000 in ?? ()
#7  0x0000000000000000 in ?? ()
#8  0x0000000000000006 in ?? ()
#9  0x00007fffffffdde8 in ?? ()
#10 0x00007fffffffde00 in ?? ()
#11 0x00007fffffffde03 in ?? ()
#12 0x00007fffffffde06 in ?? ()
#13 0x00007fffffffde21 in ?? ()
#14 0x00007fffffffde24 in ?? ()
#15 0x0000000000000000 in ?? ()
#16 0x00007fffffffde39 in ?? ()
#17 0x00007fffffffde47 in ?? ()
#18 0x00007fffffffde4f in ?? ()
#19 0x00007fffffffde63 in ?? ()
#20 0x00007fffffffdeba in ?? ()
#21 0x00007fffffffdec7 in ?? ()
#22 0x00007fffffffded1 in ?? ()
#23 0x00007fffffffdeef in ?? ()
#24 0x00007fffffffdefa in ?? ()
#25 0x00007fffffffdf04 in ?? ()
#26 0x00007fffffffdf0f in ?? ()
#27 0x00007fffffffdf20 in ?? ()
#28 0x00007fffffffdf39 in ?? ()
#29 0x00007fffffffdf4c in ?? ()
#30 0x00007fffffffdf59 in ?? ()
#31 0x00007fffffffdf65 in ?? ()
#32 0x0000000000000000 in ?? ()
#33 0x0000000000000003 in ?? ()
#34 0x0000000000400040 in ?? ()
#35 0x0000000000000004 in ?? ()
#36 0x0000000000000038 in ?? ()
#37 0x0000000000000005 in ?? ()
#38 0x0000000000000008 in ?? ()
#39 0x0000000000000006 in ?? ()
#40 0x0000000000001000 in ?? ()
#41 0x0000000000000008 in ?? ()
#42 0x0000000000000000 in ?? ()
#43 0x0000000000000009 in ?? ()
#44 0x0000000000402a50 in ?? ()
#45 0x0000000000000007 in ?? ()
#46 0x00000008006ae000 in ?? ()
#47 0x000000000000000f in ?? ()
#48 <signal handler called>
#49 0x0000000000000000 in ?? ()
Previous frame inner to this frame (corrupt stack?)


I'd like to know what is causing this.


Config is like this:

global
  log 127.0.0.1   local0
  log 127.0.0.1   local1 notice
  #log loghost    local0 info
  maxconn 4096
  #debug
  #quiet
  user www
  group www
  daemon

defaults
  log     global
  mode    http
  retries 2
  timeout client 50s
  timeout connect 5s
  timeout server 50s
  option dontlognull
  option forwardfor
  option httplog
  option redispatch
  balance  source
  option httpchk GET /ipmon.txt HTTP/1.0\r\n\r\n
  http-check expect rstring OK
  http-check disable-on-404
  http-send-name-header X-Target-Server
  default-server minconn 50 maxconn 100 

# Set up application listeners here.

frontend s
  maxconn 8000
  bind 0.0.0.0:8000
  default_backend servers-old-s
  reqidel ^X-Forwarded-For:.*

frontend s-stage
  maxconn 8000
  bind 0.0.0.0:8002
  default_backend servers-old-s-stage
  reqidel ^X-Forwarded-For:.*

frontend p
  maxconn 8000
  bind 0.0.0.0:8004
  default_backend servers-old-p
  reqidel ^X-Forwarded-For:.*

frontend p-stage
  maxconn 8000
  bind 0.0.0.0:8006
  default_backend servers-old-p-stage
  reqidel ^X-Forwarded-For:.*

frontend d-old
  maxconn 8000
  bind 0.0.0.0:8008
  default_backend servers-old-d
  reqidel ^X-Forwarded-For:.*



backend servers-old-d
  fullconn 8000
  #option httpchk GET /ip_monitor_mysql.php HTTP/1.1\r\nHost:
www.d.domain\r\nConnection:\ close server app2   first.ip:80 weight 1
check server input1 second.ip:80 weight 1 check

backend servers-old-s
  fullconn 8000
  #option httpchk GET /ip_monitor_mysql.php HTTP/1.1\r\nHost:
www.s.domain\r\nConnection:\ close server app2   first.ip:80 weight 1
check server input1 second.ip:80 weight 1 check

backend servers-old-p
  fullconn 8000
  #option httpchk GET /ip_monitor_mysql.php HTTP/1.1\r\nHost:
www.p.domain\r\nConnection:\ close server app2   first.ip:80 weight 1
check server input1 second.ip:80 weight 1 check

backend servers-old-s-stage
  fullconn 8000
  #option httpchk GET /ip_monitor_mysql.php HTTP/1.1\r\nHost:
s-stage.1st.domain\r\nConnection:\ close server app2   first.ip:80
weight 1 check server input1 second.ip:80 weight 1 check

backend servers-old-p-stage
  fullconn 8000
  #option httpchk GET /ip_monitor_mysql.php HTTP/1.1\r\nHost:
p-stage.1st.domain\r\nConnection:\ close server app2   first.ip:80
weight 1 check server input1 second.ip:80 weight 1 check



listen admin 0.0.0.0:22002
  mode http
  stats uri /



Regards,
Rainer
 




Reply via email to