Steps to reproduce:

* Create a datadir that is pruned
* Start with `-prune=550 -reindex-chainstate`
* Hangs with idle CPU

(`-reindex` works)
return InitError(strLoadError);
            }
        }
    }
     As LoadBlockIndex can take several minutes, it's possible the user
     requested to kill the GUI during the last operation. If so, exit.
     As the program has not fully started yet, Shutdown() is possibly overkill.
    if (ShutdownRequested()) {
        LogPrintf("Shutdown requested. Exiting.\n");
        return false;
    }
     ********************************************************* Step 8: start indexers
    if (args.GetBoolArg("-txindex", DEFAULT_TXINDEX)) {
        if (const auto error{CheckLegacyTxindex(*Assert(chainman.m_blockman.m_block_tree_db))}) {
            return InitError(*error);
        }
        g_txindex = std::make_unique<TxIndex>(cache_sizes.tx_index, false, fReindex);
        if (!g_txindex->Start(chainman.ActiveChainstate())) {
            return false;
        }
    }
    for (const auto& filter_type : g_enabled_filter_types) {
        InitBlockFilterIndex(filter_type, cache_sizes.filter_index, false, fReindex);
        if (!GetBlockFilterIndex(filter_type)->Start(chainman.ActiveChainstate())) {
            return false;
        }
    }
    if (args.GetBoolArg("-coinstatsindex", DEFAULT_COINSTATSINDEX)) {
        g_coin_stats_index = std::make_unique<CoinStatsIndex>(* caclse, fReindex);
        if (!g_coin_stats_index->Start(chainman.ActiveChainstate())) {