Skip to content

Commit 25c57d6

Browse files
committed
[doc] Add a note about where lock annotations should go.
1 parent ad5f01b commit 25c57d6

File tree

3 files changed

+18
-3
lines changed

3 files changed

+18
-3
lines changed

doc/developer-notes.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -785,6 +785,11 @@ Threads and synchronization
785785
get compile-time warnings about potential race conditions in code. Combine annotations in function declarations with
786786
run-time asserts in function definitions:
787787
788+
- In functions that are declared separately from where they are defined, the
789+
thread safety annotations should be added exclusively to the function
790+
declaration. Annotations on the definition could lead to false positives
791+
(lack of compile failure) at call sites between the two.
792+
788793
```C++
789794
// txmempool.h
790795
class CTxMemPool

src/test/txvalidationcache_tests.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@
1313

1414
#include <boost/test/unit_test.hpp>
1515

16-
bool CheckInputScripts(const CTransaction& tx, TxValidationState& state, const CCoinsViewCache& inputs, unsigned int flags, bool cacheSigStore, bool cacheFullScriptStore, PrecomputedTransactionData& txdata, std::vector<CScriptCheck>* pvChecks) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
16+
bool CheckInputScripts(const CTransaction& tx, TxValidationState& state,
17+
const CCoinsViewCache& inputs, unsigned int flags, bool cacheSigStore,
18+
bool cacheFullScriptStore, PrecomputedTransactionData& txdata,
19+
std::vector<CScriptCheck>* pvChecks) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
1720

1821
BOOST_AUTO_TEST_SUITE(txvalidationcache_tests)
1922

src/validation.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,11 @@ CBlockIndex* BlockManager::FindForkInGlobalIndex(const CChain& chain, const CBlo
198198

199199
std::unique_ptr<CBlockTreeDB> pblocktree;
200200

201-
bool CheckInputScripts(const CTransaction& tx, TxValidationState& state, const CCoinsViewCache& inputs, unsigned int flags, bool cacheSigStore, bool cacheFullScriptStore, PrecomputedTransactionData& txdata, std::vector<CScriptCheck>* pvChecks = nullptr) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
201+
bool CheckInputScripts(const CTransaction& tx, TxValidationState& state,
202+
const CCoinsViewCache& inputs, unsigned int flags, bool cacheSigStore,
203+
bool cacheFullScriptStore, PrecomputedTransactionData& txdata,
204+
std::vector<CScriptCheck>* pvChecks = nullptr)
205+
EXCLUSIVE_LOCKS_REQUIRED(cs_main);
202206
static FILE* OpenUndoFile(const FlatFilePos &pos, bool fReadOnly = false);
203207
static FlatFileSeq BlockFileSeq();
204208
static FlatFileSeq UndoFileSeq();
@@ -1450,7 +1454,10 @@ void InitScriptExecutionCache() {
14501454
*
14511455
* Non-static (and re-declared) in src/test/txvalidationcache_tests.cpp
14521456
*/
1453-
bool CheckInputScripts(const CTransaction& tx, TxValidationState& state, const CCoinsViewCache& inputs, unsigned int flags, bool cacheSigStore, bool cacheFullScriptStore, PrecomputedTransactionData& txdata, std::vector<CScriptCheck>* pvChecks)
1457+
bool CheckInputScripts(const CTransaction& tx, TxValidationState& state,
1458+
const CCoinsViewCache& inputs, unsigned int flags, bool cacheSigStore,
1459+
bool cacheFullScriptStore, PrecomputedTransactionData& txdata,
1460+
std::vector<CScriptCheck>* pvChecks)
14541461
{
14551462
if (tx.IsCoinBase()) return true;
14561463

0 commit comments

Comments
 (0)