diff --git a/src/validation.cpp b/src/validation.cpp index d320a46c60..33a7bcb2f0 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -1621,6 +1621,7 @@ static bool TxOutDBEntryIsSame(const CTxOut& block_txout, const CTxOut& txdb_txo * When FAILED is returned, view is left in an indeterminate state. */ DisconnectResult CChainState::DisconnectBlock(const CBlock& block, const CBlockIndex* pindex, CCoinsViewCache& view) { + AssertLockHeld(::cs_main); bool fClean = true; CBlockUndo blockUndo; diff --git a/src/validation.h b/src/validation.h index 476b933def..2326cb8dd1 100644 --- a/src/validation.h +++ b/src/validation.h @@ -719,7 +719,8 @@ public: bool AcceptBlock(const std::shared_ptr& pblock, BlockValidationState& state, CBlockIndex** ppindex, bool fRequested, const FlatFilePos* dbp, bool* fNewBlock) EXCLUSIVE_LOCKS_REQUIRED(cs_main); // Block (dis)connection on a given view: - DisconnectResult DisconnectBlock(const CBlock& block, const CBlockIndex* pindex, CCoinsViewCache& view); + DisconnectResult DisconnectBlock(const CBlock& block, const CBlockIndex* pindex, CCoinsViewCache& view) + EXCLUSIVE_LOCKS_REQUIRED(::cs_main); bool ConnectBlock(const CBlock& block, BlockValidationState& state, CBlockIndex* pindex, CCoinsViewCache& view, std::set>* setPeginsSpent, bool fJustCheck = false) EXCLUSIVE_LOCKS_REQUIRED(cs_main);