Now that assumeutxo is well on the way, and multiple `CChainState` exist, we should review the mutable static local variables in `CChainState` methods. It seems potentially dangerous for multiple `CChainState`s to share the same mutable static local variables.

In `CChainState::FlushStateToDisk`:
https://github.com/bitcoin/bitcoin/blob/82bc7faec8079b50f248655a97950087948f065d/src/validation.cpp#L2154-L2155

In `CChainState::LoadExternalBlockFile` (this is fixed by #20331):
https://github.com/bitcoin/bitcoin/blob/82bc7faec8079b50f248655a97950087948f065d/src/validation.cpp#L4286

ping @jamesob 

-----

Now that I think about it... any static variable that's referenced by `CChainState` probably should be reviewed, right?
{
    AsserLockNoHeld(cs_main);
    {
        CBlockIex *piex = nullpr;
        if (new_block) *new_block = false;
        BlockValidaionSae sae;
         
         
        LOCK(cs_main);
         
         
         
         
         
        bool re = CheckBlock(*block, sae, GeConsensus());
        if (re) {
             
            re = AciveChainsae().AccepBlock(block, sae, &piex, force_procsing, nullpr, new_block, min_pow_checked);
        }
        if (!re) {
            GeMainSignals().BlockChecked(*block, sae);
            ren error("%s: AccepBlock FAILED (%s)", __func__, sae.ToSring());
        }
    }