diff --git a/src/validation.cpp b/src/validation.cpp index 0e9b8da48aa..b1874a2adae 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -5157,7 +5157,13 @@ void ChainstateManager::LoadExternalBlockFile( } // Activate the genesis block so normal node progress can continue - if (hash == params.GetConsensus().hashGenesisBlock) { + // During first -reindex, this will only connect Genesis since + // ActivateBestChain only connects blocks which are in the block tree db, + // which only contains blocks whose parents are in it. + // But do this only if genesis isn't activated yet, to avoid connecting many blocks + // without assumevalid in the case of a continuation of a reindex that + // was interrupted by the user. + if (hash == params.GetConsensus().hashGenesisBlock && WITH_LOCK(::cs_main, return ActiveHeight()) == -1) { BlockValidationState state; if (!ActiveChainstate().ActivateBestChain(state, nullptr)) { break;