Wallets and nodes hang around the superblock payment
Summary
Wallet hangs around the superblock and stops responding on 12.05.01
Steps to reproduce
- Keep your wallet closed some time before the superblock (one week in my case, not sure if it's relevant
- Open crown-qt wallet a couple hours before the superblock payment
- Keep it running
Expected behaviour
Wallet doesn't hang or crash.
Problematic behaviour
Wallet hangs for 6 hours and then crashes.
Crown-core environment info
Ubuntu 16.04
.
Crown-core application info
v0.12.5.1
, https://gitlab.crown.tech/crown/crown-core/pipelines/521
Relevant logs and/or screenshots
The main thread stack trace:
Thread 1 (Thread 0x7fed1a515740 (LWP 8726)):
#0 0x00007fed192b9e40 in __GI___pthread_mutex_lock (mutex=0x22d0ef0 <budget+48>) at ../nptl/pthread_mutex_lock.c:115
#1 0x0000000000710dc9 in CBudgetManager::GetAllProposals() ()
#2 0x000000000050c5fb in MasternodeList::updateVoteList(bool) ()
#3 0x0000000000530d87 in MasternodeList::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
#4 0x0000000001301443 in QMetaObject::activate(QObject*, int, int, void**) ()
#5 0x000000000130eb03 in QTimer::timerEvent(QTimerEvent*) ()
#6 0x0000000001302891 in QObject::event(QEvent*) ()
#7 0x00000000009f812c in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
#8 0x00000000009fcf18 in QApplication::notify(QObject*, QEvent*) ()
#9 0x00000000012d0fa5 in QCoreApplication::notifyInternal(QObject*, QEvent*) ()
#10 0x0000000001329dcd in QTimerInfoList::activateTimers() ()
#11 0x00000000013283b5 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
#12 0x000000000091680d in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
#13 0x00000000012cee69 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
#14 0x00000000012d6f69 in QCoreApplication::exec() ()
#15 0x00000000004270db in main ()
Hang, crash dumps and logs are here: https://nextcloud.crown.tech/nextcloud/f/15545
Possible fixes
It looks like a deadlock which might be connected to the BudgetDraftBroadcast
Tasks left
- Superblock regresstion testing
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information