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
>

Reply via email to