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