[ 
https://issues.apache.org/jira/browse/TS-4833?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15475142#comment-15475142
 ] 

Leif Hedstrom edited comment on TS-4833 at 9/8/16 10:25 PM:
------------------------------------------------------------

I'm not sure why this=0x238 (corruption?) but this is the stream object 
(payload_length == 0):

{code}
(gdb) frame 0
#0  Http2ConnectionState::send_a_data_frame (this=this@entry=0x238, 
stream=stream@entry=0x2ae514423b00, payload_length=@0x2aaab3e04988: 0)
    at Http2ConnectionState.cc:1029
1029    in Http2ConnectionState.cc
(gdb) p *stream
$3 = {<ProxyClientTransaction> = {<VConnection> = {<Continuation> = 
{<force_VFPT_to_top> = {_vptr.force_VFPT_to_top = 0x2aaeb9bdaac0},
        handler = (int (Continuation::*)(Continuation * const, int, void *)) 
0x2aaaaad002c0 <Http2Stream::main_event_handler(int, void*)>, mutex = {
          m_ptr = 0x0}, link = {<SLink<Continuation>> = {next = 0x0}, prev = 
0x0}, control_flags = {raw_flags = 0}}, lerrno = 0}, m_active = false,
    parent = 0x0, current_reader = 0x0, sm_reader = 0x2ae514423c00, 
host_res_style = HOST_RES_IPV4, restart_immediate = false}, client_rwnd = 65535,
  server_rwnd = 1048576, link = {<SLink<Http2Stream>> = {next = 
0x2aaeb9bda600}, prev = 0x0}, header_blocks = 0x2ae5e33e69c0 "",
  header_blocks_length = 209, request_header_length = 209, end_stream = true, 
sent_request_header = false, response_header_done = true,
  request_sent = false, response_header = {<MIMEHdr> = {<HdrHeapSDKHandle> = 
{m_heap = 0x0}, m_mime = 0x2ae5ac3588b8}, m_http = 0x2ae5ac358888,
    m_url_cached = {<HdrHeapSDKHandle> = {m_heap = 0x0}, m_url_impl = 0x0}, 
m_host_mime = 0x0, m_host_length = 0, m_port = 0,
    m_target_cached = false, m_target_in_url = false, m_port_in_header = false, 
static USE_HDR_HEAP_MAGIC = 0x1}, response_reader = 0x2ae514423d38,
  request_reader = 0x2ae514423c00, request_buffer = {size_index = 15, 
water_mark = 0, _writer = {m_ptr = 0x0}, readers = {{accessor = 0x0,
        mbuf = 0x0, block = {m_ptr = 0x0}, start_offset = 0, size_limit = 
9223372036854775807}, {accessor = 0x0, mbuf = 0x0, block = {m_ptr = 0x0},
        start_offset = 0, size_limit = 9223372036854775807}, {accessor = 0x0, 
mbuf = 0x0, block = {m_ptr = 0x0}, start_offset = 0,
        size_limit = 9223372036854775807}, {accessor = 0x0, mbuf = 0x0, block = 
{m_ptr = 0x0}, start_offset = 0, size_limit = 9223372036854775807}, {
        accessor = 0x0, mbuf = 0x0, block = {m_ptr = 0x0}, start_offset = 0, 
size_limit = 9223372036854775807}}, _location = 0x0},
  priority_node = 0x0, http_parser = {m_parsing_http = false, m_allow_non_http 
= false, m_mime_parser = {m_scanner = {m_line = 0x0,
        m_line_length = 0, m_line_size = 0, m_state = MIME_PARSE_BEFORE}, 
m_field = 0, m_field_flags = 0, m_value = -1}},
  _start_time = 1472652111079870450, _thread = 0x2aaab2507000, _id = 5, _state 
= HTTP2_STREAM_STATE_HALF_CLOSED_REMOTE, response_buffer = {
    size_index = 15, water_mark = 0, _writer = {m_ptr = 0x0}, readers = 
{{accessor = 0x0, mbuf = 0x0, block = {m_ptr = 0x0}, start_offset = 0,
        size_limit = 9223372036854775807}, {accessor = 0x0, mbuf = 0x0, block = 
{m_ptr = 0x0}, start_offset = 0, size_limit = 9223372036854775807}, {
        accessor = 0x0, mbuf = 0x0, block = {m_ptr = 0x0}, start_offset = 0, 
size_limit = 9223372036854775807}, {accessor = 0x0, mbuf = 0x0,
        block = {m_ptr = 0x0}, start_offset = 0, size_limit = 
9223372036854775807}, {accessor = 0x0, mbuf = 0x0, block = {m_ptr = 0x0},
        start_offset = 0, size_limit = 9223372036854775807}}, _location = 0x0}, 
_req_header = {<MIMEHdr> = {<HdrHeapSDKHandle> = {m_heap = 0x0},
      m_mime = 0x2ae30efc20b8}, m_http = 0x2ae30efc2088, m_url_cached = 
{<HdrHeapSDKHandle> = {m_heap = 0x0}, m_url_impl = 0x0}, m_host_mime = 0x0,
    m_host_length = 0, m_port = 0, m_target_cached = false, m_target_in_url = 
false, m_port_in_header = false, static USE_HDR_HEAP_MAGIC = 0x1},
  read_vio = {_cont = 0x2ae54c7aec00, nbytes = 0, ndone = 0, op = 1, buffer = 
{mbuf = 0x2ae514423be8, entry = 0x0}, vc_server = 0x2ae514423b00,
    mutex = {m_ptr = 0x0}}, write_vio = {_cont = 0x0, nbytes = 0, ndone = 0, op 
= 2, buffer = {mbuf = 0x0, entry = 0x0}, vc_server = 0x2ae514423b00,
    mutex = {m_ptr = 0x0}}, trailing_header = false, body_done = true, 
data_length = 0, closed = true, sent_delete = true, bytes_sent = 0,
  chunked_handler = {static DEFAULT_MAX_CHUNK_SIZE = 4096, action = 
ChunkedHandler::ACTION_DECHUNK, chunked_reader = 0x2ae514423d60,
    dechunked_buffer = 0x2ae5173519f0, dechunked_size = 722, dechunked_reader = 
0x2ae517351a08, chunked_buffer = 0x0, chunked_size = 0,
    truncation = false, skip_bytes = 0, state = 
ChunkedHandler::CHUNK_READ_DONE, cur_chunk_size = 0, bytes_left = 0, 
last_server_event = 0,
    running_sum = 0, num_digits = 1, max_chunk_size = 4096, max_chunk_header = 
'\000' <repeats 15 times>, max_chunk_header_len = 0}, chunked = true,
  cross_thread_event = 0x0, active_timeout = 0, active_event = 0x0, 
inactive_timeout = 600000000000, inactive_timeout_at = 0, inactive_event = 0x0,
  read_event = 0x0, write_event = 0x0}
{code}

and some locals:

{code}
(gdb) frame 0
#0  Http2ConnectionState::send_a_data_frame (this=this@entry=0x238, 
stream=stream@entry=0x2ae514423b00, payload_length=@0x2aaab3e04988: 0)
    at Http2ConnectionState.cc:1029
1029    in Http2ConnectionState.cc
(gdb) info locals
flags = <optimized out>
read_available_size = <optimized out>
current_reader = <optimized out>
__func__ = "send_a_data_frame"
data = {ioblock = {m_ptr = 0x2aaab0ac7db0}, ioreader = 0x2aaab3e04c18, hdr = 
{cooked = {length = 3197761728, type = 170 '\252', flags = 42 '*',
      streamid = 4115248840}, raw = "\300\370\231\276\252*\000", <incomplete 
sequence \310>}}
lock = {m = {m_ptr = 0x2aaaab708d48 <Thread::thread_data_key>}, locked_p = 
false}
payload_buffer = <optimized out>
stream_lock = {m = {m_ptr = 0x2aaab3e04950}, locked_p = 64}
(gdb) frame 1
#1  0x00002aaaaacf8d67 in Http2ConnectionState::send_data_frames (this=0x238, 
stream=0x2ae514423b00) at Http2ConnectionState.cc:1104
1104    in Http2ConnectionState.cc
(gdb) info locals
len = 0
__func__ = "send_data_frames"
(gdb) frame 2
#2  0x00002aaaaacff695 in Http2Stream::send_response_body (this=<optimized 
out>) at Http2Stream.cc:543
543     Http2Stream.cc: No such file or directory.
(gdb) info locals
No locals.
(gdb) frame 3
#3  0x00002aaaaacf3ff2 in Http2ConnectionState::restart_streams 
(this=0x2ab803790288) at Http2ConnectionState.cc:914
914     Http2ConnectionState.cc: No such file or directory.
(gdb) info locals
next = 0x2aaeb9bda600
s = <optimized out>
(gdb) frame 4
#4  rcv_window_update_frame (cstate=..., frame=...) at 
Http2ConnectionState.cc:627
627     in Http2ConnectionState.cc
(gdb) info locals
buf = "\000\237\202", <incomplete sequence \312>
size = 10453706
stream_id = <optimized out>
__func__ = "rcv_window_update_frame"
(gdb) frame 5
#5  0x00002aaaaacf9718 in Http2ConnectionState::main_event_handler 
(this=0x2ab803790288, event=<optimized out>, edata=<optimized out>)
    at Http2ConnectionState.cc:823
823     in Http2ConnectionState.cc
(gdb) info locals
frame = <optimized out>
stream_id = 0
error = <optimized out>
__func__ = "main_event_handler"
(gdb) frame 6
#6  0x00002aaaaacef1b3 in Continuation::handleEvent (data=0x2aaab3e04ab0, 
event=2253, this=0x2ab803790288)
    at ../../iocore/eventsystem/I_Continuation.h:153
153     ../../iocore/eventsystem/I_Continuation.h: No such file or directory.
(gdb) info locals
No locals.
{code}


was (Author: zwoop):
I'm not sure why this=0x238 (corruption?) but this is the stream object 
(payload_length == 0):

{code}
(gdb) frame 0
#0  Http2ConnectionState::send_a_data_frame (this=this@entry=0x238, 
stream=stream@entry=0x2ae514423b00, payload_length=@0x2aaab3e04988: 0)
    at Http2ConnectionState.cc:1029
1029    in Http2ConnectionState.cc
(gdb) p *stream
$3 = {<ProxyClientTransaction> = {<VConnection> = {<Continuation> = 
{<force_VFPT_to_top> = {_vptr.force_VFPT_to_top = 0x2aaeb9bdaac0},
        handler = (int (Continuation::*)(Continuation * const, int, void *)) 
0x2aaaaad002c0 <Http2Stream::main_event_handler(int, void*)>, mutex = {
          m_ptr = 0x0}, link = {<SLink<Continuation>> = {next = 0x0}, prev = 
0x0}, control_flags = {raw_flags = 0}}, lerrno = 0}, m_active = false,
    parent = 0x0, current_reader = 0x0, sm_reader = 0x2ae514423c00, 
host_res_style = HOST_RES_IPV4, restart_immediate = false}, client_rwnd = 65535,
  server_rwnd = 1048576, link = {<SLink<Http2Stream>> = {next = 
0x2aaeb9bda600}, prev = 0x0}, header_blocks = 0x2ae5e33e69c0 "",
  header_blocks_length = 209, request_header_length = 209, end_stream = true, 
sent_request_header = false, response_header_done = true,
  request_sent = false, response_header = {<MIMEHdr> = {<HdrHeapSDKHandle> = 
{m_heap = 0x0}, m_mime = 0x2ae5ac3588b8}, m_http = 0x2ae5ac358888,
    m_url_cached = {<HdrHeapSDKHandle> = {m_heap = 0x0}, m_url_impl = 0x0}, 
m_host_mime = 0x0, m_host_length = 0, m_port = 0,
    m_target_cached = false, m_target_in_url = false, m_port_in_header = false, 
static USE_HDR_HEAP_MAGIC = 0x1}, response_reader = 0x2ae514423d38,
  request_reader = 0x2ae514423c00, request_buffer = {size_index = 15, 
water_mark = 0, _writer = {m_ptr = 0x0}, readers = {{accessor = 0x0,
        mbuf = 0x0, block = {m_ptr = 0x0}, start_offset = 0, size_limit = 
9223372036854775807}, {accessor = 0x0, mbuf = 0x0, block = {m_ptr = 0x0},
        start_offset = 0, size_limit = 9223372036854775807}, {accessor = 0x0, 
mbuf = 0x0, block = {m_ptr = 0x0}, start_offset = 0,
        size_limit = 9223372036854775807}, {accessor = 0x0, mbuf = 0x0, block = 
{m_ptr = 0x0}, start_offset = 0, size_limit = 9223372036854775807}, {
        accessor = 0x0, mbuf = 0x0, block = {m_ptr = 0x0}, start_offset = 0, 
size_limit = 9223372036854775807}}, _location = 0x0},
  priority_node = 0x0, http_parser = {m_parsing_http = false, m_allow_non_http 
= false, m_mime_parser = {m_scanner = {m_line = 0x0,
        m_line_length = 0, m_line_size = 0, m_state = MIME_PARSE_BEFORE}, 
m_field = 0, m_field_flags = 0, m_value = -1}},
  _start_time = 1472652111079870450, _thread = 0x2aaab2507000, _id = 5, _state 
= HTTP2_STREAM_STATE_HALF_CLOSED_REMOTE, response_buffer = {
    size_index = 15, water_mark = 0, _writer = {m_ptr = 0x0}, readers = 
{{accessor = 0x0, mbuf = 0x0, block = {m_ptr = 0x0}, start_offset = 0,
        size_limit = 9223372036854775807}, {accessor = 0x0, mbuf = 0x0, block = 
{m_ptr = 0x0}, start_offset = 0, size_limit = 9223372036854775807}, {
        accessor = 0x0, mbuf = 0x0, block = {m_ptr = 0x0}, start_offset = 0, 
size_limit = 9223372036854775807}, {accessor = 0x0, mbuf = 0x0,
        block = {m_ptr = 0x0}, start_offset = 0, size_limit = 
9223372036854775807}, {accessor = 0x0, mbuf = 0x0, block = {m_ptr = 0x0},
        start_offset = 0, size_limit = 9223372036854775807}}, _location = 0x0}, 
_req_header = {<MIMEHdr> = {<HdrHeapSDKHandle> = {m_heap = 0x0},
      m_mime = 0x2ae30efc20b8}, m_http = 0x2ae30efc2088, m_url_cached = 
{<HdrHeapSDKHandle> = {m_heap = 0x0}, m_url_impl = 0x0}, m_host_mime = 0x0,
    m_host_length = 0, m_port = 0, m_target_cached = false, m_target_in_url = 
false, m_port_in_header = false, static USE_HDR_HEAP_MAGIC = 0x1},
  read_vio = {_cont = 0x2ae54c7aec00, nbytes = 0, ndone = 0, op = 1, buffer = 
{mbuf = 0x2ae514423be8, entry = 0x0}, vc_server = 0x2ae514423b00,
    mutex = {m_ptr = 0x0}}, write_vio = {_cont = 0x0, nbytes = 0, ndone = 0, op 
= 2, buffer = {mbuf = 0x0, entry = 0x0}, vc_server = 0x2ae514423b00,
    mutex = {m_ptr = 0x0}}, trailing_header = false, body_done = true, 
data_length = 0, closed = true, sent_delete = true, bytes_sent = 0,
  chunked_handler = {static DEFAULT_MAX_CHUNK_SIZE = 4096, action = 
ChunkedHandler::ACTION_DECHUNK, chunked_reader = 0x2ae514423d60,
    dechunked_buffer = 0x2ae5173519f0, dechunked_size = 722, dechunked_reader = 
0x2ae517351a08, chunked_buffer = 0x0, chunked_size = 0,
    truncation = false, skip_bytes = 0, state = 
ChunkedHandler::CHUNK_READ_DONE, cur_chunk_size = 0, bytes_left = 0, 
last_server_event = 0,
    running_sum = 0, num_digits = 1, max_chunk_size = 4096, max_chunk_header = 
'\000' <repeats 15 times>, max_chunk_header_len = 0}, chunked = true,
  cross_thread_event = 0x0, active_timeout = 0, active_event = 0x0, 
inactive_timeout = 600000000000, inactive_timeout_at = 0, inactive_event = 0x0,
  read_event = 0x0, write_event = 0x0}
{code}

> Crash in Http2ConnectionState::send_a_data_frame
> ------------------------------------------------
>
>                 Key: TS-4833
>                 URL: https://issues.apache.org/jira/browse/TS-4833
>             Project: Traffic Server
>          Issue Type: Bug
>          Components: HTTP/2
>            Reporter: Leif Hedstrom
>            Priority: Critical
>              Labels: A, crash
>             Fix For: 7.0.0
>
>
> I'm moving this away from TS-4541, since we now suspect these might not be 
> related.
> My trace is
> {code}
> (gdb) bt
> #0  Http2ConnectionState::send_a_data_frame (this=this@entry=0x238, 
> stream=stream@entry=0x2ae514423b00, payload_length=@0x2aaab3e04988: 0)
>     at Http2ConnectionState.cc:1029
> #1  0x00002aaaaacf8d67 in Http2ConnectionState::send_data_frames (this=0x238, 
> stream=0x2ae514423b00) at Http2ConnectionState.cc:1104
> #2  0x00002aaaaacff695 in Http2Stream::send_response_body (this=<optimized 
> out>) at Http2Stream.cc:543
> #3  0x00002aaaaacf3ff2 in Http2ConnectionState::restart_streams 
> (this=0x2ab803790288) at Http2ConnectionState.cc:914
> #4  rcv_window_update_frame (cstate=..., frame=...) at 
> Http2ConnectionState.cc:627
> #5  0x00002aaaaacf9718 in Http2ConnectionState::main_event_handler 
> (this=0x2ab803790288, event=<optimized out>, edata=<optimized out>)
>     at Http2ConnectionState.cc:823
> #6  0x00002aaaaacef1b3 in Continuation::handleEvent (data=0x2aaab3e04ab0, 
> event=2253, this=0x2ab803790288)
>     at ../../iocore/eventsystem/I_Continuation.h:153
> #7  send_connection_event (cont=cont@entry=0x2ab803790288, 
> event=event@entry=2253, edata=edata@entry=0x2aaab3e04ab0) at 
> Http2ClientSession.cc:58
> #8  0x00002aaaaacef452 in Http2ClientSession::state_complete_frame_read 
> (this=0x2ab803790050, event=<optimized out>, edata=0x2aaaf549b718)
>     at Http2ClientSession.cc:426
> #9  0x00002aaaaacf0972 in Continuation::handleEvent (data=0x2aaaf549b718, 
> event=100, this=0x2ab803790050)
>     at ../../iocore/eventsystem/I_Continuation.h:153
> #10 Http2ClientSession::state_start_frame_read (this=0x2ab803790050, 
> event=<optimized out>, edata=0x2aaaf549b718) at Http2ClientSession.cc:399
> #11 0x00002aaaaae67d6b in Continuation::handleEvent (data=0x2aaaf549b718, 
> event=100, this=<optimized out>)
>     at ../../iocore/eventsystem/I_Continuation.h:153
> #12 read_signal_and_update (vc=0x2aaaf549b600, vc@entry=0x1, 
> event=event@entry=100) at UnixNetVConnection.cc:153
> #13 UnixNetVConnection::readSignalAndUpdate (this=this@entry=0x2aaaf549b600, 
> event=event@entry=100) at UnixNetVConnection.cc:1036
> #14 0x00002aaaaae47633 in SSLNetVConnection::net_read_io 
> (this=0x2aaaf549b600, nh=0x2aaab250acc0, lthread=0x2aaab2507000) at 
> SSLNetVConnection.cc:595
> #15 0x00002aaaaae554cc in NetHandler::mainNetEvent (this=0x2aaab250acc0, 
> event=<optimized out>, e=<optimized out>) at UnixNet.cc:513
> #16 0x00002aaaaae8d226 in Continuation::handleEvent (data=0x2aaab0bfa640, 
> event=5, this=<optimized out>) at I_Continuation.h:153
> #17 EThread::process_event (calling_code=5, e=0x2aaab0bfa640, 
> this=0x2aaab2507000) at UnixEThread.cc:148
> #18 EThread::execute (this=0x2aaab2507000) at UnixEThread.cc:275
> #19 0x00002aaaaae8c026 in spawn_thread_internal (a=0x2aaab0b25be0) at 
> Thread.cc:86
> #20 0x00002aaaad6b3aa1 in start_thread (arg=0x2aaab3e05700) at 
> pthread_create.c:301
> #21 0x00002aaaae8bc93d in clone () at 
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:115
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to