You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficserver.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2016/11/15 19:45:00 UTC
[jira] [Work logged] (TS-5046) SEGV
HttpSM::tunnel_handler_server(int event, HttpTunnelProducer *p)
[ https://issues.apache.org/jira/browse/TS-5046?focusedWorklogId=32092&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-32092 ]
ASF GitHub Bot logged work on TS-5046:
--------------------------------------
Author: ASF GitHub Bot
Created on: 15/Nov/16 19:44
Start Date: 15/Nov/16 19:44
Worklog Time Spent: 10m
Work Description: GitHub user sekimura opened a pull request:
https://github.com/apache/trafficserver/pull/1221
TS-5046: Guard against the server_session server_vc being NULL
Only happens with 6.2.x branch and I could not identify which commit fixed this in 7.0.x branch hence here is an bandaid. I'm happy to withdraw this PR if we can identify a commit in 7.0.x so that we can simply backport it to 6.2.x.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/sekimura/trafficserver ts-5046
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/trafficserver/pull/1221.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #1221
----
commit ef1d60246e5660f77ee0317f1e0d78a6ab75a1c6
Author: Masa Sekimura <se...@gmail.com>
Date: 2016-11-15T19:36:20Z
TS-5046: Guard against the server_session server_vc being NULL
----
Issue Time Tracking
-------------------
Worklog Id: (was: 32092)
Time Spent: 10m
Remaining Estimate: 0h
> SEGV HttpSM::tunnel_handler_server(int event, HttpTunnelProducer *p)
> ---------------------------------------------------------------------
>
> Key: TS-5046
> URL: https://issues.apache.org/jira/browse/TS-5046
> Project: Traffic Server
> Issue Type: Bug
> Components: HTTP, Network
> Reporter: Masa Sekimura
> Assignee: Susan Hinrichs
> Fix For: 6.2.1
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> one of servers running 6.2.x (729c60b) got a SIGSEGV
> {code}
> (gdb) thread 42
> [Switching to thread 42 (Thread 0x2aaab460d700 (LWP 4145))]
> #0 0x00002aaaad6bd37d in __libc_waitpid (pid=<optimized out>, stat_loc=<optimized out>, options=<optimized out>) at ../sysdeps/unix/sysv/linux/waitpid.c:41
> 41 ../sysdeps/unix/sysv/linux/waitpid.c: No such file or directory.
> (gdb) bt
> #0 0x00002aaaad6bd37d in __libc_waitpid (pid=<optimized out>, stat_loc=<optimized out>, options=<optimized out>) at ../sysdeps/unix/sysv/linux/waitpid.c:41
> #1 0x00002aaaaab81ec7 in crash_logger_invoke (signo=11, info=0x2aaab460bcf0, ctx=0x2aaab460bbc0) at Crash.cc:164
> #2 <signal handler called>
> #3 0x00002aaaaac83358 in HttpSM::tunnel_handler_server (this=0x2ab9b4efac00, event=<optimized out>, p=<optimized out>) at HttpSM.cc:3108
> #4 0x00002aaaaace1d72 in HttpTunnel::producer_handler (this=this@entry=0x2ab9b4efbf28, event=102, event@entry=100, p=p@entry=0x2ab9b4efc128) at HttpTunnel.cc:1240
> #5 0x00002aaaaace3343 in HttpTunnel::producer_run (this=this@entry=0x2ab9b4efbf28, p=p@entry=0x2ab9b4efc128) at HttpTunnel.cc:1020
> #6 0x00002aaaaace3d71 in HttpTunnel::tunnel_run (this=0x2ab9b4efbf28, p_arg=0x2ab9b4efc128) at HttpTunnel.cc:787
> #7 0x00002aaaaac96f8b in HttpSM::state_api_callout (this=this@entry=0x2ab9b4efac00, event=event@entry=60000, data=data@entry=0x0) at HttpSM.cc:1534
> #8 0x00002aaaaac9e0d3 in HttpSM::state_api_callback (this=this@entry=0x2ab9b4efac00, event=event@entry=60000, data=data@entry=0x0) at HttpSM.cc:1331
> #9 0x00002aaaaabad6ad in TSHttpTxnReenable (txnp=0x2ab9b4efac00, event=TS_EVENT_HTTP_CONTINUE) at InkAPI.cc:5652
> #10 0x00002aaabe845c05 in XInjectResponseHeaders (event=<optimized out>, edata=0x2ab9b4efac00) at xdebug.cc:295
> #11 0x00002aaaaab98c04 in INKContInternal::handle_event (this=0x2aaab6bf9dc0, event=60007, edata=0x2ab9b4efac00) at InkAPI.cc:1006
> #12 0x00002aaaaac96d10 in HttpSM::state_api_callout (this=this@entry=0x2ab9b4efac00, event=event@entry=60000, data=data@entry=0x0) at HttpSM.cc:1452
> #13 0x00002aaaaac9e0d3 in HttpSM::state_api_callback (this=this@entry=0x2ab9b4efac00, event=event@entry=60000, data=data@entry=0x0) at HttpSM.cc:1331
> #14 0x00002aaaaabad6ad in TSHttpTxnReenable (txnp=0x2ab9b4efac00, event=TS_EVENT_HTTP_CONTINUE) at InkAPI.cc:5652
> #15 0x00002aaabe01ea45 in cont_rewrite_headers (contp=0x2aaab6bf9ee0, event=<optimized out>, edata=0x2ab9b4efac00) at header_rewrite.cc:307
> #16 0x00002aaaaab98c04 in INKContInternal::handle_event (this=0x2aaab6bf9ee0, event=60007, edata=0x2ab9b4efac00) at InkAPI.cc:1006
> #17 0x00002aaaaac96d10 in HttpSM::state_api_callout (this=0x2ab9b4efac00, event=<optimized out>, data=<optimized out>) at HttpSM.cc:1452
> #18 0x00002aaaaac9c910 in HttpSM::set_next_state (this=0x2ab9b4efac00) at HttpSM.cc:7296
> #19 0x00002aaaaac96f8b in HttpSM::state_api_callout (this=this@entry=0x2ab9b4efac00, event=event@entry=60000, data=data@entry=0x0) at HttpSM.cc:1534
> #20 0x00002aaaaac9e0d3 in HttpSM::state_api_callback (this=this@entry=0x2ab9b4efac00, event=event@entry=60000, data=data@entry=0x0) at HttpSM.cc:1331
> #21 0x00002aaaaabad6ad in TSHttpTxnReenable (txnp=0x2ab9b4efac00, event=TS_EVENT_HTTP_CONTINUE) at InkAPI.cc:5652
> #22 0x00002aaabf4038d5 in cont_handle_response (contp=<optimized out>, event=<optimized out>, edata=0x2ab9b4efac00) at background_fetch.cc:544
> #23 0x00002aaaaab98c04 in INKContInternal::handle_event (this=0x2aaab6bf9d00, event=60006, edata=0x2ab9b4efac00) at InkAPI.cc:1006
> #24 0x00002aaaaac96d10 in HttpSM::state_api_callout (this=this@entry=0x2ab9b4efac00, event=event@entry=60000, data=data@entry=0x0) at HttpSM.cc:1452
> #25 0x00002aaaaac9e0d3 in HttpSM::state_api_callback (this=this@entry=0x2ab9b4efac00, event=event@entry=60000, data=data@entry=0x0) at HttpSM.cc:1331
> #26 0x00002aaaaabad6ad in TSHttpTxnReenable (txnp=0x2ab9b4efac00, event=TS_EVENT_HTTP_CONTINUE) at InkAPI.cc:5652
> #27 0x00002aaabe01ea45 in cont_rewrite_headers (contp=0x2aaab6bf9ee0, event=<optimized out>, edata=0x2ab9b4efac00) at header_rewrite.cc:307
> #28 0x00002aaaaab98c04 in INKContInternal::handle_event (this=0x2aaab6bf9ee0, event=60006, edata=0x2ab9b4efac00) at InkAPI.cc:1006
> #29 0x00002aaaaac96d10 in HttpSM::state_api_callout (this=0x2ab9b4efac00, event=<optimized out>, data=<optimized out>) at HttpSM.cc:1452
> #30 0x00002aaaaac97b6f in HttpSM::state_read_server_response_header (this=0x2ab9b4efac00, event=100, data=0x2aaaf59b3a98) at HttpSM.cc:1953
> #31 0x00002aaaaac9e2bd in HttpSM::main_handler (this=0x2ab9b4efac00, event=100, data=0x2aaaf59b3a98) at HttpSM.cc:2658
> #32 0x00002aaaaae6956b in Continuation::handleEvent (data=0x2aaaf59b3a98, event=100, this=<optimized out>) at ../../iocore/eventsystem/I_Continuation.h:153
> #33 read_signal_and_update (vc=0x2aaaf59b3980, vc@entry=0x1, event=event@entry=100) at UnixNetVConnection.cc:148
> #34 UnixNetVConnection::readSignalAndUpdate (this=this@entry=0x2aaaf59b3980, event=event@entry=100) at UnixNetVConnection.cc:1030
> #35 0x00002aaaaae48cb3 in SSLNetVConnection::net_read_io (this=0x2aaaf59b3980, nh=0x2aaab3009cc0, lthread=0x2aaab3006000) at SSLNetVConnection.cc:598
> #36 0x00002aaaaae56bec in NetHandler::mainNetEvent (this=0x2aaab3009cc0, event=<optimized out>, e=<optimized out>) at UnixNet.cc:513
> #37 0x00002aaaaae8e956 in Continuation::handleEvent (data=0x2aaab0bf2040, event=5, this=<optimized out>) at I_Continuation.h:153
> #38 EThread::process_event (calling_code=5, e=0x2aaab0bf2040, this=0x2aaab3006000) at UnixEThread.cc:148
> #39 EThread::execute (this=0x2aaab3006000) at UnixEThread.cc:275
> #40 0x00002aaaaae8d756 in spawn_thread_internal (a=0x2aaab0b211c0) at Thread.cc:86
> #41 0x00002aaaad6b5aa1 in start_thread (arg=0x2aaab460d700) at pthread_create.c:301
> #42 0x00002aaaae8be93d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115
> {code}
> it's from HttpSMcc:3108
> {code}
> 3081 if (close_connection) {
> 3082 p->vc->do_io_close();
> 3083 server_session = NULL; // Because p->vc == server_session
> 3084 p->read_vio = NULL;
> 3085 /* TS-1424: if we're outbound transparent and using the client
> 3086 source port for the outbound connection we must effectively
> 3087 propagate server closes back to the client. Part of that is
> 3088 disabling KeepAlive if the server closes.
> 3089 */
> 3090 if (ua_session && ua_session->is_outbound_transparent() && t_state.http_config_param->use_client_source_port) {
> 3091 t_state.client_info.keep_alive = HTTP_NO_KEEPALIVE;
> 3092 }
> 3093 } else {
> 3094 server_session->attach_hostname(t_state.current.server->name);
> 3095 server_session->server_trans_stat--;
> 3096 HTTP_DECREMENT_DYN_STAT(http_current_server_transactions_stat);
> 3097
> 3098 // If the option to attach the server session to the client session is set
> 3099 // and if the client is still around and the client is keep-alive, attach the
> 3100 // server session to so the next ka request can use it. Server sessions will
> 3101 // be placed into the shared pool if the next incoming request is for a different
> 3102 // origin server
> 3103 if (t_state.txn_conf->attach_server_session_to_client == 1 && ua_session && t_state.client_info.keep_alive == HTTP_KEEPALIVE) {
> 3104 Debug("http", "attaching server session to the client");
> 3105 ua_session->attach_server_session(server_session);
> 3106 } else {
> 3107 // Release the session back into the shared session pool
> 3108 server_session->get_netvc()->set_inactivity_timeout(HRTIME_SECONDS(t_state.txn_conf->keep_alive_no_activity_timeout_out));
> 3109 server_session->release();
> 3110 }
> {code}
> print vc_table result:
> {code}
> (gdb) p vc_table
> $6 = {static vc_table_max_entries = 4, vc_table = {
> {
> vc = 0x2ae5aafe18a0,
> read_buffer = 0x0,
> write_buffer = 0x0,
> read_vio = 0x2ae5aafe1be0,
> write_vio = 0x0,
> vc_handler = (int (HttpSM::*)(HttpSM * const, int, void *)) 0x2aaaaac86640 <HttpSM::state_watch_for_client_abort(int, void*)>,
> vc_type = HTTP_UA_VC,
> eos = true,
> in_tunnel = true
> }, {
> vc = 0x2ae6503f7e80,
> read_buffer = 0x0,
> write_buffer = 0x0,
> read_vio = 0x2aaaf59b3a98,
> write_vio = 0x2aaaf59b3b00,
> vc_handler = (int (HttpSM::*)(HttpSM * const, int, void *)) 0x2aaaaac97750 <HttpSM::state_read_server_response_header(int, void*)>,
> vc_type = HTTP_SERVER_VC,
> eos = false,
> in_tunnel = true
> }, {
> vc = 0x0,
> read_buffer = 0x0,
> write_buffer = 0x0,
> read_vio = 0x0,
> write_vio = 0x0,
> vc_handler = NULL,
> vc_type = HTTP_UNKNOWN,
> eos = false,
> in_tunnel = false
> }, {
> vc = 0x0,
> read_buffer = 0x0,
> write_buffer = 0x0,
> read_vio = 0x0,
> write_vio = 0x0,
> vc_handler = NULL,
> vc_type = HTTP_UNKNOWN,
> eos = false,
> in_tunnel = false
> }}}
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)