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

Leif Hedstrom edited comment on TS-4814 at 9/3/16 9:14 PM:
-----------------------------------------------------------

As per [~shinrich] suggestions, I've been running with this minor change to see 
if we get something different (since x == -1 in frame #7):

{code}
diff --git a/iocore/net/SSLNetVConnection.cc b/iocore/net/SSLNetVConnection.cc
index 5fa81b6..99e5352 100644
--- a/iocore/net/SSLNetVConnection.cc
+++ b/iocore/net/SSLNetVConnection.cc
@@ -832,7 +832,7 @@ SSLNetVConnection::do_io_close(int lerrno)
     char c;
     ssize_t x = recv(this->con.fd, &c, 1, MSG_PEEK);
     // x < 0 means error.  x == 0 means fin sent
-    if (x != 0) {
+    if (x > 0) {
       // Send the close-notify
       int ret = SSL_shutdown(ssl);
       Debug("ssl-shutdown", "SSL_shutdown %s", (ret) ? "success" : "failed");
{code}

I don't think this is necessarily the right solution, but interestingly enough, 
with this, I'm now seeing another assertion (not sure if this is different, or 
still related to the same, it is totally different);

{code}
(gdb) bt
#0  0x00002abc5cf1c5f7 in __GI_raise (sig=sig@entry=6) at 
../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x00002abc5cf1dce8 in __GI_abort () at abort.c:90
#2  0x00002abc5a4a4f4d in ink_abort (message_format=0x2abc5a4d0be0 "%s:%d: 
failed assertion `%s`") at ink_error.cc:79
#3  0x00002abc5a49f3a7 in _ink_assert (expression=0xb09320 "(event == 
VC_EVENT_WRITE_COMPLETE) || (event == VC_EVENT_EOS)",
    file=0xb05ae0 "HttpSM.cc", line=2756) at ink_assert.cc:37
#4  0x000000000069c7a9 in HttpSM::tunnel_handler_post (this=0x624000a8c100, 
event=105, data=0x6180000d7610) at HttpSM.cc:2756
#5  0x000000000069ba3f in HttpSM::main_handler (this=0x624000a8c100, event=105, 
data=0x6180000d7610) at HttpSM.cc:2658
#6  0x000000000053a621 in Continuation::handleEvent (this=0x624000a8c100, 
event=105, data=0x6180000d7610)
    at ../iocore/eventsystem/I_Continuation.h:153
#7  0x0000000000a35247 in write_signal_and_update (event=105, 
vc=0x6180000d7480) at UnixNetVConnection.cc:184
#8  0x0000000000a3cef9 in UnixNetVConnection::mainEvent (this=0x6180000d7480, 
event=1, e=0x2abc61c6d8b0)
    at UnixNetVConnection.cc:1205
#9  0x000000000053a621 in Continuation::handleEvent (this=0x6180000d7480, 
event=1, data=0x2abc61c6d8b0)
    at ../iocore/eventsystem/I_Continuation.h:153
#10 0x0000000000a24460 in NetHandler::_close_vc (this=0x2abc6142e490, 
vc=0x6180000d7480, now=1472927389546533463,
    handle_event=@0x2abc61c6da10: 0, closed=@0x2abc61c6d9d0: 0, 
total_idle_time=@0x2abc61c6da50: 0,
    total_idle_count=@0x2abc61c6da90: 0) at UnixNet.cc:698
#11 0x0000000000a23083 in NetHandler::manage_active_queue (this=0x2abc6142e490, 
ignore_queue_size=true) at UnixNet.cc:606
#12 0x0000000000a26103 in InactivityCop::check_inactivity (this=0x60600001a8a0, 
event=2, e=0x60900000cd70) at UnixNet.cc:107
#13 0x000000000053a621 in Continuation::handleEvent (this=0x60600001a8a0, 
event=2, data=0x60900000cd70)
    at ../iocore/eventsystem/I_Continuation.h:153
#14 0x0000000000a809fb in EThread::process_event (this=0x2abc6142a800, 
e=0x60900000cd70, calling_code=2) at UnixEThread.cc:146
#15 0x0000000000a8140f in EThread::execute (this=0x2abc6142a800) at 
UnixEThread.cc:228
#16 0x0000000000a7f407 in spawn_thread_internal (a=0x604000018810) at 
Thread.cc:84
#17 0x00002abc5c5b5dc5 in start_thread (arg=0x2abc61c6e700) at 
pthread_create.c:308
#18 0x00002abc5cfddced in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:113
(gdb) frame 4
#4  0x000000000069c7a9 in HttpSM::tunnel_handler_post (this=0x624000a8c100, 
event=105, data=0x6180000d7610) at HttpSM.cc:2756
2756          ink_assert((event == VC_EVENT_WRITE_COMPLETE) || (event == 
VC_EVENT_EOS));
(gdb) print event
$1 = 105
{code}

event==105 is TS_EVENT_VCONN_INACTIVITY_TIMEOUT . More from frame #4:

{code}
(gdb) print p
$4 = (HttpTunnelProducer *) 0x624000a8d610
(gdb) print *p
$5 = {consumer_list = {head = 0x624000a8d450}, self_consumer = 0x0, vc = 
0x61900041a860,
  vc_handler = (int (HttpSM::*)(HttpSM * const, int,
    HttpTunnelProducer *)) 0x6a2cdc <HttpSM::tunnel_handler_post_ua(int, 
HttpTunnelProducer*)>, read_vio = 0x6180000d75a0,
  read_buffer = 0x6110009ad5c0, buffer_start = 0x0, vc_type = HT_HTTP_CLIENT, 
chunked_handler = {
    static DEFAULT_MAX_CHUNK_SIZE = 4096, action = 
ChunkedHandler::ACTION_UNSET, chunked_reader = 0x0, dechunked_buffer = 0x0,
    dechunked_size = 0, dechunked_reader = 0x0, chunked_buffer = 0x0, 
chunked_size = 0, truncation = false, skip_bytes = 0,
    state = ChunkedHandler::CHUNK_READ_CHUNK, cur_chunk_size = 0, bytes_left = 
0, last_server_event = 0, running_sum = 0,
    num_digits = 0, max_chunk_size = 4096, max_chunk_header = '\000' <repeats 
15 times>, max_chunk_header_len = 0},
  chunking_action = TCA_PASSTHRU_DECHUNKED_CONTENT, do_chunking = false, 
do_dechunking = false, do_chunked_passthru = false,
  init_bytes_done = 0, nbytes = 2, ntodo = 2, bytes_read = 0, handler_state = 
1, last_event = 105, num_consumers = 1,
  alive = false, read_success = false, flow_control_source = 0x0, name = 
0xb0c8a0 "user agent post"}
(gdb) print ua_entry
$6 = (HttpVCTableEntry *) 0x624000a8d888
(gdb) print *ua_entry
$7 = {vc = 0x61900041a860, read_buffer = 0x0, write_buffer = 0x611000d71300, 
read_vio = 0x6180000d75a0, write_vio = 0x0,
  vc_handler = (int (HttpSM::*)(HttpSM * const, int, void *)) 0x68bbe8 
<HttpSM::state_watch_for_client_abort(int, void*)>,
  vc_type = HTTP_UA_VC, eos = false, in_tunnel = true}
(gdb) print tunnel
$8 = {<Continuation> = {<force_VFPT_to_top> = {_vptr.force_VFPT_to_top = 
0xb12ca0 <vtable for HttpTunnel+16>},
    handler = (int (Continuation::*)(Continuation * const, int, void *)) 
0x76b5a6 <HttpTunnel::main_handler(int, void*)>,
    handler_name = 0xb302e0 "&HttpTunnel::main_handler", mutex = {m_ptr = 
0x60c000420880}, link = {<SLink<Continuation>> = {
        next = 0x0}, prev = 0x0}, control_flags = {raw_flags = 0}}, 
num_producers = 1, num_consumers = 1, consumers = {{
      link = {<SLink<HttpTunnelConsumer>> = {next = 0x0}, prev = 0x0}, producer 
= 0x624000a8d610, self_producer = 0x0,
      vc_type = HT_HTTP_SERVER, vc = 0x61100016b600, buffer_reader = 
0x6110009ad600,
      vc_handler = (int (HttpSM::*)(HttpSM * const, int,
    HttpTunnelConsumer *)) 0x6a4304 <HttpSM::tunnel_handler_post_server(int, 
HttpTunnelConsumer*)>, write_vio = 0x618000105210,
      skip_bytes = 0, bytes_written = 0, handler_state = 0, alive = true, 
write_success = false,
      name = 0xb0c7e0 "http server post"}, {link = {<SLink<HttpTunnelConsumer>> 
= {next = 0x0}, prev = 0x0}, producer = 0x0,
      self_producer = 0x0, vc_type = HT_HTTP_CLIENT, vc = 0x0, buffer_reader = 
0x0, vc_handler = NULL, write_vio = 0x0,
      skip_bytes = 0, bytes_written = 0, handler_state = 0, alive = false, 
write_success = false, name = 0x0}, {
      link = {<SLink<HttpTunnelConsumer>> = {next = 0x0}, prev = 0x0}, producer 
= 0x0, self_producer = 0x0,
      vc_type = HT_HTTP_CLIENT, vc = 0x0, buffer_reader = 0x0, vc_handler = 
NULL, write_vio = 0x0, skip_bytes = 0,
      bytes_written = 0, handler_state = 0, alive = false, write_success = 
false, name = 0x0}, {
      link = {<SLink<HttpTunnelConsumer>> = {next = 0x0}, prev = 0x0}, producer 
= 0x0, self_producer = 0x0,
      vc_type = HT_HTTP_CLIENT, vc = 0x0, buffer_reader = 0x0, vc_handler = 
NULL, write_vio = 0x0, skip_bytes = 0,
      bytes_written = 0, handler_state = 0, alive = false, write_success = 
false, name = 0x0}}, producers = {{consumer_list = {
        head = 0x624000a8d450}, self_consumer = 0x0, vc = 0x61900041a860, 
vc_handler = (int (HttpSM::*)(HttpSM * const, int,
    HttpTunnelProducer *)) 0x6a2cdc <HttpSM::tunnel_handler_post_ua(int, 
HttpTunnelProducer*)>, read_vio = 0x6180000d75a0,
      read_buffer = 0x6110009ad5c0, buffer_start = 0x0, vc_type = 
HT_HTTP_CLIENT, chunked_handler = {
        static DEFAULT_MAX_CHUNK_SIZE = 4096, action = 
ChunkedHandler::ACTION_UNSET, chunked_reader = 0x0,
        dechunked_buffer = 0x0, dechunked_size = 0, dechunked_reader = 0x0, 
chunked_buffer = 0x0, chunked_size = 0,
        truncation = false, skip_bytes = 0, state = 
ChunkedHandler::CHUNK_READ_CHUNK, cur_chunk_size = 0, bytes_left = 0,
        last_server_event = 0, running_sum = 0, num_digits = 0, max_chunk_size 
= 4096,
        max_chunk_header = '\000' <repeats 15 times>, max_chunk_header_len = 0},
      chunking_action = TCA_PASSTHRU_DECHUNKED_CONTENT, do_chunking = false, 
do_dechunking = false, do_chunked_passthru = false,
      init_bytes_done = 0, nbytes = 2, ntodo = 2, bytes_read = 0, handler_state 
= 1, last_event = 105, num_consumers = 1,
      alive = false, read_success = false, flow_control_source = 0x0, name = 
0xb0c8a0 "user agent post"}, {consumer_list = {
        head = 0x0}, self_consumer = 0x0, vc = 0x0, vc_handler = NULL, read_vio 
= 0x0, read_buffer = 0x0, buffer_start = 0x0,
      vc_type = HT_HTTP_SERVER, chunked_handler = {static 
DEFAULT_MAX_CHUNK_SIZE = 4096, action = ChunkedHandler::ACTION_UNSET,
        chunked_reader = 0x0, dechunked_buffer = 0x0, dechunked_size = 0, 
dechunked_reader = 0x0, chunked_buffer = 0x0,
        chunked_size = 0, truncation = false, skip_bytes = 0, state = 
ChunkedHandler::CHUNK_READ_CHUNK, cur_chunk_size = 0,
        bytes_left = 0, last_server_event = 0, running_sum = 0, num_digits = 0, 
max_chunk_size = 4096,
        max_chunk_header = '\000' <repeats 15 times>, max_chunk_header_len = 0},
      chunking_action = TCA_PASSTHRU_DECHUNKED_CONTENT, do_chunking = false, 
do_dechunking = false, do_chunked_passthru = false,
      init_bytes_done = 0, nbytes = 0, ntodo = 0, bytes_read = 0, handler_state 
= 0, last_event = 0, num_consumers = 0,
      alive = false, read_success = false, flow_control_source = 0x0, name = 
0x0}}, sm = 0x624000a8c100, active = true,
  flow_state = {static DEFAULT_WATER_MARK = 65536, high_water = 65536, 
low_water = 65536, enabled_p = false}, postbuf = 0x0,
  reentrancy_count = 0, call_sm = false}
{code}

and of course (or we wouldn't enter here);

{code}
(gdb) p p->handler_state
$9 = 1
{code}

1 == HTTP_SM_POST_UA_FAIL


was (Author: zwoop):
As per [~shinrich] suggestions, I've been running with this minor change to see 
if we get something different (since x == -1 in frame #7):

{code}
diff --git a/iocore/net/SSLNetVConnection.cc b/iocore/net/SSLNetVConnection.cc
index 5fa81b6..99e5352 100644
--- a/iocore/net/SSLNetVConnection.cc
+++ b/iocore/net/SSLNetVConnection.cc
@@ -832,7 +832,7 @@ SSLNetVConnection::do_io_close(int lerrno)
     char c;
     ssize_t x = recv(this->con.fd, &c, 1, MSG_PEEK);
     // x < 0 means error.  x == 0 means fin sent
-    if (x != 0) {
+    if (x > 0) {
       // Send the close-notify
       int ret = SSL_shutdown(ssl);
       Debug("ssl-shutdown", "SSL_shutdown %s", (ret) ? "success" : "failed");
{code}

I don't think this is necessarily the right solution, but interestingly enough, 
with this, I'm now seeing another assertion (not sure if this is different, or 
still related to the same, it is totally different);

{code}
(gdb) bt
#0  0x00002abc5cf1c5f7 in __GI_raise (sig=sig@entry=6) at 
../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x00002abc5cf1dce8 in __GI_abort () at abort.c:90
#2  0x00002abc5a4a4f4d in ink_abort (message_format=0x2abc5a4d0be0 "%s:%d: 
failed assertion `%s`") at ink_error.cc:79
#3  0x00002abc5a49f3a7 in _ink_assert (expression=0xb09320 "(event == 
VC_EVENT_WRITE_COMPLETE) || (event == VC_EVENT_EOS)",
    file=0xb05ae0 "HttpSM.cc", line=2756) at ink_assert.cc:37
#4  0x000000000069c7a9 in HttpSM::tunnel_handler_post (this=0x624000a8c100, 
event=105, data=0x6180000d7610) at HttpSM.cc:2756
#5  0x000000000069ba3f in HttpSM::main_handler (this=0x624000a8c100, event=105, 
data=0x6180000d7610) at HttpSM.cc:2658
#6  0x000000000053a621 in Continuation::handleEvent (this=0x624000a8c100, 
event=105, data=0x6180000d7610)
    at ../iocore/eventsystem/I_Continuation.h:153
#7  0x0000000000a35247 in write_signal_and_update (event=105, 
vc=0x6180000d7480) at UnixNetVConnection.cc:184
#8  0x0000000000a3cef9 in UnixNetVConnection::mainEvent (this=0x6180000d7480, 
event=1, e=0x2abc61c6d8b0)
    at UnixNetVConnection.cc:1205
#9  0x000000000053a621 in Continuation::handleEvent (this=0x6180000d7480, 
event=1, data=0x2abc61c6d8b0)
    at ../iocore/eventsystem/I_Continuation.h:153
#10 0x0000000000a24460 in NetHandler::_close_vc (this=0x2abc6142e490, 
vc=0x6180000d7480, now=1472927389546533463,
    handle_event=@0x2abc61c6da10: 0, closed=@0x2abc61c6d9d0: 0, 
total_idle_time=@0x2abc61c6da50: 0,
    total_idle_count=@0x2abc61c6da90: 0) at UnixNet.cc:698
#11 0x0000000000a23083 in NetHandler::manage_active_queue (this=0x2abc6142e490, 
ignore_queue_size=true) at UnixNet.cc:606
#12 0x0000000000a26103 in InactivityCop::check_inactivity (this=0x60600001a8a0, 
event=2, e=0x60900000cd70) at UnixNet.cc:107
#13 0x000000000053a621 in Continuation::handleEvent (this=0x60600001a8a0, 
event=2, data=0x60900000cd70)
    at ../iocore/eventsystem/I_Continuation.h:153
#14 0x0000000000a809fb in EThread::process_event (this=0x2abc6142a800, 
e=0x60900000cd70, calling_code=2) at UnixEThread.cc:146
#15 0x0000000000a8140f in EThread::execute (this=0x2abc6142a800) at 
UnixEThread.cc:228
#16 0x0000000000a7f407 in spawn_thread_internal (a=0x604000018810) at 
Thread.cc:84
#17 0x00002abc5c5b5dc5 in start_thread (arg=0x2abc61c6e700) at 
pthread_create.c:308
#18 0x00002abc5cfddced in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:113
(gdb) frame 4
#4  0x000000000069c7a9 in HttpSM::tunnel_handler_post (this=0x624000a8c100, 
event=105, data=0x6180000d7610) at HttpSM.cc:2756
2756          ink_assert((event == VC_EVENT_WRITE_COMPLETE) || (event == 
VC_EVENT_EOS));
(gdb) print event
$1 = 105
{code}

event==105 is TS_EVENT_VCONN_INACTIVITY_TIMEOUT . More from frame #4:

{code}
(gdb) print p
$4 = (HttpTunnelProducer *) 0x624000a8d610
(gdb) print *p
$5 = {consumer_list = {head = 0x624000a8d450}, self_consumer = 0x0, vc = 
0x61900041a860,
  vc_handler = (int (HttpSM::*)(HttpSM * const, int,
    HttpTunnelProducer *)) 0x6a2cdc <HttpSM::tunnel_handler_post_ua(int, 
HttpTunnelProducer*)>, read_vio = 0x6180000d75a0,
  read_buffer = 0x6110009ad5c0, buffer_start = 0x0, vc_type = HT_HTTP_CLIENT, 
chunked_handler = {
    static DEFAULT_MAX_CHUNK_SIZE = 4096, action = 
ChunkedHandler::ACTION_UNSET, chunked_reader = 0x0, dechunked_buffer = 0x0,
    dechunked_size = 0, dechunked_reader = 0x0, chunked_buffer = 0x0, 
chunked_size = 0, truncation = false, skip_bytes = 0,
    state = ChunkedHandler::CHUNK_READ_CHUNK, cur_chunk_size = 0, bytes_left = 
0, last_server_event = 0, running_sum = 0,
    num_digits = 0, max_chunk_size = 4096, max_chunk_header = '\000' <repeats 
15 times>, max_chunk_header_len = 0},
  chunking_action = TCA_PASSTHRU_DECHUNKED_CONTENT, do_chunking = false, 
do_dechunking = false, do_chunked_passthru = false,
  init_bytes_done = 0, nbytes = 2, ntodo = 2, bytes_read = 0, handler_state = 
1, last_event = 105, num_consumers = 1,
  alive = false, read_success = false, flow_control_source = 0x0, name = 
0xb0c8a0 "user agent post"}
(gdb) print ua_entry
$6 = (HttpVCTableEntry *) 0x624000a8d888
(gdb) print *ua_entry
$7 = {vc = 0x61900041a860, read_buffer = 0x0, write_buffer = 0x611000d71300, 
read_vio = 0x6180000d75a0, write_vio = 0x0,
  vc_handler = (int (HttpSM::*)(HttpSM * const, int, void *)) 0x68bbe8 
<HttpSM::state_watch_for_client_abort(int, void*)>,
  vc_type = HTTP_UA_VC, eos = false, in_tunnel = true}
(gdb) print tunnel
$8 = {<Continuation> = {<force_VFPT_to_top> = {_vptr.force_VFPT_to_top = 
0xb12ca0 <vtable for HttpTunnel+16>},
    handler = (int (Continuation::*)(Continuation * const, int, void *)) 
0x76b5a6 <HttpTunnel::main_handler(int, void*)>,
    handler_name = 0xb302e0 "&HttpTunnel::main_handler", mutex = {m_ptr = 
0x60c000420880}, link = {<SLink<Continuation>> = {
        next = 0x0}, prev = 0x0}, control_flags = {raw_flags = 0}}, 
num_producers = 1, num_consumers = 1, consumers = {{
      link = {<SLink<HttpTunnelConsumer>> = {next = 0x0}, prev = 0x0}, producer 
= 0x624000a8d610, self_producer = 0x0,
      vc_type = HT_HTTP_SERVER, vc = 0x61100016b600, buffer_reader = 
0x6110009ad600,
      vc_handler = (int (HttpSM::*)(HttpSM * const, int,
    HttpTunnelConsumer *)) 0x6a4304 <HttpSM::tunnel_handler_post_server(int, 
HttpTunnelConsumer*)>, write_vio = 0x618000105210,
      skip_bytes = 0, bytes_written = 0, handler_state = 0, alive = true, 
write_success = false,
      name = 0xb0c7e0 "http server post"}, {link = {<SLink<HttpTunnelConsumer>> 
= {next = 0x0}, prev = 0x0}, producer = 0x0,
      self_producer = 0x0, vc_type = HT_HTTP_CLIENT, vc = 0x0, buffer_reader = 
0x0, vc_handler = NULL, write_vio = 0x0,
      skip_bytes = 0, bytes_written = 0, handler_state = 0, alive = false, 
write_success = false, name = 0x0}, {
      link = {<SLink<HttpTunnelConsumer>> = {next = 0x0}, prev = 0x0}, producer 
= 0x0, self_producer = 0x0,
      vc_type = HT_HTTP_CLIENT, vc = 0x0, buffer_reader = 0x0, vc_handler = 
NULL, write_vio = 0x0, skip_bytes = 0,
      bytes_written = 0, handler_state = 0, alive = false, write_success = 
false, name = 0x0}, {
      link = {<SLink<HttpTunnelConsumer>> = {next = 0x0}, prev = 0x0}, producer 
= 0x0, self_producer = 0x0,
      vc_type = HT_HTTP_CLIENT, vc = 0x0, buffer_reader = 0x0, vc_handler = 
NULL, write_vio = 0x0, skip_bytes = 0,
      bytes_written = 0, handler_state = 0, alive = false, write_success = 
false, name = 0x0}}, producers = {{consumer_list = {
        head = 0x624000a8d450}, self_consumer = 0x0, vc = 0x61900041a860, 
vc_handler = (int (HttpSM::*)(HttpSM * const, int,
    HttpTunnelProducer *)) 0x6a2cdc <HttpSM::tunnel_handler_post_ua(int, 
HttpTunnelProducer*)>, read_vio = 0x6180000d75a0,
      read_buffer = 0x6110009ad5c0, buffer_start = 0x0, vc_type = 
HT_HTTP_CLIENT, chunked_handler = {
        static DEFAULT_MAX_CHUNK_SIZE = 4096, action = 
ChunkedHandler::ACTION_UNSET, chunked_reader = 0x0,
        dechunked_buffer = 0x0, dechunked_size = 0, dechunked_reader = 0x0, 
chunked_buffer = 0x0, chunked_size = 0,
        truncation = false, skip_bytes = 0, state = 
ChunkedHandler::CHUNK_READ_CHUNK, cur_chunk_size = 0, bytes_left = 0,
        last_server_event = 0, running_sum = 0, num_digits = 0, max_chunk_size 
= 4096,
        max_chunk_header = '\000' <repeats 15 times>, max_chunk_header_len = 0},
      chunking_action = TCA_PASSTHRU_DECHUNKED_CONTENT, do_chunking = false, 
do_dechunking = false, do_chunked_passthru = false,
      init_bytes_done = 0, nbytes = 2, ntodo = 2, bytes_read = 0, handler_state 
= 1, last_event = 105, num_consumers = 1,
      alive = false, read_success = false, flow_control_source = 0x0, name = 
0xb0c8a0 "user agent post"}, {consumer_list = {
        head = 0x0}, self_consumer = 0x0, vc = 0x0, vc_handler = NULL, read_vio 
= 0x0, read_buffer = 0x0, buffer_start = 0x0,
      vc_type = HT_HTTP_SERVER, chunked_handler = {static 
DEFAULT_MAX_CHUNK_SIZE = 4096, action = ChunkedHandler::ACTION_UNSET,
        chunked_reader = 0x0, dechunked_buffer = 0x0, dechunked_size = 0, 
dechunked_reader = 0x0, chunked_buffer = 0x0,
        chunked_size = 0, truncation = false, skip_bytes = 0, state = 
ChunkedHandler::CHUNK_READ_CHUNK, cur_chunk_size = 0,
        bytes_left = 0, last_server_event = 0, running_sum = 0, num_digits = 0, 
max_chunk_size = 4096,
        max_chunk_header = '\000' <repeats 15 times>, max_chunk_header_len = 0},
      chunking_action = TCA_PASSTHRU_DECHUNKED_CONTENT, do_chunking = false, 
do_dechunking = false, do_chunked_passthru = false,
      init_bytes_done = 0, nbytes = 0, ntodo = 0, bytes_read = 0, handler_state 
= 0, last_event = 0, num_consumers = 0,
      alive = false, read_success = false, flow_control_source = 0x0, name = 
0x0}}, sm = 0x624000a8c100, active = true,
  flow_state = {static DEFAULT_WATER_MARK = 65536, high_water = 65536, 
low_water = 65536, enabled_p = false}, postbuf = 0x0,
  reentrancy_count = 0, call_sm = false}
{code}

> Crash in SSLNetVConnection::do_io_close
> ---------------------------------------
>
>                 Key: TS-4814
>                 URL: https://issues.apache.org/jira/browse/TS-4814
>             Project: Traffic Server
>          Issue Type: Bug
>          Components: Network, SSL
>            Reporter: Leif Hedstrom
>            Priority: Critical
>              Labels: crash
>             Fix For: 7.0.0
>
>
> Seeing this on latest master, running on docs:
> {code}
> #0  0x00002b411eeff1cd in write () at ../sysdeps/unix/syscall-template.S:81
> #1  0x00002b411be4860c in __interceptor_write (fd=66, ptr=0x6290000a0203, 
> count=<optimized out>)
>     at 
> ../../../../libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:453
> #2  0x00002b411deaa826 in fd_write () from /opt/openssl/lib/libcrypto.so.1.0.0
> #3  0x00002b411dea91ab in BIO_write () from 
> /opt/openssl/lib/libcrypto.so.1.0.0
> #4  0x00002b411db50142 in ssl3_write_pending () from 
> /opt/openssl/lib/libssl.so.1.0.0
> #5  0x00002b411db52a70 in ssl3_dispatch_alert () from 
> /opt/openssl/lib/libssl.so.1.0.0
> #6  0x00002b411db4df92 in ssl3_shutdown () from 
> /opt/openssl/lib/libssl.so.1.0.0
> #7  0x0000000000a003a2 in SSLNetVConnection::do_io_close 
> (this=0x61800003b880, lerrno=-1) at SSLNetVConnection.cc:837
> #8  0x000000000066bb4a in Http1ClientSession::do_io_close 
> (this=0x619000029980, alerrno=-1) at Http1ClientSession.cc:303
> #9  0x000000000066c7d3 in Http1ClientSession::state_keep_alive 
> (this=0x619000029980, event=104, data=0x61800003b9a0)
>     at Http1ClientSession.cc:415
> #10 0x000000000053a621 in Continuation::handleEvent (this=0x619000029980, 
> event=104, data=0x61800003b9a0)
>     at ../iocore/eventsystem/I_Continuation.h:153
> #11 0x0000000000a34eab in read_signal_and_update (event=104, 
> vc=0x61800003b880) at UnixNetVConnection.cc:153
> #12 0x0000000000a35594 in read_signal_done (event=104, nh=0x2b4123c27490, 
> vc=0x61800003b880) at UnixNetVConnection.cc:214
> #13 0x0000000000a3b72e in UnixNetVConnection::readSignalDone 
> (this=0x61800003b880, event=104, nh=0x2b4123c27490)
>     at UnixNetVConnection.cc:1030
> #14 0x00000000009fe003 in SSLNetVConnection::net_read_io 
> (this=0x61800003b880, nh=0x2b4123c27490, lthread=0x2b4123c23800)
>     at SSLNetVConnection.cc:620
> #15 0x0000000000a227e9 in NetHandler::mainNetEvent (this=0x2b4123c27490, 
> event=5, e=0x60900000d040) at UnixNet.cc:527
> #16 0x000000000053a621 in Continuation::handleEvent (this=0x2b4123c27490, 
> event=5, data=0x60900000d040)
>     at ../iocore/eventsystem/I_Continuation.h:153
> #17 0x0000000000a809fb in EThread::process_event (this=0x2b4123c23800, 
> e=0x60900000d040, calling_code=5) at UnixEThread.cc:146
> #18 0x0000000000a8183b in EThread::execute (this=0x2b4123c23800) at 
> UnixEThread.cc:273
> #19 0x0000000000a7f407 in spawn_thread_internal (a=0x604000018890) at 
> Thread.cc:84
> #20 0x00002b411eef8dc5 in start_thread (arg=0x2b4124431700) at 
> pthread_create.c:308
> #21 0x00002b411f920ced in clone () at 
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
> {code}



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

Reply via email to