Project

General

Profile

Bug #5158

TCP RST ⇒ Transport endpoint is not connected

Added by Junxiao Shi 5 months ago. Updated 5 months ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
Faces
Target version:
Start date:
Due date:
% Done:

0%

Estimated time:

Description

NFD crashes if it receives the following sequence of packets:

  1. NFD receives a TCP packet with SYN,ECN,CWR flags, Seq=x.
  2. NFD responds a TCP packet with SYN and ACK flags, Seq=y.
  3. NFD receives a TCP packet with ACK flag, Seq=x+1, Ack=y+1.
  4. NFD receives a TCP packet with RST,ACK flags, Seq=x+1, Ack=y+1.

Error message:

Apr 13 13:30:35 bbb nfd[1644]: 1618320635.134788 FATAL: [nfd.Main] Throw location unknown (consider using BOOST_THROW_EXCEPTION)
Apr 13 13:30:35 bbb nfd[1644]: Dynamic exception type: boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >
Apr 13 13:30:35 bbb nfd[1644]: std::exception::what: remote_endpoint: Transport endpoint is not connected
Apr 13 13:30:35 bbb systemd[1]: nfd.service: Main process exited, code=exited, status=1/FAILURE
Apr 13 13:30:35 bbb systemd[1]: nfd.service: Failed with result 'exit-code'.

NFD version:

Apr 13 13:30:36 bbb nfd[5978]: NFD version 0.7.1-18-g22085365 starting
Apr 13 13:30:36 bbb nfd[5978]: Built with GNU C++ version 8.3.0, with GNU libstdc++ version 20190406, with Boost version 1.67.0, with libpcap version 1.8.1, with WebSocket++ version 0.8.1, with ndn-cxx version 0.7.1-13-gaef53b6c

Files

bug5158.pcap (340 Bytes) bug5158.pcap packet trace that triggers the crash Junxiao Shi, 04/14/2021 01:14 PM
reproduce5158.tar (10 KB) reproduce5158.tar program to transmit packets for reproducing the bug Junxiao Shi, 04/14/2021 01:18 PM
#1

Updated by Junxiao Shi 5 months ago

The bug was captured on my home router. The IP sending the packets in question was either an attacker or a vulnerability scanner.
I have attached the packet trace that triggered the bug on my system.

Moreover, I made a small program to transmit the sequence of packets.
It can reliably crash both the current NFD release (one of the testbed routers) and the latest nightly build (both my home router and a Docker container on my test server).
However, it seems that the reproduce program works only if the packets are transmitted over the Internet, and does not work in a local area network, indicating that the problem might be timing related.

I am able to obtain a stack trace on the test server, by setting breakpoint on boost::system::system_error::system_error.
The three errors appear consecutively after the packets were transmitted, and then NFD process exits.

Thread 1 "nfd" hit Breakpoint 1, boost::system::system_error::system_error (what_arg=<optimized out>, ec=..., this=0x7fffffffd930) at /usr/include/boost/asio/detail/impl/throw_error.ipp:37
37      /usr/include/boost/asio/detail/impl/throw_error.ipp: No such file or directory.
(gdb) bt
#0  boost::system::system_error::system_error (what_arg=<optimized out>, ec=..., this=0x7fffffffd930) at /usr/include/boost/asio/detail/impl/throw_error.ipp:37
#1  boost::asio::detail::do_throw_error (err=..., location=0x5555557a19c6 "remote_endpoint") at /usr/include/boost/asio/detail/impl/throw_error.ipp:37
#2  0x0000555555675b54 in boost::asio::detail::throw_error (location=0x5555557a19c6 "remote_endpoint", err=...) at /usr/include/boost/asio/detail/throw_error.hpp:42
#3  boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::executor>::remote_endpoint (this=<optimized out>) at /usr/include/boost/asio/basic_socket.hpp:1606
#4  0x0000555555671146 in nfd::face::TcpChannel::createFace(boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>&&, nfd::face::FaceParams const&, std::function<void (std::shared_ptr<nfd::face::Face> const&)> const&) (this=0x5555558b6af0, socket=..., params=..., onFaceCreated=...) at ../daemon/face/tcp-channel.cpp:104
#5  0x0000555555672120 in nfd::face::TcpChannel::handleAccept(boost::system::error_code const&, std::function<void (std::shared_ptr<nfd::face::Face> const&)> const&, std::function<void (unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)> const&) (this=0x5555558b6af0, error=..., onFaceCreated=..., onAcceptFailed=...) at ../daemon/face/tcp-channel.cpp:177
#6  0x0000555555674838 in nfd::face::TcpChannel::<lambda(const auto:4&)>::operator()<boost::system::error_code> (e=..., __closure=0x7fffffffdd60) at ../daemon/face/tcp-channel.cpp:156
#7  boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code>::operator() (
    this=0x7fffffffdd60) at /usr/include/boost/asio/detail/bind_handler.hpp:65
#8  boost::asio::asio_handler_invoke<boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code> > (function=...) at /usr/include/boost/asio/handler_invoke_hook.hpp:69
#9  boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code>, nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)> > (context=..., function=...)
    at /usr/include/boost/asio/detail/handler_invoke_helpers.hpp:37
#10 boost::asio::detail::asio_handler_invoke<boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code>, nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code> (this_handler=0x7fffffffdd60, function=...)
    at /usr/include/boost/asio/detail/bind_handler.hpp:106
#11 boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code>, boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code> > (context=...,
    function=...) at /usr/include/boost/asio/detail/handler_invoke_helpers.hpp:37
#12 boost::asio::detail::io_object_executor<boost::asio::executor>::dispatch<boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code>, std::allocator<void> > (a=..., f=..., this=<synthetic pointer>) at /usr/include/boost/asio/detail/io_object_executor.hpp:119
#13 boost::asio::detail::handler_work<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::asio::detail::io_object_executor<boost::asio::executor>, boost::asio::detail::io_object_executor<boost::asio::executor> >::complete<boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code> > (handler=..., function=..., this=<synthetic pointer>) at /usr/include/boost/asio/detail/handler_work.hpp:72
#14 boost::asio::detail::reactive_socket_accept_op<boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::ip::tcp, nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::asio::detail::io_object_executor<boost::asio::executor> >::do_complete(void *, boost::asio::detail::operation *, const boost::system::error_code &, std::size_t) (owner=0x555555882d20, base=<optimized out>) at /usr/include/boost/asio/detail/reactive_socket_accept_op.hpp:140
#15 0x000055555560d3e3 in boost::asio::detail::scheduler_operation::complete (bytes_transferred=0, ec=..., owner=0x555555882d20, this=0x5555558b8540)
    at /usr/include/boost/asio/detail/scheduler_operation.hpp:40
#16 boost::asio::detail::epoll_reactor::descriptor_state::do_complete (bytes_transferred=<optimized out>, ec=..., base=0x5555558b8490, owner=0x555555882d20)
    at /usr/include/boost/asio/detail/impl/epoll_reactor.ipp:776
#17 boost::asio::detail::epoll_reactor::descriptor_state::do_complete (owner=0x555555882d20, base=0x5555558b8490, ec=..., bytes_transferred=<optimized out>)
    at /usr/include/boost/asio/detail/impl/epoll_reactor.ipp:766
#18 0x000055555560cf75 in boost::asio::detail::scheduler_operation::complete (bytes_transferred=<optimized out>, ec=..., owner=0x555555882d20, this=<optimized out>)
    at /usr/include/boost/asio/detail/scheduler_operation.hpp:40
#19 boost::asio::detail::scheduler::do_run_one (ec=..., this_thread=..., lock=..., this=<optimized out>) at /usr/include/boost/asio/detail/impl/scheduler.ipp:447
#20 boost::asio::detail::scheduler::run (this=0x555555882d20, ec=...) at /usr/include/boost/asio/detail/impl/scheduler.ipp:200
#21 0x00005555556165f9 in boost::asio::io_context::run (this=0x55555587e400) at /usr/include/boost/asio/impl/io_context.ipp:63
#22 nfd::NfdRunner::run (this=<optimized out>) at ../daemon/main.cpp:156
#23 0x00005555555f4841 in main (argc=<optimized out>, argv=<optimized out>) at ../daemon/main.cpp:336
(gdb) cont
Continuing.

Thread 1 "nfd" hit Breakpoint 1, 0x00005555556141d6 in boost::system::system_error::system_error (this=<optimized out>) at /usr/include/boost/exception/exception.hpp:515
515     /usr/include/boost/exception/exception.hpp: No such file or directory.
(gdb) bt
#0  0x00005555556141d6 in boost::system::system_error::system_error (this=<optimized out>) at /usr/include/boost/exception/exception.hpp:515
#1  boost::exception_detail::error_info_injector<boost::system::system_error>::error_info_injector (x=..., this=<optimized out>) at /usr/include/boost/exception/exception.hpp:336
#2  boost::enable_error_info<boost::system::system_error> (x=...) at /usr/include/boost/exception/exception.hpp:383
#3  boost::exception_detail::enable_both<boost::system::system_error> (x=...) at /usr/include/boost/exception/exception.hpp:517
#4  0x00005555555be46b in boost::throw_exception<boost::system::system_error> (e=...) at /usr/include/boost/throw_exception.hpp:63
#5  0x000055555561445f in boost::asio::detail::do_throw_error (err=..., location=<optimized out>) at /usr/include/boost/asio/detail/impl/throw_error.ipp:38
#6  0x0000555555675b54 in boost::asio::detail::throw_error (location=0x5555557a19c6 "remote_endpoint", err=...) at /usr/include/boost/asio/detail/throw_error.hpp:42
#7  boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::executor>::remote_endpoint (this=<optimized out>) at /usr/include/boost/asio/basic_socket.hpp:1606
#8  0x0000555555671146 in nfd::face::TcpChannel::createFace(boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>&&, nfd::face::FaceParams const&, std::function<void (std::shared_ptr<nfd::face::Face> const&)> const&) (this=0x5555558b6af0, socket=..., params=..., onFaceCreated=...) at ../daemon/face/tcp-channel.cpp:104
#9  0x0000555555672120 in nfd::face::TcpChannel::handleAccept(boost::system::error_code const&, std::function<void (std::shared_ptr<nfd::face::Face> const&)> const&, std::function<void (unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)> const&) (this=0x5555558b6af0, error=..., onFaceCreated=..., onAcceptFailed=...) at ../daemon/face/tcp-channel.cpp:177
#10 0x0000555555674838 in nfd::face::TcpChannel::<lambda(const auto:4&)>::operator()<boost::system::error_code> (e=..., __closure=0x7fffffffdd60) at ../daemon/face/tcp-channel.cpp:156
#11 boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code>::operator() (
    this=0x7fffffffdd60) at /usr/include/boost/asio/detail/bind_handler.hpp:65
#12 boost::asio::asio_handler_invoke<boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code> > (function=...) at /usr/include/boost/asio/handler_invoke_hook.hpp:69
#13 boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code>, nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)> > (context=..., function=...)
    at /usr/include/boost/asio/detail/handler_invoke_helpers.hpp:37
#14 boost::asio::detail::asio_handler_invoke<boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code>, nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code> (this_handler=0x7fffffffdd60, function=...)
    at /usr/include/boost/asio/detail/bind_handler.hpp:106
#15 boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code>, boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code> > (context=...,
    function=...) at /usr/include/boost/asio/detail/handler_invoke_helpers.hpp:37
#16 boost::asio::detail::io_object_executor<boost::asio::executor>::dispatch<boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code>, std::allocator<void> > (a=..., f=..., this=<synthetic pointer>) at /usr/include/boost/asio/detail/io_object_executor.hpp:119
#17 boost::asio::detail::handler_work<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::asio::detail::io_object_executor<boost::asio::executor>, boost::asio::detail::io_object_executor<boost::asio::executor> >::complete<boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code> > (handler=..., function=..., this=<synthetic pointer>) at /usr/include/boost/asio/detail/handler_work.hpp:72
#18 boost::asio::detail::reactive_socket_accept_op<boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::ip::tcp, nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::asio::detail::io_object_executor<boost::asio::executor> >::do_complete(void *, boost::asio::detail::operation *, const boost::system::error_code &, std::size_t) (owner=0x555555882d20, base=<optimized out>) at /usr/include/boost/asio/detail/reactive_socket_accept_op.hpp:140
#19 0x000055555560d3e3 in boost::asio::detail::scheduler_operation::complete (bytes_transferred=0, ec=..., owner=0x555555882d20, this=0x5555558b8540)
    at /usr/include/boost/asio/detail/scheduler_operation.hpp:40
#20 boost::asio::detail::epoll_reactor::descriptor_state::do_complete (bytes_transferred=<optimized out>, ec=..., base=0x5555558b8490, owner=0x555555882d20)
    at /usr/include/boost/asio/detail/impl/epoll_reactor.ipp:776
#21 boost::asio::detail::epoll_reactor::descriptor_state::do_complete (owner=0x555555882d20, base=0x5555558b8490, ec=..., bytes_transferred=<optimized out>)
    at /usr/include/boost/asio/detail/impl/epoll_reactor.ipp:766
#22 0x000055555560cf75 in boost::asio::detail::scheduler_operation::complete (bytes_transferred=<optimized out>, ec=..., owner=0x555555882d20, this=<optimized out>)
    at /usr/include/boost/asio/detail/scheduler_operation.hpp:40
#23 boost::asio::detail::scheduler::do_run_one (ec=..., this_thread=..., lock=..., this=<optimized out>) at /usr/include/boost/asio/detail/impl/scheduler.ipp:447
#24 boost::asio::detail::scheduler::run (this=0x555555882d20, ec=...) at /usr/include/boost/asio/detail/impl/scheduler.ipp:200
#25 0x00005555556165f9 in boost::asio::io_context::run (this=0x55555587e400) at /usr/include/boost/asio/impl/io_context.ipp:63
#26 nfd::NfdRunner::run (this=<optimized out>) at ../daemon/main.cpp:156
#27 0x00005555555f4841 in main (argc=<optimized out>, argv=<optimized out>) at ../daemon/main.cpp:336
(gdb) cont
Continuing.

Thread 1 "nfd" hit Breakpoint 1, 0x000055555561423a in boost::system::system_error::system_error (this=<optimized out>) at /usr/include/boost/exception/exception.hpp:226
226     in /usr/include/boost/exception/exception.hpp
(gdb) bt
#0  0x000055555561423a in boost::system::system_error::system_error (this=<optimized out>) at /usr/include/boost/exception/exception.hpp:226
#1  boost::exception_detail::error_info_injector<boost::system::system_error>::error_info_injector (this=<optimized out>) at /usr/include/boost/exception/exception.hpp:330
#2  boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >::clone_impl (x=..., __vtt_parm=<optimized out>, this=<optimized out>,
    __in_chrg=<optimized out>) at /usr/include/boost/exception/exception.hpp:443
#3  boost::wrapexcept<boost::system::system_error>::wrapexcept (x=..., this=<optimized out>, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at /usr/include/boost/exception/exception.hpp:486
#4  boost::exception_detail::enable_both<boost::system::system_error> (x=...) at /usr/include/boost/exception/exception.hpp:517
#5  0x00005555555be46b in boost::throw_exception<boost::system::system_error> (e=...) at /usr/include/boost/throw_exception.hpp:63
#6  0x000055555561445f in boost::asio::detail::do_throw_error (err=..., location=<optimized out>) at /usr/include/boost/asio/detail/impl/throw_error.ipp:38
#7  0x0000555555675b54 in boost::asio::detail::throw_error (location=0x5555557a19c6 "remote_endpoint", err=...) at /usr/include/boost/asio/detail/throw_error.hpp:42
#8  boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::executor>::remote_endpoint (this=<optimized out>) at /usr/include/boost/asio/basic_socket.hpp:1606
#9  0x0000555555671146 in nfd::face::TcpChannel::createFace(boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>&&, nfd::face::FaceParams const&, std::function<void (std::shared_ptr<nfd::face::Face> const&)> const&) (this=0x5555558b6af0, socket=..., params=..., onFaceCreated=...) at ../daemon/face/tcp-channel.cpp:104
#10 0x0000555555672120 in nfd::face::TcpChannel::handleAccept(boost::system::error_code const&, std::function<void (std::shared_ptr<nfd::face::Face> const&)> const&, std::function<void (unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)> const&) (this=0x5555558b6af0, error=..., onFaceCreated=..., onAcceptFailed=...) at ../daemon/face/tcp-channel.cpp:177
#11 0x0000555555674838 in nfd::face::TcpChannel::<lambda(const auto:4&)>::operator()<boost::system::error_code> (e=..., __closure=0x7fffffffdd60) at ../daemon/face/tcp-channel.cpp:156
#12 boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code>::operator() (
    this=0x7fffffffdd60) at /usr/include/boost/asio/detail/bind_handler.hpp:65
#13 boost::asio::asio_handler_invoke<boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code> > (function=...) at /usr/include/boost/asio/handler_invoke_hook.hpp:69
#14 boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code>, nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)> > (context=..., function=...)
    at /usr/include/boost/asio/detail/handler_invoke_helpers.hpp:37
#15 boost::asio::detail::asio_handler_invoke<boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code>, nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code> (this_handler=0x7fffffffdd60, function=...)
    at /usr/include/boost/asio/detail/bind_handler.hpp:106
#16 boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code>, boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code> > (context=...,
    function=...) at /usr/include/boost/asio/detail/handler_invoke_helpers.hpp:37
#17 boost::asio::detail::io_object_executor<boost::asio::executor>::dispatch<boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code>, std::allocator<void> > (a=..., f=..., this=<synthetic pointer>) at /usr/include/boost/asio/detail/io_object_executor.hpp:119
#18 boost::asio::detail::handler_work<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::asio::detail::io_object_executor<boost::asio::executor>, boost::asio::detail::io_object_executor<boost::asio::executor> >::complete<boost::asio::detail::binder1<nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::system::error_code> > (handler=..., function=..., this=<synthetic pointer>) at /usr/include/boost/asio/detail/handler_work.hpp:72
#19 boost::asio::detail::reactive_socket_accept_op<boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::ip::tcp, nfd::face::TcpChannel::accept(const FaceCreatedCallback&, const FaceCreationFailedCallback&)::<lambda(const auto:4&)>, boost::asio::detail::io_object_executor<boost::asio::executor> >::do_complete(void *, boost::asio::detail::operation *, const boost::system::error_code &, std::size_t) (owner=0x555555882d20, base=<optimized out>) at /usr/include/boost/asio/detail/reactive_socket_accept_op.hpp:140
#20 0x000055555560d3e3 in boost::asio::detail::scheduler_operation::complete (bytes_transferred=0, ec=..., owner=0x555555882d20, this=0x5555558b8540)
    at /usr/include/boost/asio/detail/scheduler_operation.hpp:40
#21 boost::asio::detail::epoll_reactor::descriptor_state::do_complete (bytes_transferred=<optimized out>, ec=..., base=0x5555558b8490, owner=0x555555882d20)
    at /usr/include/boost/asio/detail/impl/epoll_reactor.ipp:776
#22 boost::asio::detail::epoll_reactor::descriptor_state::do_complete (owner=0x555555882d20, base=0x5555558b8490, ec=..., bytes_transferred=<optimized out>)
    at /usr/include/boost/asio/detail/impl/epoll_reactor.ipp:766
#23 0x000055555560cf75 in boost::asio::detail::scheduler_operation::complete (bytes_transferred=<optimized out>, ec=..., owner=0x555555882d20, this=<optimized out>)
    at /usr/include/boost/asio/detail/scheduler_operation.hpp:40
#24 boost::asio::detail::scheduler::do_run_one (ec=..., this_thread=..., lock=..., this=<optimized out>) at /usr/include/boost/asio/detail/impl/scheduler.ipp:447
#25 boost::asio::detail::scheduler::run (this=0x555555882d20, ec=...) at /usr/include/boost/asio/detail/impl/scheduler.ipp:200
#26 0x00005555556165f9 in boost::asio::io_context::run (this=0x55555587e400) at /usr/include/boost/asio/impl/io_context.ipp:63
#27 nfd::NfdRunner::run (this=<optimized out>) at ../daemon/main.cpp:156
#28 0x00005555555f4841 in main (argc=<optimized out>, argv=<optimized out>) at ../daemon/main.cpp:336
(gdb) cont
Continuing.
1618431703.349924 FATAL: [nfd.Main] Throw location unknown (consider using BOOST_THROW_EXCEPTION)
Dynamic exception type: boost::wrapexcept<boost::system::system_error>
std::exception::what: remote_endpoint: Transport endpoint is not connected
[Thread 0x7ffff64d8700 (LWP 3493) exited]
[Thread 0x7ffff6cd9700 (LWP 3492) exited]
[Inferior 1 (process 3491) exited with code 01]

The above stack trace is obtained on a different system, in a Docker container based on ubuntu:focal.
Its NFD version is:

NFD version 0.7.1-21-g7249fb4d starting
Built with GNU C++ version 9.3.0, with GNU libstdc++ version 20200808, with Boost version 1.71.0, with libpcap version 1.9.1 (with TPACKET_V3), with WebSocket++ version 0.8.1, with ndn-cxx version 0.7.1-23-g39535f44

Also available in: Atom PDF