Olivier, it's still looping, but differently:

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)
2613            if (!LIST_ISEMPTY(&h2s->sending_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)
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)
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)
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)
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)
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) gcore
warning: target file /proc/12265/cmdline contained unexpected null
characters
warning: Memory read failed for corefile section, 12288 bytes at
0x7fff17ff3000.
Saved corefile core.12265
(gdb) p *h2s
$1 = {cs = 0x2f84190, sess = 0x819580 <pool_cache+96>, h2c = 0x2f841a0, h1m
= {state = 48, flags = 0, curr_len = 38317, body_len = 103852, next = 413,
err_pos = -1, err_state = 0}, by_id = {node = {branches = {b = {0x34c0260,
          0x321d330}}, node_p = 0x0, leaf_p = 0x0, bit = 1, pfx = 47005},
key = 3}, id = 3, flags = 28675, mws = 1017461, 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 = 0x2cd0ed0, handle = 0x3, events = 0},
recv_wait = 0x0, send_wait = 0x321d390, list = {n = 0x321d3b8, p =
0x321d3b8}, sending_list = {n = 0x3174cf8, p = 0x3174cf8}}
(gdb) p *h2s_back
$2 = {cs = 0x2f84190, sess = 0x819580 <pool_cache+96>, h2c = 0x2f841a0, h1m
= {state = 48, flags = 0, curr_len = 38317, body_len = 103852, next = 413,
err_pos = -1, err_state = 0}, by_id = {node = {branches = {b = {0x34c0260,
          0x321d330}}, node_p = 0x0, leaf_p = 0x0, bit = 1, pfx = 47005},
key = 3}, id = 3, flags = 28675, mws = 1017461, 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 = 0x2cd0ed0, handle = 0x3, events = 0},
recv_wait = 0x0, send_wait = 0x321d390, list = {n = 0x321d3b8, p =
0x321d3b8}, sending_list = {n = 0x3174cf8, p = 0x3174cf8}}
(gdb) p *h2c
$3 = {conn = 0x2d10700, st0 = H2_CS_FRAME_H, errcode = H2_ERR_NO_ERROR,
flags = 0, streams_limit = 100, max_id = 9, rcvd_c = 0, rcvd_s = 0, ddht =
0x2f311a0, dbuf = {size = 0, area = 0x0, data = 0, head = 0}, dsi = 3, dfl
= 4,
  dft = 8 '\b', dff = 0 '\000', dpl = 0 '\000', last_sid = -1, mbuf = {size
= 16384, area = 0x34f0a10 "", data = 9, head = 0}, msi = -1, mfl = 0, mft =
0 '\000', mff = 0 '\000', miw = 65535, mws = 10338036, mfs = 16384, timeout
= 20000,
  shut_timeout = 20000, nb_streams = 0, nb_cs = 0, nb_reserved = 0,
stream_cnt = 5, proxy = 0x2537fe0, task = 0x308cb70, streams_by_id = {b =
{0x0, 0x0}}, send_list = {n = 0x321d3b8, p = 0x321d3b8}, fctl_list = {n =
0x3174ce8,
    p = 0x3174ce8}, sending_list = {n = 0x321d3c8, p = 0x321d3c8}, buf_wait
= {target = 0x0, wakeup_cb = 0x0, list = {n = 0x3174d18, p = 0x3174d18}},
wait_event = {task = 0x30936f0, handle = 0x0, events = 1}}
(gdb) p list

pt., 10 maj 2019 o 15:22 Maciej Zdeb <mac...@zdeb.pl> napisał(a):

> 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