[#0](/bitcoin-bitcoin/0/) __ubsan::UBsanOnDeadlySignal(int, void*, void*) ()
at /var/tmp/portage/sys-libs/compiler-rt-sanitizers-13.0.1/work/compiler-rt/lib/ubsan/ubsan_signals_standalone.cpp:53
[#1](/bitcoin-bitcoin/1/) <signal handler called>
[#2](/bitcoin-bitcoin/2/) std::__detail::_List_node_base::_M_unhook (this=0x13dca9a70)
at /var/tmp/portage/sys-devel/gcc-11.2.0/work/gcc-11.2.0/libstdc++-v3/src/c++98/list.cc:141
[#3](/bitcoin-bitcoin/3/) 0x000000011f25c9c0 in std::__cxx11::list<std::function<void (std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >)>, std::allocator<std::function<void (std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >)> > >::_M_erase(std::_List_iterator<std::function<void (std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >)> >) (this=0x7ffef8013e98, __position=...)
at /usr/lib/gcc/powerpc64le-unknown-linux-gnu/11.2.0/include/g++-v11/bits/stl_list.h:1922
[#4](/bitcoin-bitcoin/4/) 0x000000011f241cc4 in std::__cxx11::list<std::function<void (std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >)>, std::allocator<std::function<void (std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >)> > >::erase(std::_List_const_iterator<std::function<void (std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >)> >) (this=0x7ffef8013e98, __position=...)
at /usr/lib/gcc/powerpc64le-unknown-linux-gnu/11.2.0/include/g++-v11/bits/list.tcc:158
[#5](/bitcoin-bitcoin/5/) wallet::HandleLoadWallet(wallet::WalletContext&, std::function<void (std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >)>)::$_1::operator()() const (this=<optimized out>) at wallet/wallet.cpp:165
[#6](/bitcoin-bitcoin/6/) std::__invoke_impl<void, wallet::HandleLoadWallet(wallet::WalletContext&, std::function<void (std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >)>)::$_1&>(std::__invoke_other, wallet::HandleLoadWallet(wallet::WalletContext&, std::function<void (std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >)>)::$_1&) (__f=...) at /usr/lib/gcc/powerpc64le-unknown-linux-gnu/11.2.0/include/g++-v11/bits/invoke.h:61
[#7](/bitcoin-bitcoin/7/) std::__invoke_r<void, wallet::HandleLoadWallet(wallet::WalletContext&, std::function<void (std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >)>)::$_1&>(wallet::HandleLoadWallet(wallet::WalletContext&, std::function<void (std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >)>)::$_1&) (__fn=...) at /usr/lib/gcc/powerpc64le-unknown-linux-gnu/11.2.0/include/g++-v11/bits/invoke.h:111
[#8](/bitcoin-bitcoin/8/) std::_Function_handler<void (), wallet::HandleLoadWallet(wallet::WalletContext&, std::function<void (std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >)>)::$_1>::_M_invoke(std::_Any_data const&) (__functor=...)
at /usr/lib/gcc/powerpc64le-unknown-linux-gnu/11.2.0/include/g++-v11/bits/std_function.h:291
[#9](/bitcoin-bitcoin/9/) 0x000000011e8fb1f8 in std::function<void ()>::operator()() const (this=<optimized out>)
at /usr/lib/gcc/powerpc64le-unknown-linux-gnu/11.2.0/include/g++-v11/bits/std_function.h:560
[#10](/bitcoin-bitcoin/10/) 0x000000011f08d6c0 in interfaces::(anonymous namespace)::CleanupHandler::~CleanupHandler (this=0x7ffef801edd0) at interfaces/handler.cpp:28
[#11](/bitcoin-bitcoin/11/) 0x000000011f08d7fc in interfaces::(anonymous namespace)::CleanupHandler::~CleanupHandler (this=0x7ffef801edd0) at interfaces/handler.cpp:28
[#12](/bitcoin-bitcoin/12/) 0x000000011e7fcd34 in std::default_delete<interfaces::Handler>::operator() (__ptr=0x7ffef801edd0, this=<optimized out>) at /usr/lib/gcc/powerpc64le-unknown-linux-gnu/11.2.0/include/g++-v11/bits/unique_ptr.h:85
[#13](/bitcoin-bitcoin/13/) std::unique_ptr<interfaces::Handler, std::default_delete<interfaces::Handler> >::~unique_ptr (this=<optimized out>) at /usr/lib/gcc/powerpc64le-unknown-linux-gnu/11.2.0/include/g++-v11/bits/unique_ptr.h:361
[#14](/bitcoin-bitcoin/14/) 0x000000011e90e038 in SplashScreen::~SplashScreen (this=0x13dc49f00) at qt/splashscreen.cpp:138
[#15](/bitcoin-bitcoin/15/) 0x000000011e90e6ec in SplashScreen::~SplashScreen (this=0x13dc49f00) at qt/splashscreen.cpp:136
[#16](/bitcoin-bitcoin/16/) 0x00007fffa4ff35f4 in qDeleteInEventHandler (o=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.15.3/work/qtbase-everywhere-src-5.15.3/src/corelib/kernel/qobject.cpp:4815
[#17](/bitcoin-bitcoin/17/) 0x00007fffa4ff8550 in QObject::event (this=<optimized out>, e=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.15.3/work/qtbase-everywhere-src-5.15.3/src/corelib/kernel/qobject.cpp:1301
[#18](/bitcoin-bitcoin/18/) 0x00007fffa45bd41c in QWidget::event (this=0x13dc49f00, event=0x7fff98023f40) at /var/tmp/portage/dev-qt/qtwidgets-5.15.3/work/qtbase-everywhere-src-5.15.3/src/widgets/kernel/qwidget.cpp:9094
[#19](/bitcoin-bitcoin/19/) 0x00007fffa455da70 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x13dc49f00, e=0x7fff98023f40) at /var/tmp/portage/dev-qt/qtwidgets-5.15.3/work/qtbase-everywhere-src-5.15.3/src/widgets/kernel/qapplication.cpp:3637
[#20](/bitcoin-bitcoin/20/) 0x00007fffa4569374 in QApplication::notify (this=0x7ffff9f207a0, receiver=0x13dc49f00, e=0x7fff98023f40) at /var/tmp/portage/dev-qt/qtwidgets-5.15.3/work/qtbase-everywhere-src-5.15.3/src/widgets/kernel/qapplication.cpp:3587
[#21](/bitcoin-bitcoin/21/) 0x00007fffa4faec80 in QCoreApplication::notifyInternal2 (receiver=0x13dc49f00, event=0x7fff98023f40) at /var/tmp/portage/dev-qt/qtcore-5.15.3/work/qtbase-everywhere-src-5.15.3/src/corelib/kernel/qcoreapplication.cpp:1064
[#22](/bitcoin-bitcoin/22/) 0x00007fffa4faf00c in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.15.3/work/qtbase-everywhere-src-5.15.3/src/corelib/kernel/qcoreapplication.cpp:1462
[#23](/bitcoin-bitcoin/23/) 0x00007fffa4fb3ee4 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x13dad8900) at /var/tmp/portage/dev-qt/qtcore-5.15.3/work/qtbase-everywhere-src-5.15.3/src/corelib/kernel/qcoreapplication.cpp:1821
[#24](/bitcoin-bitcoin/24/) 0x00007fffa4fb4244 in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.15.3/work/qtbase-everywhere-src-5.15.3/src/corelib/kernel/qcoreapplication.cpp:1680
[#25](/bitcoin-bitcoin/25/) 0x00007fffa5037290 in postEventSourceDispatch (s=0x13dbb9ce0) at /var/tmp/portage/dev-qt/qtcore-5.15.3/work/qtbase-everywhere-src-5.15.3/src/corelib/kernel/qeventdispatcher_glib.cpp:277
[#26](/bitcoin-bitcoin/26/) 0x00007fffa22e9794 in g_main_dispatch (context=context@entry=0x7fff98019230) at ../glib-2.70.4/glib/gmain.c:3381
[#27](/bitcoin-bitcoin/27/) 0x00007fffa22ee930 in g_main_context_dispatch (context=0x7fff98019230) at ../glib-2.70.4/glib/gmain.c:4099
[#28](/bitcoin-bitcoin/28/) 0x00007fffa22eeb58 in g_main_context_iterate (context=context@entry=0x7fff98019230, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib-2.70.4/glib/gmain.c:4175
[#29](/bitcoin-bitcoin/29/) 0x00007fffa22eec60 in g_main_context_iteration (context=0x7fff98019230, may_block=<optimized out>) at ../glib-2.70.4/glib/gmain.c:4240
[#30](/bitcoin-bitcoin/30/) 0x00007fffa5036e7c in QEventDispatcherGlib::processEvents (this=0x13dbbcc70, flags=...) at /var/tmp/portage/dev-qt/qtcore-5.15.3/work/qtbase-everywhere-src-5.15.3/src/corelib/kernel/qeventdispatcher_glib.cpp:423
[#31](/bitcoin-bitcoin/31/) 0x00007fff9ef44e64 in QXcbGlibEventDispatcher::processEvents (this=<optimized out>, flags=...) at /var/tmp/portage/dev-qt/qtgui-5.15.3/work/qtbase-everywhere-src-5.15.3/src/plugins/platforms/xcb/qxcbeventdispatcher.cpp:143
[#32](/bitcoin-bitcoin/32/) 0x00007fffa4fabcc8 in QEventLoop::processEvents (this=<optimized out>, flags=...) at /var/tmp/portage/dev-qt/qtcore-5.15.3/work/qtbase-everywhere-src-5.15.3/src/corelib/kernel/qeventloop.cpp:139
[#33](/bitcoin-bitcoin/33/) 0x00007fffa4fac488 in QEventLoop::exec (this=0x7ffff9f204c8, flags=...) at /var/tmp/portage/dev-qt/qtcore-5.15.3/work/qtbase-everywhere-src-5.15.3/include/QtCore/../../src/corelib/global/qflags.h:69
[#34](/bitcoin-bitcoin/34/) 0x00007fffa4fb9588 in QCoreApplication::exec () at /var/tmp/portage/dev-qt/qtcore-5.15.3/work/qtbase-everywhere-src-5.15.3/include/QtCore/../../src/corelib/global/qflags.h:121
[#35](/bitcoin-bitcoin/35/) 0x00007fffa3d5704c in QGuiApplication::exec () at /var/tmp/portage/dev-qt/qtgui-5.15.3/work/qtbase-everywhere-src-5.15.3/src/gui/kernel/qguiapplication.cpp:1867
[#36](/bitcoin-bitcoin/36/) 0x00007fffa455d98c in QApplication::exec () at /var/tmp/portage/dev-qt/qtwidgets-5.15.3/work/qtbase-everywhere-src-5.15.3/src/widgets/kernel/qapplication.cpp:2829
[#37](/bitcoin-bitcoin/37/) 0x000000011e7b4354 in GuiMain (argc=<optimized out>, argv=<optimized out>) at qt/bitcoin.cpp:661
[#38](/bitcoin-bitcoin/38/) 0x000000011e7ac070 in main (argc=<optimized out>, argv=<optimized out>) at qt/main.cpp:21
Starting with an unsupported wallet configured leads to a segfault (master only?) #25146
issue luke-jr opened this issue on May 16, 2022-
luke-jr commented at 5:48 PM on May 16, 2022: member
- luke-jr added the label Bug on May 16, 2022
-
achow101 commented at 6:56 PM on May 16, 2022: member
Unsupported wallet in what way? As in SQLite wallet when only BDB is configured or vice versa? Or something else?
-
luke-jr commented at 10:34 PM on May 16, 2022: member
Right, I had a build w/o sqlite enabled, and a sqlite wallet in the loaded wallet list
- MarcoFalke added the label Wallet on May 17, 2022
- bitcoin deleted a comment on May 17, 2022
- bitcoin deleted a comment on May 17, 2022
- bitcoin deleted a comment on May 17, 2022
- bitcoin deleted a comment on May 17, 2022
-
luke-jr commented at 7:33 PM on May 17, 2022: member
No, the code involved is too convoluted to follow
-
luke-jr commented at 9:33 PM on May 17, 2022: member
Bisected to f3a17bbe5f7d23b6ecc20e363920492b50859dad. Reverting fixes the crash.
-
achow101 commented at 9:59 PM on May 17, 2022: member
@luke-jr can you try this diff:
diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 8cac28400f..21a499ea49 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -361,7 +361,7 @@ void BitcoinApplication::requestShutdown() pollShutdownTimer->stop(); #ifdef ENABLE_WALLET - // Delete wallet controller here manually, instead of relying on Qt object + // Delete splash screen and wallet controller here manually, instead of relying on Qt object // tracking (https://doc.qt.io/qt-5/objecttrees.html). This makes sure // walletmodel m_handle_* notification handlers are deleted before wallets // are unloaded, which can simplify wallet implementations. It also avoids @@ -369,6 +369,8 @@ void BitcoinApplication::requestShutdown() // destroyed, making GUI code less fragile as well. delete m_wallet_controller; m_wallet_controller = nullptr; + delete m_splash; + m_splash = nullptr; #endif // ENABLE_WALLET delete clientModel; -
luke-jr commented at 11:22 PM on May 17, 2022: member
That seems to fix it, yes
-
hebasto commented at 5:59 PM on May 22, 2022: member
Implemented in bitcoin-core/gui#605.
-
fanquake commented at 2:19 PM on August 8, 2022: member
Given there is both an open issue https://github.com/bitcoin-core/gui/issues/604, and PR implementing a fix https://github.com/bitcoin-core/gui/pull/605 in the GUI repo, I'm going to close the issue here.
- fanquake closed this on Aug 8, 2022
- hebasto referenced this in commit 497f26552b on Dec 20, 2022
- bitcoin locked this on Aug 8, 2023
Linked (view graph)
#1 JSON-RPC support for mobile devices ("ultra-lightweight" clients)#2 Long-term, safe, store-of-value#3 Encrypt wallet#4 Export/Import wallet in a human readable, future-proof format#5 Make the version number the protocol version and not the client version#6 Treat wallet as a generic keystore#7 Block-header-only, faster startup client#8 RPC command to sign text with wallet private key#9 Fix for GUI on Macs and latest wxWidgets#10 Add address to listtransactions output#11 Nolisten patch#12 Monitor transactions and/or blocks#13 Messages with or about transactions#14 bitcoin: URI and/or bitcoin-request MIME type for click-to-pay#15 Option to specify external IP address#16 Mac UI issues#17 listaccounts method#18 Error when trying to send very precise amount#19 bitcoin(d) --help should output version number#20 JSON-RPC callback#21 Add time to category:move transactions#22 Update the list of hard-coded node IP addresses#23 CORS support#24 Gettransaction#25 sum(getaccounts) != getbalance#26 Confirmations not appearing for sent coins after recovering wallet from archive#27 listaccounts with minconf param was broken!#28 corrupted double-linked list?#29 setaccount / getaccountaddress not working properly#30 Fix bug in setaccount/getaccountaddress#31 -keypool option not advertised when using --help switch#32 Help output#33 Fix statusbar color#34 -rpcsslcertificatechainfile command line option spelled incorrectly in --help text#35 Issue34simple fix for issue 34#36 Show defaults in --help text#37 add -printtoconsole flat#38 the -4way command line argument is broken