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)

czw., 9 maj 2019 o 14:46 Maciej Zdeb <mac...@zdeb.pl> napisał(a):

> I'm happy to help! :) Checking Olivier patch.
>
> Thanks!
>
> czw., 9 maj 2019 o 14:34 Willy Tarreau <w...@1wt.eu> napisał(a):
>
>> On Thu, May 09, 2019 at 02:31:58PM +0200, Maciej Zdeb wrote:
>> > What a bad luck :D I must have compiled it just before you pushed that
>> > change (segfault above is from haproxy 1.9.7-9b8ac0f).
>>
>> Great, so there's still some hope. I really appreciate your help and
>> feedback here, such issues are extremely difficult to track down and
>> even to reproduce and your help is invaluable here.
>>
>> Cheers,
>> Willy
>>
>

Reply via email to