Yes, we have seen something similar to this in the last week or so.  By the
time we deployed a build that fetches the hdrp on each call and asserts if
the differ, the crashes we had been seeing cleared up.

I will review my notes on this when I get back to the office tomorrow.

Susan

On Wed, Nov 20, 2019, 6:50 PM Chou, Peter <pbc...@labs.att.com> wrote:

> Hi All,
>
> We experienced some core dumps in ATS 7.1.4. My question is whether the
> pointers
> returned by TSHttpTxnServerReqGet() might ever become invalid over the
> life of the transaction?
> The core dump occurred from the Lua plugin in the
> ts_lua_server_request_header_set() function --
>
>   if (!http_ctx->server_request_hdrp) {
>     if (TSHttpTxnServerReqGet(http_ctx->txnp,
> &http_ctx->server_request_bufp, &http_ctx->server_request_hdrp) !=
> TS_SUCCESS) {
>       return 0;
>     }
>   }
>
>   field_loc = TSMimeHdrFieldFind(http_ctx->server_request_bufp,
> http_ctx->server_request_hdrp, key, key_len);
>
> --once inside TSMimeHdrFieldFind() one of the sanity checks fails which
> causes a core to be generated. Should the sanity
> be pre-checked before we call out of the Lua plugin, or should we always
> execute the TSHttpTxnServerReqGet() call
> even if pointers were non-null from a previous call?
>
> Thanks,
> Peter
>
> #0  0x00002b46bdadb207 in raise () from /lib64/libc.so.6
> #0  0x00002b46bdadb207 in raise () from /lib64/libc.so.6
> #1  0x00002b46bdadca38 in abort () from /lib64/libc.so.6
> #2  0x00002b46bb149eeb in ink_abort 
> (message_format=message_format@entry=0x2b46bb156767
> "%s:%d: failed assertion `%s`") at ink_error.cc:99
> #3  0x00002b46bb147f75 in _ink_assert (expression=<optimized out>,
> file=<optimized out>, line=<optimized out>) at ink_assert.cc:37
> #4  0x00000000004c9f16 in TSMimeHdrFieldFind ()
> #5  0x00002b46c0789f80 in ts_lua_server_request_header_set (L=0x4090ea60)
> at experimental/ts_lua/ts_lua_server_request.c:240
> #6  0x0000000000565a86 in lj_BC_FUNCC ()
> #7  0x00002b46c078d5d2 in ts_lua_http_cont_handler (contp=<optimized out>,
> ev=TS_EVENT_HTTP_SEND_REQUEST_HDR, edata=0x4f8ad40)
>     at experimental/ts_lua/ts_lua_util.c:778
> #8  0x00000000004c5f5e in INKContInternal::handle_event(int, void*) ()
> #9  0x0000000000589c64 in HttpSM::state_api_callout(int, void*) ()
> #10 0x000000000058cc70 in HttpSM::handle_http_server_open() ()
> #11 0x000000000058ec28 in HttpSM::state_http_server_open(int, void*) ()
> #12 0x000000000059160d in HttpSM::main_handler(int, void*) ()
> #13 0x000000000072cef9 in UnixNetVConnection::connectUp(EThread*, int) ()
> #14 0x000000000072a4e3 in
> UnixNetProcessor::connect_re_internal(Continuation*, sockaddr const*,
> NetVCOptions*) ()
> #15 0x000000000058d4af in HttpSM::do_http_server_open(bool) ()
> #16 0x0000000000592883 in HttpSM::set_next_state() ()
> #17 0x000000000057fa52 in HttpSM::call_transact_and_set_next_state(void
> (*)(HttpTransact::State*)) ()
> #18 0x0000000000591b6a in HttpSM::handle_api_return() ()
> #19 0x0000000000589e6e in HttpSM::state_api_callout(int, void*) ()
> #20 0x000000000059258b in HttpSM::set_next_state() ()
> #21 0x000000000057fa52 in HttpSM::call_transact_and_set_next_state(void
> (*)(HttpTransact::State*)) ()
> #22 0x0000000000590300 in HttpSM::state_hostdb_lookup(int, void*) ()
> #23 0x000000000059160d in HttpSM::main_handler(int, void*) ()
> #24 0x0000000000661f80 in reply_to_cont(Continuation*, HostDBInfo*, bool)
> ()
> #25 0x000000000066647c in HostDBContinuation::dnsEvent(int, HostEnt*) ()
> #26 0x0000000000679de8 in DNSEntry::postEvent(int, Event*) ()
> #27 0x000000000067da38 in dns_result(DNSHandler*, DNSEntry*, HostEnt*,
> bool) ()
> #28 0x000000000067e20f in DNSHandler::recv_dns(int, Event*) ()
> #29 0x0000000000680034 in DNSHandler::mainEvent(int, Event*) ()
> #30 0x0000000000755d52 in EThread::execute_regular() ()
> #31 0x0000000000754a1a in spawn_thread_internal(void*) ()
> #32 0x00002b46bce6ddd5 in start_thread () from /lib64/libpthread.so.0
> #33 0x00002b46bdba3b3d in clone () from /lib64/libc.so.6
>

Reply via email to