diff --git a/src/init.cpp b/src/init.cpp --- a/src/init.cpp +++ b/src/init.cpp @@ -2455,6 +2455,9 @@ // From here on out fReindex and fReset mean something // different! if (!LoadBlockIndex(params)) { + if (ShutdownRequested()) { + break; + } strLoadError = _("Error loading block database").translated; break; } diff --git a/src/txdb.cpp b/src/txdb.cpp --- a/src/txdb.cpp +++ b/src/txdb.cpp @@ -274,6 +274,9 @@ // Load mapBlockIndex while (pcursor->Valid()) { boost::this_thread::interruption_point(); + if (ShutdownRequested()) { + return false; + } std::pair key; if (!pcursor->GetKey(key) || key.first != DB_BLOCK_INDEX) { break; diff --git a/src/validation.cpp b/src/validation.cpp --- a/src/validation.cpp +++ b/src/validation.cpp @@ -4376,6 +4376,9 @@ sort(vSortedByHeight.begin(), vSortedByHeight.end()); for (const std::pair &item : vSortedByHeight) { + if (ShutdownRequested()) { + return false; + } CBlockIndex *pindex = item.second; pindex->nChainWork = (pindex->pprev ? pindex->pprev->nChainWork : 0) + GetBlockProof(*pindex);