Crash due to explicit conversion of http version from string to float
The web server crashes when it receives http version that cannot be converted to float. This can result in std::out_of_range and std::invalid_argument
OS: Ubuntu 20.04
To reproduce this:
- Follow the installation, and execution directions given in README.md
- Use directions from "See web page" section - Alternative 2 but change the request to:
GET / HTTP/999999999999999999999999999 # Press enter twice here
- or:
GET / HTTP/a # Press enter twice here
Backtrace:
terminate called after throwing an instance of 'std::out_of_range'
what(): stof
* thread #1, name = 'web_server', stop reason = signal SIGABRT
* frame #0: 0x00007f17706e318b libc.so.6`raise + 203
frame #1: 0x00007f17706c2859 libc.so.6`abort + 299
frame #2: 0x00007f1770948951 libstdc++.so.6`___lldb_unnamed_symbol33$$libstdc++.so.6 + 93
frame #3: 0x00007f177095447c libstdc++.so.6`___lldb_unnamed_symbol438$$libstdc++.so.6 + 12
frame #4: 0x00007f17709544e7 libstdc++.so.6`std::terminate() + 23
frame #5: 0x00007f1770954799 libstdc++.so.6`__cxa_throw + 73
frame #6: 0x00007f177094b3be libstdc++.so.6`std::__throw_out_of_range(char const*) + 65
frame #7: 0x000055cc64f7bcf6 web_server`float __gnu_cxx::__stoa<float, float, char>(__convf=(libc.so.6`strtof), __name="stof", __str="9999999999999999999999999999999999999999999999999999", __idx=0x0000000000000000)(char const*, char**), char const*, char const*, unsigned long*) at string_conversions.h:86:27
frame #8: 0x000055cc64f6c90c web_server`std::__cxx11::stof(__str="9999999999999999999999999999999999999999999999999999", __idx=0x0000000000000000) at basic_string.h:6530:29
frame #9: 0x000055cc64f8c240 web_server`SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::write(this=0x000055cc665c17a0, ec=0x00007ffcbd48d960)>&)::'lambda'(SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response*)::operator()(SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response*) const::'lambda'(boost::system::error_code const&)::operator()(boost::system::error_code const&) const at server_http.hpp:765:25
frame #10: 0x000055cc64f97680 web_server`std::_Function_handler<void (boost::system::error_code const&), SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::write(std::shared_ptr<SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Session> const&, std::function<void (std::shared_ptr<SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response>, std::shared_ptr<SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Request>)>&)::'lambda'(SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response*)::operator()(SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response*) const::'lambda'(boost::system::error_code const&)>::_M_invoke(__functor=0x00007ffcbd48d940, __args#0=0x00007ffcbd48d960) at std_function.h:300:37
frame #11: 0x000055cc64f97807 web_server`std::function<void (boost::system::error_code const&)>::operator(this=0x00007ffcbd48d940, __args#0=0x00007ffcbd48d960)(boost::system::error_code const&) const at std_function.h:688:14
frame #12: 0x000055cc64f9210f web_server`SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(this=0x00007ffcbd48d930, ec=0x00007ffcbd48d960, (null)=74)> const&)::'lambda'(boost::system::error_code const&, unsigned long)::operator()(boost::system::error_code const&, unsigned long) const at server_http.hpp:118:21
frame #13: 0x000055cc64fb1d9b web_server`boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)>::operator(this=0x00007ffcbd48d918, ec=0x00007ffcbd48d960, bytes_transferred=74, start=0)(boost::system::error_code const&, unsigned long, int) at write.hpp:569:9
frame #14: 0x000055cc64fd1dd0 web_server`boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >::operator(this=0x00007ffcbd48d8f0, ec=0x00007ffcbd48d960, bytes_transferred=74, start=0)(boost::system::error_code const&, unsigned long, int) at write.hpp:338:9
frame #15: 0x000055cc64fdd14a web_server`boost::asio::detail::binder2<boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long>::operator(this=0x00007ffcbd48d8f0)() at bind_handler.hpp:164:5
frame #16: 0x000055cc64fdd221 web_server`void boost::asio::asio_handler_invoke<boost::asio::detail::binder2<boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long> >(function=0x00007ffcbd48d8f0) at handler_invoke_hook.hpp:69:11
frame #17: 0x000055cc64fdd1b2 web_server`void boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder2<boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long>, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)>(function=0x00007ffcbd48d8f0, context=0x00007ffcbd48d930)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long>&) at handler_invoke_helpers.hpp:37:22
frame #18: 0x000055cc64fdd178 web_server`void boost::asio::detail::asio_handler_invoke<boost::asio::detail::binder2<boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long>, boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)>(function=0x00007ffcbd48d8f0, this_handler=0x00007ffcbd48d918)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long>, boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t>*) at write.hpp:617:46
frame #19: 0x000055cc64fdd098 web_server`void boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder2<boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long>, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >(function=0x00007ffcbd48d8f0, context=0x00007ffcbd48d918)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long>&) at handler_invoke_helpers.hpp:37:22
frame #20: 0x000055cc64fdcdcc web_server`void boost::asio::detail::asio_handler_invoke<boost::asio::detail::binder2<boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long>, boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >(function=0x00007ffcbd48d8f0, this_handler=0x00007ffcbd48d8f0)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long>, boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t>*) at write.hpp:393:46
frame #21: 0x000055cc64fdcc3b web_server`void boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder2<boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long>, boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> > >(function=0x00007ffcbd48d8f0, context=0x00007ffcbd48d8f0)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long>&) at handler_invoke_helpers.hpp:37:22
frame #22: 0x000055cc64fdc96e web_server`void boost::asio::detail::asio_handler_invoke<boost::asio::detail::binder2<boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long>, boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long>(function=0x00007ffcbd48d8f0, this_handler=0x00007ffcbd48d8f0)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long>, boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code>*) at bind_handler.hpp:207:44
frame #23: 0x000055cc64fdc682 web_server`void boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder2<boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long>, boost::asio::detail::binder2<boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long> >(function=0x00007ffcbd48d8f0, context=0x00007ffcbd48d8f0)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long>&) at handler_invoke_helpers.hpp:37:22
frame #24: 0x000055cc64fdc433 web_server`void boost::asio::detail::io_object_executor<boost::asio::executor>::dispatch<boost::asio::detail::binder2<boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(this=0x00007ffcbd48d8e0, f=0x00007ffcbd48d8f0, a=0x00007ffcbd48d857)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long>, std::allocator<void> >(boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>&&, boost::asio::detail::binder2<boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long> const&) const at io_object_executor.hpp:119:50
frame #25: 0x000055cc64fdc179 web_server`void boost::asio::detail::handler_work<boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::asio::detail::io_object_executor<boost::asio::executor>, boost::asio::detail::io_object_executor<boost::asio::executor> >::complete<boost::asio::detail::binder2<boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(this=0x00007ffcbd48d8d0, function=0x00007ffcbd48d8f0, handler=0x00007ffcbd48d8f0)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long> >(boost::asio::detail::binder2<boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::system::error_code, unsigned long>&, boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >&) at handler_work.hpp:72:5
frame #26: 0x000055cc64fdbcd2 web_server`boost::asio::detail::reactive_socket_send_op<boost::asio::const_buffers_1, boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::const_buffers_1, boost::asio::const_buffer const*, boost::asio::detail::transfer_all_t, boost::asio::detail::write_dynbuf_v1_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::basic_streambuf_ref<std::allocator<char> >, boost::asio::detail::transfer_all_t, SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::Response::send_on_delete(std::function<void (boost::system::error_code const&)> const&)::'lambda'(boost::system::error_code const&, unsigned long)> >, boost::asio::detail::io_object_executor<boost::asio::executor> >::do_complete(owner=0x000055cc665c0640, base=0x000055cc665c3aa0, (null)=0x00007ffcbd48db20, (null)=0) at reactive_socket_send_op.hpp:122:7
frame #27: 0x000055cc64f6ec64 web_server`boost::asio::detail::scheduler_operation::complete(this=0x000055cc665c3aa0, owner=0x000055cc665c0640, ec=0x00007ffcbd48db20, bytes_transferred=0) at scheduler_operation.hpp:40:10
frame #28: 0x000055cc64f74248 web_server`boost::asio::detail::scheduler::do_run_one(this=0x000055cc665c0640, lock=0x00007ffcbd48da70, this_thread=0x00007ffcbd48daa0, ec=0x00007ffcbd48db20) at scheduler.ipp:447:20
frame #29: 0x000055cc64f73b84 web_server`boost::asio::detail::scheduler::run(this=0x000055cc665c0640, ec=0x00007ffcbd48db20) at scheduler.ipp:200:20
frame #30: 0x000055cc64f747a0 web_server`boost::asio::io_context::run(this=0x000055cc665c0620) at io_context.ipp:63:27
frame #31: 0x000055cc64f8179d web_server`SimpleWeb::ServerBase<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::start(this=0x00007ffcbd48dcd0, callback=0x00007ffcbd48dc90)> const&) at server_http.hpp:463:26
frame #32: 0x000055cc64f6bdbd web_server`main at main.cpp:16:15
frame #33: 0x00007f17706c40b3 libc.so.6`__libc_start_main + 243
frame #34: 0x000055cc64f6b9ce web_server`_start + 46
Edited by Pascal Pickel