jrushford opened a new issue #7314:
URL: https://github.com/apache/trafficserver/issues/7314
On a ATS master while reviewing a PR, I came across an assertion failure in
http_hdr_status_get() with a debug build. I immediately get an assertion crash
after sending a curl for an object not in cache and that is forwarded upstream
to a parent. When checking the server response at HttpTransact.cc:383, ats
crashes an assertion on s->hdr_info.server_response.m_http is checked.
Here is data collected in the debug build, breakpoint at
HttpTransact::simple_or_unavailable_server_retry():383
(gdb) break HttpTransact.cc:383
Breakpoint 1 at 0x71c181: file HttpTransact.cc, line 383.
(gdb) c
Continuing.
[Switching to Thread 0x2afffedb4700 (LWP 12352)]
Thread 14 "[ET_NET 11]" hit Breakpoint 1, simple_or_unavailable_server_retry
(s=0x2b000ceddce8) at HttpTransact.cc:383
`383 HTTPStatus server_response =
http_hdr_status_get(s->hdr_info.server_response.m_http);
(gdb) print s->hdr_info.server_response
$1 = {<MIMEHdr> = {<HdrHeapSDKHandle> = {m_heap = 0x0}, m_mime = 0x0},
m_http = 0x0, m_url_cached = {<HdrHeapSDKHandle> = {
m_heap = 0x0}, m_url_impl = 0x0, static VERIFY_HOST_CHARACTERS =
true}, m_host_mime = 0x0, m_host_length = 0, m_port = 0,
m_target_cached = false, m_target_in_url = false, m_100_continue_required
= false, m_port_in_header = false, early_data = false,
static USE_HDR_HEAP_MAGIC = 0x1}
(gdb)
`
In a production build NON debug build a repeat of the test at the same
breakpoint with an empty cache shows the server_response headers are normal and
no crash occurs.
`(gdb) break HttpTransact.cc:383
Breakpoint 1 at 0x587058: file HttpTransact.cc, line 383.
(gdb) c
Continuing.
[Switching to Thread 0x2ae185071700 (LWP 12989)]
Thread 14 "[ET_NET 11]" hit Breakpoint 1,
HttpTransact::handle_response_from_parent (s=s@entry=0x2ae197250d00)
at HttpTransact.cc:3597
3597 simple_or_unavailable_server_retry(s);
(gdb) print s->hdr_info.server_response
$1 = {<MIMEHdr> = {<HdrHeapSDKHandle> = {m_heap = 0x2ae173ff9800}, m_mime =
0x2ae173ff98b8}, m_http = 0x2ae173ff9888,
m_url_cached = {<HdrHeapSDKHandle> = {m_heap = 0x0}, m_url_impl = 0x0,
static VERIFY_HOST_CHARACTERS = true}, m_host_mime = 0x0,
m_host_length = 0, m_port = 0, m_target_cached = false, m_target_in_url =
false, m_100_continue_required = false,
m_port_in_header = false, early_data = false, static USE_HDR_HEAP_MAGIC =
0x1}
(gdb)`
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]