diff --git a/src/addrman.h b/src/addrman.h index d4f67c2f5b1..6347a24d559 100644 --- a/src/addrman.h +++ b/src/addrman.h @@ -631,12 +631,12 @@ protected: uint256 nKey; //! Source of random numbers for randomization in inner loops - mutable FastRandomContext insecure_rand; + mutable FastRandomContext insecure_rand GUARDED_BY(cs); -private: //! A mutex to protect the inner data structures. mutable Mutex cs; +private: //! Serialization versions. enum Format : uint8_t { V0_HISTORICAL = 0, //!< historic format, before commit e6b343d88 diff --git a/src/test/addrman_tests.cpp b/src/test/addrman_tests.cpp index 5e5c5eba69c..79c7102c4fc 100644 --- a/src/test/addrman_tests.cpp +++ b/src/test/addrman_tests.cpp @@ -34,6 +34,7 @@ public: //! Ensure that bucket placement is always the same for testing purposes. void MakeDeterministic() { + LOCK(cs); nKey.SetNull(); insecure_rand = FastRandomContext(true); } @@ -87,11 +88,11 @@ public: { CAddrMan::Clear(); if (deterministic) { + LOCK(cs); nKey.SetNull(); insecure_rand = FastRandomContext(true); } } - }; static CNetAddr ResolveIP(const std::string& ip) diff --git a/src/test/fuzz/addrman.cpp b/src/test/fuzz/addrman.cpp index ee9485eba53..fb003ea3a8c 100644 --- a/src/test/fuzz/addrman.cpp +++ b/src/test/fuzz/addrman.cpp @@ -27,7 +27,7 @@ class CAddrManDeterministic : public CAddrMan public: void MakeDeterministic(const uint256& random_seed) { - insecure_rand = FastRandomContext{random_seed}; + WITH_LOCK(cs, insecure_rand = FastRandomContext{random_seed}); Clear(); } }; diff --git a/src/test/net_tests.cpp b/src/test/net_tests.cpp index 46f88c12825..acbbf357d2d 100644 --- a/src/test/net_tests.cpp +++ b/src/test/net_tests.cpp @@ -37,6 +37,7 @@ public: //! Ensure that bucket placement is always the same for testing purposes. void MakeDeterministic() { + LOCK(cs); nKey.SetNull(); insecure_rand = FastRandomContext(true); }