You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficserver.apache.org by "Leif Hedstrom (JIRA)" <ji...@apache.org> on 2016/10/20 23:01:58 UTC

[jira] [Updated] (TS-4704) LogObject.cc failed assert `bytes_needed >= bytes_used`

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