[ 
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 <sekim...@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)

Reply via email to