bitcoin-qt crashed in FinalizeNode() #9687

issue dooglus opened this issue on February 4, 2017
  1. dooglus commented at 10:49 AM on February 4, 2017: contributor

    built from master/HEAD (1c2edd9f).

    I added a lot of debug logging, which slowed things down, and eventually got a crash while not doing anything:

    Program received signal SIGSEGV, Segmentation fault.
    [Switching to LWP 25017]
    (anonymous namespace)::FinalizeNode (nodeid=9, fUpdateConnectionTime=@0x7fffa40fe76f: false) at net_processing.cpp:282
    282	    if (state->fSyncStarted)
    (gdb) p state
    $1 = ((anonymous namespace)::CNodeState *) 0x0
    (gdb) thread apply all where
    
    Thread 2 (LWP 25017):
    [#0](/bitcoin-bitcoin/0/)  (anonymous namespace)::FinalizeNode (nodeid=9, fUpdateConnectionTime=@0x7fffa40fe76f: false) at net_processing.cpp:282
    [#1](/bitcoin-bitcoin/1/)  0x0000555555726185 in operator() (a1=<optimized out>, a0=<optimized out>, this=<optimized out>) at /usr/include/boost/function/function_template.hpp:767
    [#2](/bitcoin-bitcoin/2/)  m_invoke<boost::function<void(int, bool&)>, 0u, 1u, int&, bool&> (args=..., func=..., this=<optimized out>)
        at /usr/include/boost/signals2/detail/variadic_slot_invoker.hpp:92
    [#3](/bitcoin-bitcoin/3/)  operator()<boost::function<void(int, bool&)>, int&, bool&, 2ul> (args=..., func=..., this=<optimized out>)
        at /usr/include/boost/signals2/detail/variadic_slot_invoker.hpp:81
    [#4](/bitcoin-bitcoin/4/)  m_invoke<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(int, bool&), boost::function<void(int, bool&)> >, boost::signals2::mutex> > > (connectionBody=..., this=<optimized out>)
        at /usr/include/boost/signals2/detail/variadic_slot_invoker.hpp:117
    [#5](/bitcoin-bitcoin/5/)  operator()<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(int, bool&), boost::function<void(int, bool&)> >, boost::signals2::mutex> > > (connectionBody=..., this=<optimized out>)
        at /usr/include/boost/signals2/detail/variadic_slot_invoker.hpp:110
    [#6](/bitcoin-bitcoin/6/)  dereference (this=0x7fffa40fe5d0) at /usr/include/boost/signals2/detail/slot_call_iterator.hpp:82
    [#7](/bitcoin-bitcoin/7/)  dereference<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, int, bool&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(int, bool&), boost::function<void(int, bool&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(int, bool&), boost::function<void(int, bool&)> >, boost::signals2::mutex> > > (f=...)
        at /usr/include/boost/iterator/iterator_facade.hpp:514
    [#8](/bitcoin-bitcoin/8/)  operator* (this=0x7fffa40fe5d0) at /usr/include/boost/iterator/iterator_facade.hpp:639
    [#9](/bitcoin-bitcoin/9/)  operator()<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, int, bool&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(int, bool&), boost::function<void(int, bool&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(int, bool&), boost::function<void(int, bool&)> >, boost::signals2::mutex> > > (last=..., 
        first=..., this=<optimized out>) at /usr/include/boost/signals2/optional_last_value.hpp:55
    [#10](/bitcoin-bitcoin/10/) operator()<boost::signals2::optional_last_value<void>, boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, int, bool&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(int, bool&), boost::function<void(int, bool&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(int, bool&), boost::function<void(int, bool&)> >, boost::signals2::mutex> > > (last=..., first=..., combiner=..., this=<optimized out>) at /usr/include/boost/signals2/detail/result_type_wrapper.hpp:64
    [#11](/bitcoin-bitcoin/11/) boost::signals2::detail::signal_impl<void (int, bool&), boost::signals2::optional_last_value<void>, int, std::less<int>, boost::function<void (int, bool&)>, boost::function<void (boost::signals2::connection const&, int, bool&)>, boost::signals2::mutex>::operator()(int, bool&) (this=<optimized out>, args#0=9, 
        args#1=args#1@entry=@0x7fffa40fe76f: false) at /usr/include/boost/signals2/detail/signal_template.hpp:246
    [#12](/bitcoin-bitcoin/12/) 0x000055555571188e in operator() (args#1=@0x7fffa40fe76f: false, args#0=<optimized out>, this=0x5555561d4f88 <g_signals+72>)
        at /usr/include/boost/signals2/detail/signal_template.hpp:695
    [#13](/bitcoin-bitcoin/13/) CConnman::DeleteNode (this=0x7fffd86728f0, pnode=0x7fff90344c90) at net.cpp:2280
    [#14](/bitcoin-bitcoin/14/) 0x0000555555711caf in CConnman::ThreadSocketHandler (this=0x7fffd86728f0) at net.cpp:1084
    [#15](/bitcoin-bitcoin/15/) 0x0000555555717744 in operator() (this=0x7fffa410ee70) at /usr/include/c++/4.9/functional:2439
    [#16](/bitcoin-bitcoin/16/) TraceThread<std::function<void ()> >(char const*, std::function<void ()>) (name=0x555555dfabfd "net", func=...) at util.h:218
    [#17](/bitcoin-bitcoin/17/) 0x000055555571459b in _M_invoke<0ul, 1ul> (this=<optimized out>) at /usr/include/c++/4.9/functional:1700
    [#18](/bitcoin-bitcoin/18/) operator() (this=<optimized out>) at /usr/include/c++/4.9/functional:1688
    [#19](/bitcoin-bitcoin/19/) std::thread::_Impl<std::_Bind_simple<void (*(char const*, std::function<void ()>))(char const*, std::function<void ()>)> >::_M_run() (this=<optimized out>)
        at /usr/include/c++/4.9/thread:115
    [#20](/bitcoin-bitcoin/20/) 0x00007ffff3bd5970 in ?? ()
    [#21](/bitcoin-bitcoin/21/) 0x0000000000000000 in ?? ()
    
    Thread 1 (LWP 25000):
    [#0](/bitcoin-bitcoin/0/)  0x00007ffff333caed in ?? ()
    [#1](/bitcoin-bitcoin/1/)  0x0000000000000000 in ?? ()
    (gdb)  

    debug.log ends like this:

    2017-02-04 10:39:19 P2P peers available. Skipped DNS seeding.
    2017-02-04 10:39:19 dnsseed thread exit
    2017-02-04 10:39:22 receive version message: /Satoshi:0.13.2(IgniOS-Core-1)/: version 70015, blocks=451514, us=x.x.x.x:5898, peer=4, peeraddr=186.154.147.2:8333
    2017-02-04 10:39:28 receive version message: /Satoshi:0.13.1/: version 70014, blocks=451514, us=x.x.x.x:13738, peer=5, peeraddr=68.111.10.219:8333
    2017-02-04 10:39:29 receive version message: /Satoshi:0.13.1/: version 70014, blocks=451514, us=x.x.x.x:31168, peer=6, peeraddr=89.212.91.219:8333
    2017-02-04 10:39:29 connect() to [2001:0:d5c:5a30:1444:f5b:9f0e:c1ac]:8333 failed: Network is unreachable (101)
    2017-02-04 10:39:30 receive version message: /Satoshi:0.13.2/: version 70015, blocks=451514, us=x.x.x.x:4181, peer=7, peeraddr=194.135.88.223:8333
    2017-02-04 10:39:31 connect() to [2001:0:34a4:e5e4:18c5:2706:3f57:fecd]:8333 failed: Network is unreachable (101)
  2. TheBlueMatt commented at 3:11 PM on February 4, 2017: member

    Hmm, it may be that the race addressed by #9671 was more possible than I thought. Its hard to debug further from your debug.log, but you might try running with -debug or -debug=net based on current master to see if its still there (and have more info next time).

  3. TheBlueMatt commented at 12:45 AM on February 15, 2017: member

    Can you try to reproduce this on current master? Shouldn't be any (known) crashes or real races left, I believe.

  4. fanquake added the label Bug on Aug 13, 2017
  5. fanquake commented at 2:25 AM on August 13, 2017: member

    @dooglus Can you follow up here? If you can no-longer reproduce can you close this issue.

  6. dooglus commented at 6:00 AM on August 13, 2017: contributor

    The crash was quite rare. I think I only ever saw it twice. I could never reproduce it, it just happened very occasionally.

    I've not seen it since February.

    I guess I'll close it.

  7. dooglus closed this on Aug 13, 2017

  8. MarcoFalke locked this on Sep 8, 2021

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-04-13 18:15 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me