Skip to content

Segmentation fault on PeerManager::Thread_ManagePeers #186

@davidtavarez

Description

@davidtavarez

Thread 5 "GrinNode" received signal SIGSEGV, Segmentation fault.

#0  0x000055555567f1e8 in std::__atomic_base<bool>::load (__m=std::memory_order_seq_cst, this=<optimized out>) at /usr/include/c++/7/bits/atomic_base.h:396
        __b = <optimized out>
        __b = <optimized out>
#1  std::atomic<bool>::operator bool (this=<optimized out>) at /usr/include/c++/7/atomic:86
No locals.
#2  Peer::IsDirty (this=<optimized out>) at /home/user/OpenSource/GrinPlusPlus/include/P2P/Peer.h:125
No locals.
#3  PeerManager::Thread_ManagePeers (peerManager=...) at /home/user/OpenSource/GrinPlusPlus/src/P2P/Seed/PeerManager.cpp:67
        peerEntry = @0x555562e999f0: {m_peer = {<std::__shared_ptr<Peer, (__gnu_cxx::_Lock_policy)2>> = {<std::__shared_ptr_access<Peer, (__gnu_cxx::_Lock_policy)2, false, false>> = {<No data fields>}, _M_ptr = 0x0, _M_refcount = {_M_pi = 0x0}}, <No data fields>}, m_lastAttempt = 0}
        iter = {_M_node = 0x555562e999a0}
        peersToUpdate = {<std::_Vector_base<std::shared_ptr<Peer>, std::allocator<std::shared_ptr<Peer> > >> = {_M_impl = {<std::allocator<std::shared_ptr<Peer> >> = {<__gnu_cxx::new_allocator<std::shared_ptr<Peer> >> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}
        peersToDelete = {<std::_Vector_base<std::shared_ptr<Peer>, std::allocator<std::shared_ptr<Peer> > >> = {_M_impl = {<std::allocator<std::shared_ptr<Peer> >> = {<__gnu_cxx::new_allocator<std::shared_ptr<Peer> >> = {<No data fields>}, <No data fields>}, _M_start = 0x55556275b850, _M_finish = 0x55556275b8b0,
              _M_end_of_storage = 0x55556275b8d0}}, <No data fields>}
        minimumContactTime = <optimized out>
        __func__ = "Thread_ManagePeers"
#4  0x0000555555680123 in PeerManager::<lambda()>::operator() (__closure=<optimized out>) at /home/user/OpenSource/GrinPlusPlus/src/P2P/Seed/PeerManager.cpp:42
        pWriter = {<Reader<PeerManager>> = {_vptr.Reader = 0x5555560b96e0 <vtable for Writer<PeerManager>+16>, m_pReader = {<std::__shared_ptr<Reader<PeerManager>::InnerReader<PeerManager>, (__gnu_cxx::_Lock_policy)2>> = {<std::__shared_ptr_access<Reader<PeerManager>::InnerReader<PeerManager>, (__gnu_cxx::_Lock_policy)2, false, false>> = {<No data fields>},
                _M_ptr = 0x555560f354f0, _M_refcount = {_M_pi = 0x555560f354e0}}, <No data fields>}}, m_pWriter = {<std::__shared_ptr<Writer<PeerManager>::InnerWriter<PeerManager>, (__gnu_cxx::_Lock_policy)2>> = {<std::__shared_ptr_access<Writer<PeerManager>::InnerWriter<PeerManager>, (__gnu_cxx::_Lock_policy)2, false, false>> = {<No data fields>},
              _M_ptr = 0x5555565fea80, _M_refcount = {_M_pi = 0x555560f9a500}}, <No data fields>}}
        pLocked = {<std::__shared_ptr<Locked<PeerManager>, (__gnu_cxx::_Lock_policy)2>> = {<std::__shared_ptr_access<Locked<PeerManager>, (__gnu_cxx::_Lock_policy)2, false, false>> = {<No data fields>}, _M_ptr = <optimized out>, _M_refcount = {_M_pi = 0x5555565db7d0}}, <No data fields>}
        pLockedWeak = <optimized out>
        pLockedWeak = <optimized out>
        pLocked = <optimized out>
        pWriter = <optimized out>
#5  std::__invoke_impl<void, PeerManager::Create(const Ptr&, std::shared_ptr<Locked<IPeerDB> >)::<lambda()>&> (__f=...) at /usr/include/c++/7/bits/invoke.h:60
No locals.
#6  std::__invoke<PeerManager::Create(const Ptr&, std::shared_ptr<Locked<IPeerDB> >)::<lambda()>&> (__fn=...) at /usr/include/c++/7/bits/invoke.h:95
No locals.
#7  std::_Bind<PeerManager::Create(const Ptr&, std::shared_ptr<Locked<IPeerDB> >)::<lambda()>()>::__call<void> (__args=..., this=<optimized out>) at /usr/include/c++/7/functional:467
No locals.
#8  std::_Bind<PeerManager::Create(const Ptr&, std::shared_ptr<Locked<IPeerDB> >)::<lambda()>()>::operator()<> (this=<optimized out>) at /usr/include/c++/7/functional:551
No locals.
#9  std::_Function_handler<void(), std::_Bind<PeerManager::Create(const Ptr&, std::shared_ptr<Locked<IPeerDB> >)::<lambda()>()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/7/bits/std_function.h:316
No locals.
#10 0x0000555555611d71 in std::function<void ()>::operator()() const (this=<optimized out>) at /usr/include/c++/7/bits/std_function.h:706
No locals.
#11 Bosma::Scheduler::manage_tasks()::{lambda(int)#1}::operator()(int) const (__closure=0x7ffff0001778) at /home/user/OpenSource/GrinPlusPlus/deps/scheduler/include/scheduler/Scheduler.h:211
        task = {<std::__shared_ptr<Bosma::Task, (__gnu_cxx::_Lock_policy)2>> = {<std::__shared_ptr_access<Bosma::Task, (__gnu_cxx::_Lock_policy)2, false, false>> = {<No data fields>}, _M_ptr = 0x555563af3e20, _M_refcount = {_M_pi = 0x555563af3e10}}, <No data fields>}
        this = 0x5555565b23f0
        task = <optimized out>
        this = <optimized out>
#12 std::__invoke_impl<void, Bosma::Scheduler::manage_tasks()::{lambda(int)#1}&, int>(std::__invoke_other, Bosma::Scheduler::manage_tasks()::{lambda(int)#1}&, int&&) (__f=...) at /usr/include/c++/7/bits/invoke.h:60
No locals.
#13 std::__invoke<Bosma::Scheduler::manage_tasks()::{lambda(int)#1}&, int>(std::__invoke_result&&, (Bosma::Scheduler::manage_tasks()::{lambda(int)#1}&)...) (__fn=...) at /usr/include/c++/7/bits/invoke.h:95
No locals.
#14 std::__future_base::_Task_state<Bosma::Scheduler::manage_tasks()::{lambda(int)#1}, std::allocator<int>, void (int)>::_M_run(int&&)::{lambda()#1}::operator()() const (__closure=<optimized out>) at /usr/include/c++/7/future:1421
        this = <optimized out>
        this = <optimized out>
#15 std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_state<Bosma::Scheduler::manage_tasks()::{lambda(int)#1}, std::allocator<int>, void (int)>::_M_run(int&&)::{lambda()#1}, void>::operator()() const (this=0x7ffff6345a20) at /usr/include/c++/7/future:1362
No locals.
#16 std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_state<Bosma::Scheduler::manage_tasks()::{lambda(int)#1}, std::allocator<int>, void (int)>::_M_run(int&&)::{lambda()#1}, void> >::_M_invoke(std::_Any_data const&) (__functor=...) at /usr/include/c++/7/bits/std_function.h:302
No locals.
#17 0x0000555555606ab9 in std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>::operator()() const (this=<optimized out>) at /usr/include/c++/7/bits/std_function.h:706
No locals.
#18 std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) (this=0x7ffff0001750, __f=<optimized out>, __did_set=0x7ffff63459e7) at /usr/include/c++/7/future:561
        __res = {_M_t = {
            _M_t = {<std::_Tuple_impl<0, std::__future_base::_Result_base*, std::__future_base::_Result_base::_Deleter>> = {<std::_Tuple_impl<1, std::__future_base::_Result_base::_Deleter>> = {<std::_Head_base<1, std::__future_base::_Result_base::_Deleter, true>> = {<std::__future_base::_Result_base::_Deleter> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Head_base<0, std::__future_base::_Result_base*, false>> = {_M_head_impl = 0x0}, <No data fields>}, <No data fields>}}}
#19 0x00007ffff7fac47f in __pthread_once_slow (once_control=0x7ffff0001768, init_routine=0x555555c87700 <__once_proxy>) at pthread_once.c:116
        _buffer = {__routine = 0x7ffff7fac4d0 <clear_once_control>, __arg = 0x7ffff0001768, __canceltype = 0, __prev = 0x0}
        val = <optimized out>
        newval = <optimized out>
#20 0x000055555560e6ad in __gthread_once (__func=<optimized out>, __once=<optimized out>) at /usr/include/x86_64-linux-gnu/c++/7/bits/gthr-default.h:699
No locals.
#21 std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) (__once=..., __f=<optimized out>)
    at /usr/include/c++/7/mutex:684
        __callable = {____f = @0x7ffff6345a10, ____args#0 = @0x7ffff63459e8, ____args#1 = @0x7ffff63459f0, ____args#2 = @0x7ffff63459f8}
        __e = <optimized out>
#22 0x000055555560e77e in std::__future_base::_State_baseV2::_M_set_result(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>, bool) (__ignore_failure=false, __res=..., this=<optimized out>) at /usr/include/c++/7/future:401
        __did_set = false
        __did_set = <optimized out>
#23 std::__future_base::_Task_state<Bosma::Scheduler::manage_tasks()::{lambda(int)#1}, std::allocator<int>, void (int)>::_M_run(int&&) (this=0x7ffff0001750, __args#0=<optimized out>) at /usr/include/c++/7/future:1423
        __boundfn = {__this = 0x7ffff0001750, ____args#0 = @0x7ffff6345a74}
#24 0x0000555555606913 in std::packaged_task<void (int)>::operator()(int) (__args#0=<optimized out>, this=<optimized out>) at /usr/include/c++/7/future:1556
No locals.
#25 ctpl::thread_pool::push<Bosma::Scheduler::manage_tasks()::{lambda(int)#1}>(Bosma::Scheduler::manage_tasks()::{lambda(int)#1}&&)::{lambda(int)#1}::operator()(int) const (id=<optimized out>, __closure=<optimized out>) at /home/user/OpenSource/GrinPlusPlus/deps/scheduler/include/scheduler/ctpl_stl.h:192
        pck = <optimized out>
        pck = <optimized out>
#26 std::_Function_handler<void (int), ctpl::thread_pool::push<Bosma::Scheduler::manage_tasks()::{lambda(int)#1}>(Bosma::Scheduler::manage_tasks()::{lambda(int)#1}&&)::{lambda(int)#1}>::_M_invoke(std::_Any_data const&, int&&) (__functor=..., __args#0=<optimized out>) at /usr/include/c++/7/bits/std_function.h:316
No locals.
#27 0x000055555561039f in std::function<void (int)>::operator()(int) const (__args#0=<optimized out>, this=0x7ffff0001600) at /usr/include/c++/7/bits/std_function.h:706
No locals.
#28 ctpl::thread_pool::set_thread(int)::{lambda()#1}::operator()() const (__closure=0x5555565b1728) at /home/user/OpenSource/GrinPlusPlus/deps/scheduler/include/scheduler/ctpl_stl.h:218
        func = <optimized out>
        lock = {_M_device = 0x5555565b2568, _M_owns = true}
        _flag = <optimized out>
        _f = <optimized out>
        isPop = <optimized out>
        flag = {<std::__shared_ptr<std::atomic<bool>, (__gnu_cxx::_Lock_policy)2>> = {<std::__shared_ptr_access<std::atomic<bool>, (__gnu_cxx::_Lock_policy)2, false, false>> = {<No data fields>}, _M_ptr = 0x5555565b0540, _M_refcount = {_M_pi = 0x5555565b0530}}, <No data fields>}
        i = 1
        this = 0x5555565b24b8
        flag = <optimized out>
        i = <optimized out>
        this = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
        _flag = <optimized out>
        _f = <optimized out>
        isPop = <optimized out>
        lock = <optimized out>
        func = <optimized out>
#29 std::__invoke_impl<void, ctpl::thread_pool::set_thread(int)::{lambda()#1}>(std::__invoke_other, ctpl::thread_pool::set_thread(int)::{lambda()#1}&&) (__f=...) at /usr/include/c++/7/bits/invoke.h:60
No locals.
#30 std::__invoke<ctpl::thread_pool::set_thread(int)::{lambda()#1}>(std::__invoke_result&&, (ctpl::thread_pool::set_thread(int)::{lambda()#1}&&)...) (__fn=...) at /usr/include/c++/7/bits/invoke.h:95
No locals.
#31 std::thread::_Invoker<std::tuple<ctpl::thread_pool::set_thread(int)::{lambda()#1}> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (this=0x5555565b1728) at /usr/include/c++/7/thread:234
No locals.
#32 std::thread::_Invoker<std::tuple<ctpl::thread_pool::set_thread(int)::{lambda()#1}> >::operator()() (this=0x5555565b1728) at /usr/include/c++/7/thread:243
No locals.
#33 std::thread::_State_impl<std::thread::_Invoker<std::tuple<ctpl::thread_pool::set_thread(int)::{lambda()#1}> > >::_M_run() (this=0x5555565b1720) at /usr/include/c++/7/thread:186
No locals.
#34 0x0000555555cbbdef in execute_native_thread_routine ()
No symbol table info available.
#35 0x00007ffff7fa3609 in start_thread (arg=<optimized out>) at pthread_create.c:477
        ret = <optimized out>
        pd = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140737324017408, 2003156278471480154, 140737488347230, 140737488347231, 140737488347232, 140737324014592, -2003177775969414310, -2003173907359542438}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = 0
#36 0x00007ffff7d72293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions