I've just sent some additional data to Willy. :) Sure, I'll test your patch!
pt., 10 maj 2019 o 15:11 Olivier Houchard <ohouch...@haproxy.com> napisaĆ(a): > Hi Maciej, > > On Thu, May 09, 2019 at 07:25:54PM +0200, Maciej Zdeb wrote: > > Hi again, > > > > I have bad news, HAProxy 1.9.7-35b44da still looping :/ > > > > gdb session: > > h2_process_mux (h2c=0x1432420) at src/mux_h2.c:2609 > > 2609 list_for_each_entry_safe(h2s, h2s_back, &h2c->send_list, > list) { > > (gdb) n > > 2610 if (h2c->st0 >= H2_CS_ERROR || h2c->flags & > > H2_CF_MUX_BLOCK_ANY) > > (gdb) > > 2609 list_for_each_entry_safe(h2s, h2s_back, &h2c->send_list, > list) { > > (gdb) > > 2610 if (h2c->st0 >= H2_CS_ERROR || h2c->flags & > > H2_CF_MUX_BLOCK_ANY) > > (gdb) > > 2609 list_for_each_entry_safe(h2s, h2s_back, &h2c->send_list, > list) { > > (gdb) > > 2613 if (!LIST_ISEMPTY(&h2s->sending_list)) > > (gdb) > > 2619 if (!h2s->send_wait) { > > (gdb) > > 2620 LIST_DEL_INIT(&h2s->list); > > (gdb) > > 2609 list_for_each_entry_safe(h2s, h2s_back, &h2c->send_list, > list) { > > (gdb) > > 2610 if (h2c->st0 >= H2_CS_ERROR || h2c->flags & > > H2_CF_MUX_BLOCK_ANY) > > (gdb) > > 2609 list_for_each_entry_safe(h2s, h2s_back, &h2c->send_list, > list) { > > (gdb) > > 2610 if (h2c->st0 >= H2_CS_ERROR || h2c->flags & > > H2_CF_MUX_BLOCK_ANY) > > (gdb) > > 2609 list_for_each_entry_safe(h2s, h2s_back, &h2c->send_list, > list) { > > (gdb) > > 2613 if (!LIST_ISEMPTY(&h2s->sending_list)) > > (gdb) > > 2619 if (!h2s->send_wait) { > > (gdb) > > 2620 LIST_DEL_INIT(&h2s->list); > > (gdb) > > 2609 list_for_each_entry_safe(h2s, h2s_back, &h2c->send_list, > list) { > > (gdb) > > 2610 if (h2c->st0 >= H2_CS_ERROR || h2c->flags & > > H2_CF_MUX_BLOCK_ANY) > > (gdb) > > 2609 list_for_each_entry_safe(h2s, h2s_back, &h2c->send_list, > list) { > > (gdb) > > 2610 if (h2c->st0 >= H2_CS_ERROR || h2c->flags & > > H2_CF_MUX_BLOCK_ANY) > > (gdb) > > 2609 list_for_each_entry_safe(h2s, h2s_back, &h2c->send_list, > list) { > > (gdb) > > 2613 if (!LIST_ISEMPTY(&h2s->sending_list)) > > (gdb) > > 2619 if (!h2s->send_wait) { > > (gdb) > > 2620 LIST_DEL_INIT(&h2s->list); > > (gdb) > > 2609 list_for_each_entry_safe(h2s, h2s_back, &h2c->send_list, > list) { > > (gdb) p *h2s > > $1 = {cs = 0x1499030, sess = 0x819580 <pool_cache+96>, h2c = 0x1432420, > h1m > > = {state = H1_MSG_DONE, flags = 29, curr_len = 0, body_len = 111976, > next = > > 411, err_pos = -1, err_state = 0}, by_id = {node = {branches = {b = > > {0x13dcf50, > > 0x15b3120}}, node_p = 0x125ab90, leaf_p = 0x15b3121, bit = 1, > pfx > > = 0}, key = 11}, id = 11, flags = 28675, mws = 977198, errcode = > > H2_ERR_NO_ERROR, st = H2_SS_CLOSED, status = 200, body_len = 0, rxbuf = > > {size = 0, area = 0x0, > > data = 0, head = 0}, wait_event = {task = 0x15077a0, handle = 0x0, > > events = 0}, recv_wait = 0x0, send_wait = 0x0, list = {n = 0x15b31a8, p = > > 0x15b31a8}, sending_list = {n = 0x15b31b8, p = 0x15b31b8}} > > (gdb) p *h2s_back > > $2 = {cs = 0x1499030, sess = 0x819580 <pool_cache+96>, h2c = 0x1432420, > h1m > > = {state = H1_MSG_DONE, flags = 29, curr_len = 0, body_len = 111976, > next = > > 411, err_pos = -1, err_state = 0}, by_id = {node = {branches = {b = > > {0x13dcf50, > > 0x15b3120}}, node_p = 0x125ab90, leaf_p = 0x15b3121, bit = 1, > pfx > > = 0}, key = 11}, id = 11, flags = 28675, mws = 977198, errcode = > > H2_ERR_NO_ERROR, st = H2_SS_CLOSED, status = 200, body_len = 0, rxbuf = > > {size = 0, area = 0x0, > > data = 0, head = 0}, wait_event = {task = 0x15077a0, handle = 0x0, > > events = 0}, recv_wait = 0x0, send_wait = 0x0, list = {n = 0x15b31a8, p = > > 0x15b31a8}, sending_list = {n = 0x15b31b8, p = 0x15b31b8}} > > (gdb) p *h2c > > $3 = {conn = 0x17e3310, st0 = H2_CS_FRAME_H, errcode = H2_ERR_NO_ERROR, > > flags = 0, streams_limit = 100, max_id = 13, rcvd_c = 0, rcvd_s = 0, > ddht = > > 0x1e99a40, dbuf = {size = 0, area = 0x0, data = 0, head = 0}, dsi = 13, > dfl > > = 4, > > dft = 8 '\b', dff = 0 '\000', dpl = 0 '\000', last_sid = -1, mbuf = > {size > > = 16384, area = 0x1e573a0 "", data = 13700, head = 0}, msi = -1, mfl = 0, > > mft = 0 '\000', mff = 0 '\000', miw = 65535, mws = 10159243, mfs = 16384, > > timeout = 20000, shut_timeout = 20000, nb_streams = 2, nb_cs = 3, > > nb_reserved = 0, stream_cnt = 7, proxy = 0xb85fc0, task = 0x126aa30, > > streams_by_id = {b = {0x125ab91, 0x0}}, send_list = {n = 0x15b31a8, p = > > 0x125ac18}, fctl_list = { > > n = 0x14324f8, p = 0x14324f8}, sending_list = {n = 0x1432508, p = > > 0x1432508}, buf_wait = {target = 0x0, wakeup_cb = 0x0, list = {n = > > 0x1432528, p = 0x1432528}}, wait_event = {task = 0x1420fa0, handle = 0x0, > > events = 1}} > > (gdb) p list > > $4 = (int *) 0x0 > > (gdb) n > > 2610 if (h2c->st0 >= H2_CS_ERROR || h2c->flags & > > H2_CF_MUX_BLOCK_ANY) > > (gdb) n > > 2609 list_for_each_entry_safe(h2s, h2s_back, &h2c->send_list, > list) { > > (gdb) p *h2s > > $5 = {cs = 0x1499030, sess = 0x819580 <pool_cache+96>, h2c = 0x1432420, > h1m > > = {state = H1_MSG_DONE, flags = 29, curr_len = 0, body_len = 111976, > next = > > 411, err_pos = -1, err_state = 0}, by_id = {node = {branches = {b = > > {0x13dcf50, > > 0x15b3120}}, node_p = 0x125ab90, leaf_p = 0x15b3121, bit = 1, > pfx > > = 0}, key = 11}, id = 11, flags = 28675, mws = 977198, errcode = > > H2_ERR_NO_ERROR, st = H2_SS_CLOSED, status = 200, body_len = 0, rxbuf = > > {size = 0, area = 0x0, > > data = 0, head = 0}, wait_event = {task = 0x15077a0, handle = 0x0, > > events = 0}, recv_wait = 0x0, send_wait = 0x0, list = {n = 0x15b31a8, p = > > 0x15b31a8}, sending_list = {n = 0x15b31b8, p = 0x15b31b8}} > > (gdb) p *h2s_back > > $6 = {cs = 0x1499030, sess = 0x819580 <pool_cache+96>, h2c = 0x1432420, > h1m > > = {state = H1_MSG_DONE, flags = 29, curr_len = 0, body_len = 111976, > next = > > 411, err_pos = -1, err_state = 0}, by_id = {node = {branches = {b = > > {0x13dcf50, > > 0x15b3120}}, node_p = 0x125ab90, leaf_p = 0x15b3121, bit = 1, > pfx > > = 0}, key = 11}, id = 11, flags = 28675, mws = 977198, errcode = > > H2_ERR_NO_ERROR, st = H2_SS_CLOSED, status = 200, body_len = 0, rxbuf = > > {size = 0, area = 0x0, > > data = 0, head = 0}, wait_event = {task = 0x15077a0, handle = 0x0, > > events = 0}, recv_wait = 0x0, send_wait = 0x0, list = {n = 0x15b31a8, p = > > 0x15b31a8}, sending_list = {n = 0x15b31b8, p = 0x15b31b8}} > > (gdb) p *h2c > > $7 = {conn = 0x17e3310, st0 = H2_CS_FRAME_H, errcode = H2_ERR_NO_ERROR, > > flags = 0, streams_limit = 100, max_id = 13, rcvd_c = 0, rcvd_s = 0, > ddht = > > 0x1e99a40, dbuf = {size = 0, area = 0x0, data = 0, head = 0}, dsi = 13, > dfl > > = 4, > > dft = 8 '\b', dff = 0 '\000', dpl = 0 '\000', last_sid = -1, mbuf = > {size > > = 16384, area = 0x1e573a0 "", data = 13700, head = 0}, msi = -1, mfl = 0, > > mft = 0 '\000', mff = 0 '\000', miw = 65535, mws = 10159243, mfs = 16384, > > timeout = 20000, shut_timeout = 20000, nb_streams = 2, nb_cs = 3, > > nb_reserved = 0, stream_cnt = 7, proxy = 0xb85fc0, task = 0x126aa30, > > streams_by_id = {b = {0x125ab91, 0x0}}, send_list = {n = 0x15b31a8, p = > > 0x125ac18}, fctl_list = { > > n = 0x14324f8, p = 0x14324f8}, sending_list = {n = 0x1432508, p = > > 0x1432508}, buf_wait = {target = 0x0, wakeup_cb = 0x0, list = {n = > > 0x1432528, p = 0x1432528}}, wait_event = {task = 0x1420fa0, handle = 0x0, > > events = 1}} > > (gdb) n > > 2610 if (h2c->st0 >= H2_CS_ERROR || h2c->flags & > > H2_CF_MUX_BLOCK_ANY) > > (gdb) n > > 2609 list_for_each_entry_safe(h2s, h2s_back, &h2c->send_list, > list) { > > (gdb) p *h2s > > $8 = {cs = 0x1499030, sess = 0x819580 <pool_cache+96>, h2c = 0x1432420, > h1m > > = {state = H1_MSG_DONE, flags = 29, curr_len = 0, body_len = 111976, > next = > > 411, err_pos = -1, err_state = 0}, by_id = {node = {branches = {b = > > {0x13dcf50, > > 0x15b3120}}, node_p = 0x125ab90, leaf_p = 0x15b3121, bit = 1, > pfx > > = 0}, key = 11}, id = 11, flags = 28675, mws = 977198, errcode = > > H2_ERR_NO_ERROR, st = H2_SS_CLOSED, status = 200, body_len = 0, rxbuf = > > {size = 0, area = 0x0, > > data = 0, head = 0}, wait_event = {task = 0x15077a0, handle = 0x0, > > events = 0}, recv_wait = 0x0, send_wait = 0x0, list = {n = 0x15b31a8, p = > > 0x15b31a8}, sending_list = {n = 0x15b31b8, p = 0x15b31b8}} > > (gdb) p *h2s_back > > $9 = {cs = 0x1499030, sess = 0x819580 <pool_cache+96>, h2c = 0x1432420, > h1m > > = {state = H1_MSG_DONE, flags = 29, curr_len = 0, body_len = 111976, > next = > > 411, err_pos = -1, err_state = 0}, by_id = {node = {branches = {b = > > {0x13dcf50, > > 0x15b3120}}, node_p = 0x125ab90, leaf_p = 0x15b3121, bit = 1, > pfx > > = 0}, key = 11}, id = 11, flags = 28675, mws = 977198, errcode = > > H2_ERR_NO_ERROR, st = H2_SS_CLOSED, status = 200, body_len = 0, rxbuf = > > {size = 0, area = 0x0, > > data = 0, head = 0}, wait_event = {task = 0x15077a0, handle = 0x0, > > events = 0}, recv_wait = 0x0, send_wait = 0x0, list = {n = 0x15b31a8, p = > > 0x15b31a8}, sending_list = {n = 0x15b31b8, p = 0x15b31b8}} > > (gdb) p *h2c > > $10 = {conn = 0x17e3310, st0 = H2_CS_FRAME_H, errcode = H2_ERR_NO_ERROR, > > flags = 0, streams_limit = 100, max_id = 13, rcvd_c = 0, rcvd_s = 0, > ddht = > > 0x1e99a40, dbuf = {size = 0, area = 0x0, data = 0, head = 0}, dsi = 13, > dfl > > = 4, > > dft = 8 '\b', dff = 0 '\000', dpl = 0 '\000', last_sid = -1, mbuf = > {size > > = 16384, area = 0x1e573a0 "", data = 13700, head = 0}, msi = -1, mfl = 0, > > mft = 0 '\000', mff = 0 '\000', miw = 65535, mws = 10159243, mfs = 16384, > > timeout = 20000, shut_timeout = 20000, nb_streams = 2, nb_cs = 3, > > nb_reserved = 0, stream_cnt = 7, proxy = 0xb85fc0, task = 0x126aa30, > > streams_by_id = {b = {0x125ab91, 0x0}}, send_list = {n = 0x15b31a8, p = > > 0x125ac18}, fctl_list = { > > n = 0x14324f8, p = 0x14324f8}, sending_list = {n = 0x1432508, p = > > 0x1432508}, buf_wait = {target = 0x0, wakeup_cb = 0x0, list = {n = > > 0x1432528, p = 0x1432528}}, wait_event = {task = 0x1420fa0, handle = 0x0, > > events = 1}} > > (gdb) n > > 2613 if (!LIST_ISEMPTY(&h2s->sending_list)) > > (gdb) > > 2619 if (!h2s->send_wait) { > > (gdb) > > 2620 LIST_DEL_INIT(&h2s->list); > > (gdb) p *h2s > > $11 = {cs = 0x1499030, sess = 0x819580 <pool_cache+96>, h2c = 0x1432420, > > h1m = {state = H1_MSG_DONE, flags = 29, curr_len = 0, body_len = 111976, > > next = 411, err_pos = -1, err_state = 0}, by_id = {node = {branches = {b > = > > {0x13dcf50, > > 0x15b3120}}, node_p = 0x125ab90, leaf_p = 0x15b3121, bit = 1, > pfx > > = 0}, key = 11}, id = 11, flags = 28675, mws = 977198, errcode = > > H2_ERR_NO_ERROR, st = H2_SS_CLOSED, status = 200, body_len = 0, rxbuf = > > {size = 0, area = 0x0, > > data = 0, head = 0}, wait_event = {task = 0x15077a0, handle = 0x0, > > events = 0}, recv_wait = 0x0, send_wait = 0x0, list = {n = 0x15b31a8, p = > > 0x15b31a8}, sending_list = {n = 0x15b31b8, p = 0x15b31b8}} > > (gdb) n > > 2609 list_for_each_entry_safe(h2s, h2s_back, &h2c->send_list, > list) { > > (gdb) n > > 2610 if (h2c->st0 >= H2_CS_ERROR || h2c->flags & > > H2_CF_MUX_BLOCK_ANY) > > (gdb) n > > 2609 list_for_each_entry_safe(h2s, h2s_back, &h2c->send_list, > list) { > > (gdb) n > > 2610 if (h2c->st0 >= H2_CS_ERROR || h2c->flags & > > H2_CF_MUX_BLOCK_ANY) > > (gdb) n > > 2609 list_for_each_entry_safe(h2s, h2s_back, &h2c->send_list, > list) { > > (gdb) n > > 2613 if (!LIST_ISEMPTY(&h2s->sending_list)) > > (gdb) n > > 2619 if (!h2s->send_wait) { > > (gdb) n > > 2620 LIST_DEL_INIT(&h2s->list); > > (gdb) n > > 2609 list_for_each_entry_safe(h2s, h2s_back, &h2c->send_list, > list) { > > (gdb) n > > 2610 if (h2c->st0 >= H2_CS_ERROR || h2c->flags & > > H2_CF_MUX_BLOCK_ANY) > > > > Thanks a lot, this is really helpful ! > > I just pushed bcf3e9c622baceb7aafc01d72e2dbb6992b872b8, and I think it > could help, any chance you can test it ? > > Thanks ! > > Olivier >