Skip to content

codedown #1207

Closed
Closed
@wangchuanfang

Description

@wangchuanfang

Hi yhirose

I use httplib in the following way and it crashes when I do a bake

int CHttpClient::doHttpPost(const std::string host, const std::string path, const std::string body, std::string &response)
{
    int retry_times = RETRY_TIMES; 
    auto port = 80;
    httplib::Client client(host.c_str(), port);  
    client.set_keep_alive(true);
    client.set_connection_timeout(HTTP_CONNECT_TIMEOUT);  
    client.set_read_timeout(HTTP_REQUEST_TIMEOUT);
    client.set_write_timeout(HTTP_REQUEST_TIMEOUT);

    LOG_INFO("[CHttpClient %s] do http post request from host: %s, path: %s, body: %s",  
        __FUNCTION__, host.c_str(), path.c_str(), body.c_str());

    httplib::Headers headers = {
        { "Accept", "*/*" },
        { "Content-Type", "application/json" }    
    };

__retry:    
    auto res = client.Post(path.c_str(), headers, body, "application/json");
    if (res) {
        if(res->status != 200){
            LOG_ERROR("[CHttpClient %s] http post request error return status=[%d], body=[%s]",  
            __FUNCTION__, res->status,  res->body.c_str());
            return -1;
        }else{
            LOG_INFO("[CHttpClient %s] http post request return status=[%d], body=[%s]",  
            __FUNCTION__, res->status,  res->body.c_str());        
        }
        response = res->body;     
    } else {
        if (retry_times > 0) {
            retry_times --;
            LOG_DEBUG("[CHttpClient %s] retry http post, retry times: %d",  __FUNCTION__, retry_times); 
            usleep(HTTP_REQUEST_INTERVAL);       
            goto __retry;
        } else {
            LOG_ERROR("[CHttpClient %s] http post error!!!",  __FUNCTION__);
            return -1;
        }
    } 

    return 0; 
}

The stack information is as follows:

(gdb) bt
#0 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:47
#1 0xf744d296 in __libc_signal_restore_set (set=0xf415c7d8) at ../sysdeps/unix/sysv/linux/internal-signals.h:84
#2 __GI_raise ([sig=sig@entry](mailto:sig=sig@entry)=6) at ../sysdeps/unix/sysv/linux/raise.c:48
#3 0xf743e362 in __GI_abort () at abort.c:79
#4 0xf7474b78 in __libc_message ([action=action@entry](mailto:action=action@entry)=(do_abort | do_backtrace), fmt=<optimized out>) at ../sysdeps/posix/libc_fatal.c:181
#5 0xf7474ba6 in __GI___libc_fatal (message=0xf415ca78 "Unexpected error 9 on netlink descriptor 12.\n") at ../sysdeps/posix/libc_fatal.c:191
#6 0xf74d190a in __GI___netlink_assert_response (fd=-199898504, [fd@entry](mailto:fd@entry)=12, result=<optimized out>) at ../sysdeps/unix/sysv/linux/netlink_assert_response.c:102
#7 0xf74d13e2 in make_request (pid=0, fd=12) at ../sysdeps/unix/sysv/linux/check_pf.c:171
#8 __check_pf (seen_ipv4=0x0, [seen_ipv4@entry](mailto:seen_ipv4@entry)=0x65746176, seen_ipv6=0x90, [seen_ipv6@entry](mailto:seen_ipv6@entry)=0xf415dd1f, in6ai=0x14, [in6ai@entry](mailto:in6ai@entry)=0x61730076, in6ailen=0x1,
    [in6ailen@entry](mailto:in6ailen@entry)=0x73616173) at ../sysdeps/unix/sysv/linux/check_pf.c:329
#9 0xf74b001a in __GI_getaddrinfo (name=<optimized out>, service=<optimized out>, hints=<optimized out>, pai=0x0) at ../sysdeps/posix/getaddrinfo.c:2308
#10 0x000fc2a6 in int httplib::detail::create_socket<httplib::detail::create_client_socket(char const*, int, bool, std::function<void (int)>, long, long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, httplib::Error&)::{lambda(int, addrinfo&)#1}>(char const*, int, int, bool, std::function<void (int)>, httplib::detail::create_client_socket(char const*, int, bool, std::function<void (int)>, long, long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, httplib::Error&)::{lambda(int, addrinfo&)#1}) ()
#11 0x000f4ce8 in httplib::detail::create_client_socket(char const*, int, bool, std::function<void (int)>, long, long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, httplib::Error&) ()
#12 0x000f7c02 in httplib::ClientImpl::create_client_socket(httplib::Error&) const ()
#13 0x000f7c4c in httplib::ClientImpl::create_and_connect_socket(httplib::ClientImpl::Socket&, httplib::Error&) ()
#14 0x000f8236 in httplib::ClientImpl::send(httplib::Request const&, httplib::Response&, httplib::Error&) ()
#15 0x000f9a7e in httplib::ClientImpl::send_with_content_provider(char const*, char const*, std::multimap<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, httplib::detail::ci, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, std::function<bool (unsigned int, unsigned int, httplib::DataSink&)>, std::function<bool (unsigned int, httplib::DataSink&)>, char const*, httplib::Error&) ()
#16 0x000f9b6a in httplib::ClientImpl::send_with_content_provider(char const*, char const*, std::multimap<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, httplib::detail::ci, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, std::function<bool (unsigned int, unsigned int, httplib::DataSink&)>, std::function<bool (unsigned int, httplib::DataSink&)>, char const*) ()
#17 0x000fa2c6 in httplib::ClientImpl::Post(char const*, std::multimap<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, httplib::detail::ci, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*) ()

The error message is as follows:

[19 21:35:08 014]  Unexpected error 9 on netlink descriptor 12.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions