Sitelet https://github.com/matrix-construct/construct/issues/156
Skip to content

ipv6 does not work, reliable crash at start #156

Description

@grinapo

As the $subj said.

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7cfbfda in ircd::rfc1035::record::AAAA::AAAA (this=0x7ffff6781f38, answer=...) at rfc1035.cc:257
257     ircd::rfc1035::record::AAAA::AAAA(const answer &answer)

bt

#0  0x00007ffff7cfbfda in ircd::rfc1035::record::AAAA::AAAA (this=0x7ffff6781f38, answer=...) at rfc1035.cc:257
#1  0x00007ffff7dbefdf in ircd::net::dns::new_record<ircd::rfc1035::record::AAAA> (answer=..., buf=<synthetic pointer>...) at /usr/include/c++/9/new:174
#2  ircd::net::dns::handle_resolved (eptr=..., tag=..., an=...) at net_dns.cc:448
#3  0x00007ffff7dbf24c in std::_Function_handler<void (std::__exception_ptr::exception_ptr, ircd::net::dns::tag const&, ircd::vector_view<ircd::rfc1035::answer const> const&), void (*)(std::__exception_ptr::exception_ptr, ircd::net::dns::tag const&, ircd::vector_view<ircd::rfc1035::answer const> const&)>::_M_invoke(std::_Any_data const&, std::__exception_ptr::exception_ptr&&, ircd::net::dns::tag const&, ircd::vector_view<ircd::rfc1035::answer const> const&) (__functor=..., __args#0=..., __args#1=..., __args#2=...) at /usr/include/c++/9/bits/exception_ptr.h:107
#4  0x00007ffff7dc472f in std::function<void (std::__exception_ptr::exception_ptr, ircd::net::dns::tag const&, ircd::vector_view<ircd::rfc1035::answer const> const&)>::operator()(std::__exception_ptr::exception_ptr, ircd::net::dns::tag const&, ircd::vector_view<ircd::rfc1035::answer const> const&) const (
    __args#2=..., __args#1=..., __args#0=..., this=0x7ffff58acb40) at /usr/include/c++/9/bits/std_function.h:683
#5  ircd::net::dns::resolver::handle_reply (this=this@entry=0x7ffff58acb40, header=..., body=..., tag=...) at net_dns_resolver.cc:723
#6  0x00007ffff7dc757e in ircd::net::dns::resolver::handle_reply (this=this@entry=0x7ffff58acb40, from=..., header=..., body=...) at net_dns_resolver.cc:668
#7  0x00007ffff7dc77f0 in ircd::net::dns::resolver::handle (this=this@entry=0x7ffff58acb40, from=..., buf=...) at net_dns_resolver.cc:577
#8  0x00007ffff7dc8283 in ircd::net::dns::resolver::recv_worker (this=0x7ffff58acb40) at net_dns_resolver.cc:527
#9  0x00007ffff7d286c9 in std::function<void ()>::operator()() const (this=0x7ffff59ee310) at /usr/include/c++/9/bits/std_function.h:683
#10 ircd::ctx::ctx::operator()(boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::executor> >, std::function<void ()>) (this=0x7ffff58acc80, yc=..., func=...) at ctx.cc:142
#11 0x00007ffff7d3ce20 in std::__invoke_impl<void, void (ircd::ctx::ctx::*&)(boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::executor> >, std::function<void ()>) noexcept, ircd::ctx::ctx*&, boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::strand<boost::asio::io_context::executor_type> > > const&, std::function<void ()>&>(std::__invoke_memfun_deref, void (ircd::ctx::ctx::*&)(boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::executor> >, std::function<void ()>) noexcept, ircd::ctx::ctx*&, boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::strand<boost::asio::io_context::executor_type> > > const&, std::function<void ()>&) (__t=@0x7ffff5ea9028: 0x7ffff58acc80, __f=
    @0x7ffff5ea8ff8: (void (ircd::ctx::ctx::*)(ircd::ctx::ctx * const, boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::executor> >, std::function<void()>)) 0x7ffff7d28660 <ircd::ctx::ctx::operator()(boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::executor> >, std::function<void ()>)>) at /usr/include/c++/9/bits/shared_ptr_base.h:1169
#12 std::__invoke<void (ircd::ctx::ctx::*&)(boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::executor> >, std::function<void ()>) noexcept, ircd::ctx::ctx*&, boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::strand<boost::asio::io_context::executor_type> > > const&, std::function<void ()>&>(void (ircd::ctx::ctx::*&)(boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::executor> >, std::function<void ()>) noexcept, ircd::ctx::ctx*&, boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::strand<boost::asio::io_context::executor_type> > > const&, std::function<void ()>&) (__fn=
    @0x7ffff5ea8ff8: (void (ircd::ctx::ctx::*)(ircd::ctx::ctx * const, boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::executor> >, std::function<void()>)) 0x7ffff7d28660 <ircd::ctx::ctx::operator()(boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::executor> >, std::function<void ()>)>) at /usr/include/c++/9/bits/invoke.h:95
#13 std::_Bind<void (ircd::ctx::ctx::*(ircd::ctx::ctx*, std::_Placeholder<1>, std::function<void ()>))(boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::executor> >, std::function<void ()>) noexcept>::__call<void, boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::strand<boost::asio::io_context::executor_type> > > const&, 0ul, 1ul, 2ul>(std::tuple<boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::strand<boost::asio::io_context::executor_type> > > const&>&&, std::_Index_tuple<0ul, 1ul, 2ul>) (__args=..., 
    this=0x7ffff5ea8ff8) at /usr/include/c++/9/functional:400
#14 std::_Bind<void (ircd::ctx::ctx::*(ircd::ctx::ctx*, std::_Placeholder<1>, std::function<void ()>))(boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::executor> >, std::function<void ()>) noexcept>::operator()<boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::strand<boost::asio::io_context::executor_type> > > const&, void>(boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::strand<boost::asio::io_context::executor_type> > > const&) (this=0x7ffff5ea8ff8) at /usr/include/c++/9/functional:484
#15 boost::asio::detail::coro_entry_point<boost::asio::executor_binder<void (*)(), boost::asio::strand<boost::asio::io_context::executor_type> >, std::_Bind<void (ircd::ctx::ctx::*(ircd::ctx::ctx*, std::_Placeholder<1>, std::function<void ()>))(boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::executor> >, std::function<void ()>) noexcept> >::operator()(boost::coroutines::pull_coroutine<void>&) (this=<optimized out>, ca=...) at /usr/include/boost/asio/impl/spawn.hpp:382
#16 0x00007ffff7d3d120 in boost::coroutines::detail::push_coroutine_object<boost::coroutines::pull_coroutine<void>, void, boost::asio::detail::coro_entry_point<boost::asio::executor_binder<void (*)(), boost::asio::strand<boost::asio::io_context::executor_type> >, std::_Bind<void (ircd::ctx::ctx::*(ircd::ctx::ctx*, std::_Placeholder<1>, std::function<void ()>))(boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::executor> >, std::function<void ()>) noexcept> >&, boost::coroutines::basic_standard_stack_allocator<boost::coroutines::stack_traits> >::run() (this=0x7ffff59ee420)
    at /usr/include/boost/coroutine/asymmetric_coroutine.hpp:1410
#17 boost::coroutines::detail::trampoline_push_void<boost::coroutines::detail::push_coroutine_object<boost::coroutines::pull_coroutine<void>, void, boost::asio::detail::coro_entry_point<boost::asio::executor_binder<void (*)(), boost::asio::strand<boost::asio::io_context::executor_type> >, std::_Bind<void (ircd::ctx::ctx::*(ircd::ctx::ctx*, std::_Placeholder<1>, std::function<void ()>))(boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::executor> >, std::function<void ()>) noexcept> >&, boost::coroutines::basic_standard_stack_allocator<boost::coroutines::stack_traits> > >(boost::context::detail::transfer_t) (t=...) at /usr/include/boost/coroutine/detail/trampoline_push.hpp:70
#18 0x00007ffff68011ef in make_fcontext () from /usr/lib/x86_64-linux-gnu/libboost_context.so.1.67.0
#19 0x00007ffff7facad0 in vtable for boost::coroutines::detail::push_coroutine_object<boost::coroutines::pull_coroutine<void>, void, boost::asio::detail::coro_entry_point<boost::asio::executor_binder<void (*)(), boost::asio::strand<boost::asio::io_context::executor_type> >, std::_Bind<void (ircd::ctx::ctx::*(ircd::ctx::ctx*, std::_Placeholder<1>, std::function<void ()>))(boost::asio::basic_yield_context<boost::asio::executor_binder<void (*)(), boost::asio::executor> >, std::function<void ()>) noexcept> >&, boost::coroutines::basic_standard_stack_allocator<boost::coroutines::stack_traits> > ()
   from /home/construct/server/lib/libircd.so.3

(gdb) frame 2

#2  ircd::net::dns::handle_resolved (eptr=..., tag=..., an=...) at net_dns.cc:448
448                             record.at(i) = new_record<rfc1035::record::AAAA>(buf, an.at(i));
(gdb) print an
$4 = (const ircd::net::dns::answers &) @0x7ffff59edb90: {_data = 0x7ffff6793500, _stop = 0x7ffff6793630}
(gdb) print tag
$5 = (const ircd::net::dns::tag &) @0x7fffdd139630: {id = 24523, hp = {static verbatim = {<No data fields>}, host = {<std::basic_string_view<char, std::char_traits<char> >> = "matrix.bauer.network", <No data fields>}, service = {<std::basic_string_view<char, std::char_traits<char> >> = "", <No data fields>}, 
    port = 443}, opts = {qtype = 28, srv = {<std::basic_string_view<char, std::char_traits<char> >> = "", <No data fields>}, proto = {<std::basic_string_view<char, std::char_traits<char> >> = "tcp", <No data fields>}, cache_check = true, cache_result = true, nxdomain_exceptions = true, service_port = true}, 
  question = {<ircd::buffer::buffer<char const*>> = {<std::pair<char const*, char const*>> = {first = 0x7fffdd1398d0 "\313_\001", second = 0x7fffdd1398f6 ""}, <No data fields>}, <No data fields>}, last = {__d = {__r = -9223372036854775808}}, tries = 1 '\001', rcode = 0, 
  server = {<std::pair<ircd::net::ipaddr, unsigned short>> = {first = {static v4_min = 281470681743360, static v4_max = 281474976710655, v4 = 1536337886, v6 = 281472218081246, byte = {_M_elems = "ާ\222[\377\377\000\000\000\000\000\000\000\000\000"}}, second = 53}, <No data fields>}, 
  hostbuf = "matrix.bauer.network", '\000' <repeats 235 times>, servicebuf = '\000' <repeats 255 times>, qbuf = "\313_\001\000\000\001\000\000\000\000\000\000\006matrix\005bauer\anetwork\000\000\034\000\001", '\000' <repeats 314 times>...}

(gdb) frame 6

#6  0x00007ffff7dc757e in ircd::net::dns::resolver::handle_reply (this=this@entry=0x7ffff58acb40, from=..., header=..., body=...) at net_dns_resolver.cc:668
668             handle_reply(header, body, tag);
(gdb) print header
$7 = (const ircd::net::dns::resolver::header &) @0x7ffff59eff40: {id = 24523, rd = 1 '\001', tc = 0 '\000', aa = 0 '\000', opcode = 0 '\000', qr = 1 '\001', rcode = 0 '\000', cd = 0 '\000', ad = 0 '\000', unused = 0 '\000', ra = 1 '\001', qdcount = 1, ancount = 1, nscount = 0, arcount = 0}
(gdb) print body
$8 = (const ircd::buffer::const_buffer &) @0x7ffff59ede90: {<ircd::buffer::buffer<char const*>> = {<std::pair<char const*, char const*>> = {first = 0x7ffff59eff4c "\006matrix\005bauer\anetwork", second = 0x7ffff59eff82 "\tsecure-gw\002de"}, <No data fields>}, <No data fields>}

Activity

  1. added
    bugSomething isn't right.
    libircdRelated to the core supporting library (rather than application business-logic, etc).
    on Jun 2, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't right.libircdRelated to the core supporting library (rather than application business-logic, etc).

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions