oxen-io / lokinet

Lokinet is an anonymous, decentralized and IP based overlay network for the internet.
https://lokinet.org/
GNU General Public License v3.0
1.77k stars 220 forks source link

Assert failure in service node mode #2138

Closed jagerman closed 1 year ago

jagerman commented 1 year ago

A debug build currently fails to run in service node mode with a NullMutex assertion failure:

[Current thread is 1 (Thread 0x7f98401ff640 (LWP 3147722))]
(gdb) bt
#0  0x00007f984bc5a83c in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007f984bc0ea52 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#2  0x00007f984bbf9469 in abort () from /lib/x86_64-linux-gnu/libc.so.6
#3  0x0000556b40e1dfb8 in llarp::util::NullMutex::lock (this=0x7f9849c45158) at ../llarp/util/thread/threading.hpp:63
#4  0x0000556b40cfd258 in llarp::util::NullLock::NullLock (this=<optimized out>, mtx=..., this=<optimized out>, mtx=...) at ../llarp/util/thread/threading.hpp:82
#5  0x0000556b412b4223 in llarp::NodeDB::NumLoaded (this=0x7f9849c450d0) at ../llarp/nodedb.cpp:239
#6  0x0000556b40e2326c in llarp::Router::TooFewPeers (this=0x7f9849cd8010) at ../llarp/router/router.cpp:500
#7  0x0000556b40e232a2 in llarp::Router::OxendErrorState[abi:cxx11]() const (this=0x7f9849cd8010) at ../llarp/router/router.cpp:508
#8  0x0000556b40eb8e9a in operator() (__closure=0x7f9847612040) at ../llarp/rpc/lokid_rpc_client.cpp:187
#9  0x0000556b40ed7bf4 in std::__invoke_impl<void, llarp::rpc::LokidRpcClient::Connected()::<lambda()>&>(std::__invoke_other, struct {...} &) (__f=...) at /usr/include/c++/10/bits/invoke.h:60
#10 0x0000556b40ece4b6 in std::__invoke_r<void, llarp::rpc::LokidRpcClient::Connected()::<lambda()>&>(struct {...} &) (__fn=...) at /usr/include/c++/10/bits/invoke.h:110
#11 0x0000556b40ec45ab in std::_Function_handler<void(), llarp::rpc::LokidRpcClient::Connected()::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/10/bits/std_function.h:291
#12 0x0000556b40dd2878 in std::function<void ()>::operator()() const (this=0x7f9849c003f0) at /usr/include/c++/10/bits/std_function.h:622
#13 0x00007f984c5e960e in oxenmq::Batch<void>::set_value(oxenmq::job_result<void, void>&, std::function<void ()>&) () from /lib/x86_64-linux-gnu/liboxenmq.so.1.2.14
#14 0x00007f984c5e919d in oxenmq::Batch<void>::run_job(int) () from /lib/x86_64-linux-gnu/liboxenmq.so.1.2.14
#15 0x00007f984c618fe0 in oxenmq::OxenMQ::worker_thread(unsigned int, std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::function<void ()>) () from /lib/x86_64-linux-gnu/liboxenmq.so.1.2.14
#16 0x00007f984c622dc1 in void std::__invoke_impl<void, void (oxenmq::OxenMQ::*)(unsigned int, std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::function<void ()>), oxenmq::OxenMQ*, unsigned int, std::nullopt_t, decltype(nullptr)>(std::__invoke_memfun_deref, void (oxenmq::OxenMQ::*&&)(unsigned int, std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::function<void ()>), oxenmq::OxenMQ*&&, unsigned int&&, std::nullopt_t&&, decltype(nullptr)&&) ()
   from /lib/x86_64-linux-gnu/liboxenmq.so.1.2.14
#17 0x00007f984c622c3a in std::__invoke_result<void (oxenmq::OxenMQ::*)(unsigned int, std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::function<void ()>), oxenmq::OxenMQ*, unsigned int, std::nullopt_t, decltype(nullptr)>::type std::__invoke<void (oxenmq::OxenMQ::*)(unsigned int, std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::function<void ()>), oxenmq::OxenMQ*, unsigned int, std::nullopt_t, decltype(nullptr)>(void (oxenmq::OxenMQ::*&&)(unsigned int, std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::function<void ()>), oxenmq::OxenMQ*&&, unsigned int&&, std::nullopt_t&&, decltype(nullptr)&&) () from /lib/x86_64-linux-gnu/liboxenmq.so.1.2.14
#18 0x00007f984c622af5 in void std::thread::_Invoker<std::tuple<void (oxenmq::OxenMQ::*)(unsigned int, std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::function<void ()>), oxenmq::OxenMQ*, unsigned int, std::nullopt_t, decltype(nullptr)> >::_M_invoke<0ul, 1ul, 2ul, 3ul, 4ul>(std::_Index_tuple<0ul, 1ul, 2ul, 3ul, 4ul>) () from /lib/x86_64-linux-gnu/liboxenmq.so.1.2.14
#19 0x00007f984c622a5a in std::thread::_Invoker<std::tuple<void (oxenmq::OxenMQ::*)(unsigned int, std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::function<void ()>), oxenmq::OxenMQ*, unsigned int, std::nullopt_t, decltype(nullptr)> >::operator()() () from /lib/x86_64-linux-gnu/liboxenmq.so.1.2.14
#20 0x00007f984c622a3e in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (oxenmq::OxenMQ::*)(unsigned int, std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::function<void ()>), oxenmq::OxenMQ*, unsigned int, std::nullopt_t, decltype(nullptr)> > >::_M_run() () from /lib/x86_64-linux-gnu/liboxenmq.so.1.2.14
#21 0x00007f984bf9b3d3 in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
#22 0x00007f984bc58b27 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#23 0x00007f984bcdb78c in ?? () from /lib/x86_64-linux-gnu/libc.so.6
majestrate commented 1 year ago

last tag or on dev branch?

jagerman commented 1 year ago

dev branch

jagerman commented 1 year ago

(untested on stable)

majestrate commented 1 year ago

i have a fix, making PR