[
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)