I grabbed the source from the PPA and rebuilt it, installed the dbg
package, and here's one of the "bt full"s:
(gdb) bt full
#0 pattern_exec_match (head=head@entry=0x55e4dd275478,
smp=smp@entry=0x7fbf9ef650c0,
fill=fill@entry=0) at src/pattern.c:2541
__pl_l = <optimized out>
__pl_r = <optimized out>
list = 0x0
pat = <optimized out>
#1 0x000055e4db757cda in acl_exec_cond (cond=0x55e4dd2760a0,
px=0x55e4dd23a600, sess=sess@entry=0x7fbf9812a1a0, strm=strm@entry=0x0,
opt=6, opt@entry=2) at src/acl.c:1160
suite = 0x55e4dd2760f0
term = 0x55e4dd271c70
expr = 0x55e4dd275470
acl = 0x55e4dd2755b0
smp = {flags = 0, data = {type = 4, u = {sint = 1728908554, ipv4 =
{s_addr = 1728908554}, ipv6 = {__in6_u = {__u6_addr8 = "\n\r\rg", '\000'
<repeats 11 times>, __u6_addr16 = {3338, 26381, 0, 0, 0, 0, 0, 0},
__u6_addr32 = {1728908554, 0, 0, 0}}}, str = {size = 1728908554, area =
0x0, data = 0, head = 0}, meth = {meth = 10, str = {
size = 0, area = 0x0, data = 0, head = 0}}}}, ctx = {p =
0x0, i = 0, ll = 0, d = 0, a = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
px = 0x55e4dd23a600, sess = 0x7fbf9812a1a0, strm = 0x0, opt = 6}
acl_res = ACL_TEST_FAIL
suite_res = ACL_TEST_PASS
cond_res = ACL_TEST_FAIL
#2 0x000055e4db748648 in tcp_exec_l4_rules (sess=sess@entry=0x7fbf9812a1a0)
at src/tcp_rules.c:420
rule = 0x55e4dd275f00
ts = <optimized out>
t = <optimized out>
conn = <optimized out>
result = 1
ret = ACL_TEST_PASS
#3 0x000055e4db73ec54 in session_accept_fd (l=0x55e4dd23c660, cfd=26,
addr=<optimized out>) at src/session.c:193
cli_conn = <optimized out>
p = 0x55e4dd23a600
sess = 0x7fbf9812a1a0
ret = -1
#4 0x000055e4db729994 in accept_queue_process (t=<optimized out>,
context=0x55e4dba2c0c0 <accept_queue_rings+16384>, state=<optimized out>)
at src/listener.c:176
ring = 0x55e4dba2c0c0 <accept_queue_rings+16384>
li = 0x55e4dd23c660
addr = {ss_family = 2,
__ss_padding =
"\272\342\n\r\rg\000\000\000\000\000\000\000\000x\322S\335\344U\000\000
\226!\230\277\177\000\000`y\031\230\277\177\000\000\000\000\000\000\000\000\000\000\060S\366\236\277\177\000\000\255>\275\025\377\177\000\000@S\366\236\277\177\000\000`<\275\025\377\177\000\000\260S\366\236\277\177\000\000\001\000\000\000\002\000\000\000PS\366\236\277\177\000\000\001\000\000\000\000\000\000\000`S\366\236\277\177\000",
__ss_align = 1}
max_accept = 64
addr_len = 16
ret = <optimized out>
fd = <optimized out>
#5 0x000055e4db74b68e in process_runnable_tasks () at src/task.c:413
t = <optimized out>
state = <optimized out>
ctx = <optimized out>
process = <optimized out>
tt = 0x55e4dbb2d540 <task_per_thread+128>
lrq = <optimized out>
grq = <optimized out>
t = <optimized out>
max_processed = 200
tmp_list = <optimized out>
#6 0x000055e4db6f6c62 in run_poll_loop () at src/haproxy.c:2645
next = <optimized out>
wake = <optimized out>
next = <optimized out>
wake = <optimized out>
#7 run_thread_poll_loop (data=<optimized out>) at src/haproxy.c:2762
ptaf = <optimized out>
ptif = <optimized out>
ptdf = <optimized out>
ptff = <optimized out>
init_left = 0
init_mutex = pthread_mutex_t = {Type = Normal, Status = Not
acquired, Robust = No, Shared = No, Protocol = None}
init_cond = pthread_cond_t = {Threads known to still execute a wait
function = 0, Clock ID = CLOCK_REALTIME, Shared = No}
#8 0x00007fbfa1c406db in start_thread (arg=0x7fbf9ef88700) at
pthread_create.c:463
pd = 0x7fbf9ef88700
now = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140460982568704,
6118752029739392961, 140460982424832, 0, 1, 140733557630496,
-6082936609730125887, -6082833652346708031}, mask_was_saved = 0}}, priv =
{pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype
= 0}}}
not_first_call = <optimized out>
#9 0x00007fbfa06b488f in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.
On Tue, Mar 3, 2020 at 11:25 PM Vincent Bernat <[email protected]> wrote:
> ❦ 3 mars 2020 15:34 -07, Sean Reifschneider <[email protected]>:
>
> > We've been running haproxy 1.8 series for quite a while. We're currently
> > in the process of updating to 2.1, and have installed from the vbernat
> PPA
> > on Ubuntu 18.04 using the same old config file.
> >
> > Now we are seeing segfaults a few times a day:
>
> You can easily collect core information if you install systemd-coredump.
> Then, use "coredumpctl list" to locate the collected core, then
> "coredumpctl info XXX" to get some stack traces. If you install the
> -dbgsym package, you can also use "coredumpctl debug XXX" then use "bt
> full" and send the output.
> --
> Don't stop with your first draft.
> - The Elements of Programming Style (Kernighan & Plauger)
>