mirror of
https://github.com/kvazar-network/kevacoin.git
synced 2025-01-26 23:04:39 +00:00
Fix fast-shutdown hang on ThreadImport+GenesisWait
If the user somehow manages to get into ShutdownRequested before ThreadImport gets to ActivateBestChain() we may hang waiting on condvar_GenesisWait forever. A simple wait_for and ShutdownRequested resolves this case. Github-Pull: #12367 Rebased-From: 1c9394ad477d0c1ca0ab1caa6024a7e70c125d15 Tree-SHA512: fb0751ef32d2005520738bf3b0a0f41ae3f9314d700d2a85eb50f023e87e109ce806cdcdf4a08f49a4d9c1001e27df7f461d3fd52b1f5a57885260ce9375260f
This commit is contained in:
parent
da84760701
commit
09fc859ef0
11
src/init.cpp
11
src/init.cpp
@ -1645,12 +1645,19 @@ bool AppInitMain()
|
||||
// Wait for genesis block to be processed
|
||||
{
|
||||
WaitableLock lock(cs_GenesisWait);
|
||||
while (!fHaveGenesis) {
|
||||
condvar_GenesisWait.wait(lock);
|
||||
// We previously could hang here if StartShutdown() is called prior to
|
||||
// ThreadImport getting started, so instead we just wait on a timer to
|
||||
// check ShutdownRequested() regularly.
|
||||
while (!fHaveGenesis && !ShutdownRequested()) {
|
||||
condvar_GenesisWait.wait_for(lock, std::chrono::milliseconds(500));
|
||||
}
|
||||
uiInterface.NotifyBlockTip.disconnect(BlockNotifyGenesisWait);
|
||||
}
|
||||
|
||||
if (ShutdownRequested()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// ********************************************************* Step 11: start node
|
||||
|
||||
int chain_active_height;
|
||||
|
Loading…
x
Reference in New Issue
Block a user