[ https://issues.apache.org/jira/browse/TS-4704?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Leif Hedstrom updated TS-4704: ------------------------------ Fix Version/s: (was: 6.2.1) 7.1.0 > LogObject.cc failed assert `bytes_needed >= bytes_used` > ------------------------------------------------------- > > Key: TS-4704 > URL: https://issues.apache.org/jira/browse/TS-4704 > Project: Traffic Server > Issue Type: Bug > Components: Core > Affects Versions: 6.2.0 > Reporter: taoyunxing > Fix For: 7.1.0 > > > ATS all versions: from 4.3.2, 5.3.2, 6.1.1 etc, I test a url with 502 > status code using 4.3.2 > Records.config: > {code} > CONFIG proxy.config.reverse_proxy.enabled INT 1 > CONFIG proxy.config.url_remap.pristine_host_hdr INT 1 > CONFIG proxy.config.url_remap.remap_required INT 1 > CONFIG proxy.config.diags.show_location INT 1 > {code} > logs_xml.config: > {code} > <LogFormat> > <Name = "access_log"/> > <Format = "%<cqtd>/%<cqtt> %<cqhm> \"%<cquuc>\" %<pssc> %<ttms> %<cqhl> > %<psql> %<crc> \"%<chi>\" %<pqsn> \"%<{Referer}cqh>\" \"%<psct>\" > \"%<{User-agent}cqh>\" %<cqhl> %<csssc> %<pqsi>"/> > </LogFormat> > <LogObject> > <Format = "access_log"/> > <Filename = "access"/> > <Protocols = "http"/> > <RollingEnabled = "3"/> > <RollingIntervalSec = "7200"/> > <RollingSizeMb = "2048"/> > </LogObject> > {code} > Descriptions: > I request a 502 url on ATS 4.3.2, and first I found the assertion failed: > {code} > using root directory '/usr' > FATAL: LogAccess.cc:790: failed assert `actual_len < padded_len` > /usr/bin/traffic_server - STACK TRACE: > /usr/lib64/trafficserver/libtsutil.so.4(ink_fatal_die+0x0)[0x3e5c85db8a] > /usr/lib64/trafficserver/libtsutil.so.4(ink_get_rand()+0x0)[0x3e5c85c7ec] > /usr/bin/traffic_server(LogAccess::marshal_mem(char*, char const*, int, > int)+0x62)[0x5f948e] > /usr/bin/traffic_server(LogAccessHttp::marshal_client_req_unmapped_url_canon(char*)+0x8e)[0x5fbca2] > /usr/bin/traffic_server(LogField::marshal(LogAccess*, char*)+0x73)[0x6095e7] > /usr/bin/traffic_server(LogFieldList::marshal(LogAccess*, > char*)+0x51)[0x60a0ff] > /usr/bin/traffic_server(LogObject::log(LogAccess*, char > const*)+0x632)[0x616cac] > /usr/bin/traffic_server(LogObjectManager::log(LogAccess*)+0x75)[0x619223] > /usr/bin/traffic_server(Log::access(LogAccess*)+0x2a1)[0x5f6237] > /usr/bin/traffic_server(HttpBodyTemplate::build_instantiated_buffer(HttpTransact::State*, > long*)+0xbf)[0x562807] > /usr/bin/traffic_server(HttpBodyFactory::fabricate(StrList*, StrList*, char > const*, HttpTransact::State*, long*, char const**, char const**, char > const**)+0x296)[0x560ef0] > /usr/bin/traffic_server(HttpBodyFactory::fabricate_with_old_api(char const*, > HttpTransact::State*, long, long*, char*, unsigned long, char*, unsigned > long, char const*, __va_list_tag*)+0x368)[0 > x560056] > /usr/bin/traffic_server(HttpTransact::build_error_response(HttpTransact::State*, > HTTPStatus, char const*, char const*, char const*, ...)+0x75f)[0x5b4c49] > /usr/bin/traffic_server(HttpTransact::handle_server_died(HttpTransact::State*)+0x559)[0x5b3027] > /usr/bin/traffic_server(HttpTransact::handle_server_connection_not_open(HttpTransact::State*)+0x3b3)[0x5a46cd] > /usr/bin/traffic_server(HttpTransact::handle_response_from_server(HttpTransact::State*)+0x783)[0x5a39c5] > /usr/bin/traffic_server(HttpTransact::HandleResponse(HttpTransact::State*)+0x748)[0x5a1e90] > /usr/bin/traffic_server(HttpSM::call_transact_and_set_next_state(void > (*)(HttpTransact::State*))+0x84)[0x5885aa] > /usr/bin/traffic_server(HttpSM::handle_server_setup_error(int, > void*)+0x664)[0x582ade] > /usr/bin/traffic_server(HttpSM::state_send_server_request_header(int, > void*)+0x31c)[0x576902] > /usr/bin/traffic_server(HttpSM::main_handler(int, void*)+0x270)[0x578cd6] > /usr/bin/traffic_server(Continuation::handleEvent(int, void*)+0x6c)[0x4f402e] > /usr/bin/traffic_server[0x7019f1] > /usr/bin/traffic_server[0x701bb1] > /usr/bin/traffic_server[0x701c69] > /usr/bin/traffic_server[0x702173] > /usr/bin/traffic_server(UnixNetVConnection::net_read_io(NetHandler*, > EThread*)+0x2b)[0x704611] > /usr/bin/traffic_server(NetHandler::mainNetEvent(int, Event*)+0x700)[0x6fbafa] > /usr/bin/traffic_server(Continuation::handleEvent(int, void*)+0x6c)[0x4f402e] > /usr/bin/traffic_server(EThread::process_event(Event*, int, Queue<Event, > Event::Link_link>*)+0x124)[0x724882] > /usr/bin/traffic_server(EThread::execute()+0x4cc)[0x724ef0] > /usr/bin/traffic_server[0x723da9] > /lib64/libpthread.so.0[0x3703207aa1] > /lib64/libc.so.6(clone+0x6d)[0x3702ee893d] > {code} > I modified the code at LogAccessHttp::marshal_client_req_unmapped_url_canon: > {code} > } else { > len = round_strlen(m_client_req_unmapped_url_canon_len + 1); // +1 > for eos > + if (m_client_req_unmapped_url_host_len < 0) > + m_client_req_unmapped_url_host_len = 0; > {code} > then I found another assertion failed: > {code} > FATAL: LogObject.cc:634: failed assert `bytes_needed >= bytes_used` > /usr/bin/traffic_server - STACK TRACE: > /usr/lib64/trafficserver/libtsutil.so.4(ink_fatal_die+0x0)[0x2b5da1050b8a] > /usr/lib64/trafficserver/libtsutil.so.4(ink_get_rand()+0x0)[0x2b5da104f7ec] > /usr/bin/traffic_server(LogObject::log(LogAccess*, char > const*)+0x65f)[0x616d09] > /usr/bin/traffic_server(LogObjectManager::log(LogAccess*)+0x75)[0x619253] > /usr/bin/traffic_server(Log::access(LogAccess*)+0x2a1)[0x5f6237] > /usr/bin/traffic_server(HttpBodyTemplate::build_instantiated_buffer(HttpTransact::State*, > long*)+0xbf)[0x562807] > /usr/bin/traffic_server(HttpBodyFactory::fabricate(StrList*, StrList*, char > const*, HttpTransact::State*, long*, char const**, char const**, char > const**)+0x296)[0x560ef0] > /usr/bin/traffic_server(HttpBodyFactory::fabricate_with_old_api(char const*, > HttpTransact::State*, long, long*, char*, unsigned long, char*, unsigned > long, char const*, __va_list_tag*)+0x368)[0x560056] > /usr/bin/traffic_server(HttpTransact::build_error_response(HttpTransact::State*, > HTTPStatus, char const*, char const*, char const*, ...)+0x75f)[0x5b4c49] > /usr/bin/traffic_server(HttpTransact::handle_server_died(HttpTransact::State*)+0x559)[0x5b3027] > /usr/bin/traffic_server(HttpTransact::handle_server_connection_not_open(HttpTransact::State*)+0x3b3)[0x5a46cd] > /usr/bin/traffic_server(HttpTransact::handle_response_from_server(HttpTransact::State*)+0x783)[0x5a39c5] > /usr/bin/traffic_server(HttpTransact::HandleResponse(HttpTransact::State*)+0x748)[0x5a1e90] > /usr/bin/traffic_server(HttpSM::call_transact_and_set_next_state(void > (*)(HttpTransact::State*))+0x84)[0x5885aa] > /usr/bin/traffic_server(HttpSM::handle_server_setup_error(int, > void*)+0x664)[0x582ade] > /usr/bin/traffic_server(HttpSM::state_send_server_request_header(int, > void*)+0x31c)[0x576902] > /usr/bin/traffic_server(HttpSM::main_handler(int, void*)+0x270)[0x578cd6] > /usr/bin/traffic_server(Continuation::handleEvent(int, void*)+0x6c)[0x4f402e] > /usr/bin/traffic_server[0x701a21] > /usr/bin/traffic_server[0x701be1] > /usr/bin/traffic_server[0x701c99] > /usr/bin/traffic_server[0x7021a3] > /usr/bin/traffic_server(UnixNetVConnection::net_read_io(NetHandler*, > EThread*)+0x2b)[0x704641] > /usr/bin/traffic_server(NetHandler::mainNetEvent(int, Event*)+0x700)[0x6fbb2a] > /usr/bin/traffic_server(Continuation::handleEvent(int, void*)+0x6c)[0x4f402e] > /usr/bin/traffic_server(EThread::process_event(Event*, int, Queue<Event, > Event::Link_link>*)+0x124)[0x7248b2] > /usr/bin/traffic_server(EThread::execute()+0x4cc)[0x724f20] > /usr/bin/traffic_server[0x723dd9] > /lib64/libpthread.so.0[0x3703207aa1] > /lib64/libc.so.6(clone+0x6d)[0x3702ee893d] > {code} > then I continue to modified as: > {code} > validate_unmapped_url(); > + //probably is negative after validate_unmapped_url > + if (m_client_req_unmapped_url_canon_len < 0) > + m_client_req_unmapped_url_canon_len = 0; > {code} > I test it and It's ok! -- This message was sent by Atlassian JIRA (v6.3.4#6332)