- Add Clang thread safety annotations for variables guarded by
CAddrMan.cs - Add missing
CAddrMan.cslocks
addrman: Add Clang thread safety annotations for variables guarded by CAddrMan.cs #13115
pull practicalswift wants to merge 1 commits into bitcoin:master from practicalswift:guarded-by-cs_addrMan changing 2 files +31 −26-
practicalswift commented at 7:06 PM on April 29, 2018: contributor
- laanwj added the label Refactoring on Apr 30, 2018
- practicalswift renamed this:
Add Clang thread safety annotations for variables guarded by cs_addrMan
addrman: Add Clang thread safety annotations for variables guarded by cs_addrMan
on Apr 30, 2018 - DrahtBot closed this on Jul 22, 2018
-
DrahtBot commented at 11:49 PM on July 22, 2018: member
<!--5d09a71f8925f3f132321140b44b946d-->The last travis run for this pull request was 84 days ago and is thus outdated. To trigger a fresh travis build, this pull request should be closed and re-opened.
- DrahtBot reopened this on Jul 22, 2018
-
practicalswift commented at 12:11 PM on August 13, 2018: contributor
@MarcoFalke Would you mind reviewing this one? Should hopefully be trivial :-)
-
MarcoFalke commented at 1:21 PM on August 13, 2018: member
utACK 4f04bda90e113cd596b019c05d6a5cb3ac4be540
-
practicalswift commented at 12:36 PM on October 8, 2018: contributor
-
promag commented at 1:45 PM on October 8, 2018: member
Should squash or invert commit order otherwise 1st commit is broken? Also why rename
CAddrMan::cstoCAddrMan::cs_addrMan? - practicalswift force-pushed on Oct 8, 2018
-
practicalswift commented at 1:51 PM on October 8, 2018: contributor
@promag Fixed. Please re-review :-)
- practicalswift force-pushed on Oct 8, 2018
- practicalswift force-pushed on Oct 8, 2018
-
promag commented at 2:51 PM on October 8, 2018: member
Unrelated feature_notifications.py failure in appveyor:
test 2018-10-08T14:19:56.724000Z TestFramework (ERROR): Unexpected exception caught during testing Traceback (most recent call last): File "C:\projects\bitcoin\test\functional\test_framework\test_framework.py", line 172, in main self.run_test() File "C:\projects\bitcoin/test/functional/feature_notifications.py", line 55, in run_test os.remove(os.path.join(self.walletnotify_dir, tx_file)) PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\appveyor\\AppData\\Local\\Temp\\1\\test_runner_20181008_141018\\feature_notifications_38\\walletnotify\\0b3efb8afc557368538b69c082c9f343b4d9c3f52145405438b98a1384fe13ad' -
promag commented at 2:53 PM on October 8, 2018: member
utACK 116e77b.nits:
- commit messages could mention
CAddrMan. - could squash.
- commit messages could mention
-
Add missing locks and locking annotations for CAddrMan 3e9f6c821b
- practicalswift force-pushed on Oct 8, 2018
-
practicalswift commented at 3:20 PM on October 8, 2018: contributor
@promag Thanks for the quick review. Feedback addressed. Please re-review :-)
-
promag commented at 3:26 PM on October 8, 2018: member
@practicalswift could drop these
EXCLUSIVE_LOCKS_REQUIRED?GUARDED_BYshould be enough considering the public interface lockscs, and therefore there aren't atomicity concerns?So:
diff --git a/src/addrman.h b/src/addrman.h index a36f7ea10..0d9081252 100644 --- a/src/addrman.h +++ b/src/addrman.h @@ -192,31 +192,31 @@ private: mutable CCriticalSection cs; //! last used nId - int nIdCount; + int nIdCount GUARDED_BY(cs); //! table with information about all nIds - std::map<int, CAddrInfo> mapInfo; + std::map<int, CAddrInfo> mapInfo GUARDED_BY(cs); //! find an nId based on its network address - std::map<CNetAddr, int> mapAddr; + std::map<CNetAddr, int> mapAddr GUARDED_BY(cs); //! randomly-ordered vector of all nIds - std::vector<int> vRandom; + std::vector<int> vRandom GUARDED_BY(cs); // number of "tried" entries - int nTried; + int nTried GUARDED_BY(cs); //! list of "tried" buckets - int vvTried[ADDRMAN_TRIED_BUCKET_COUNT][ADDRMAN_BUCKET_SIZE]; + int vvTried[ADDRMAN_TRIED_BUCKET_COUNT][ADDRMAN_BUCKET_SIZE] GUARDED_BY(cs); //! number of (unique) "new" entries - int nNew; + int nNew GUARDED_BY(cs); //! list of "new" buckets - int vvNew[ADDRMAN_NEW_BUCKET_COUNT][ADDRMAN_BUCKET_SIZE]; + int vvNew[ADDRMAN_NEW_BUCKET_COUNT][ADDRMAN_BUCKET_SIZE] GUARDED_BY(cs); //! last time Good was called (memory only) - int64_t nLastGood; + int64_t nLastGood GUARDED_BY(cs); //! Holds addrs inserted into tried table that collide with existing entries. Test-before-evict discipline used to resolve these collisions. std::set<int> m_tried_collisions; -
practicalswift commented at 3:39 PM on October 8, 2018: contributor
@promag I'm not sure I follow here. Is you suggestion to drop all the
EXCLUSIVE_LOCKS_REQUIRED:s in this PR? Then it won't compile due to warnings such as:addrman.cpp:70:44: error: reading variable 'mapAddr' requires holding mutex 'cs' [-Werror,-Wthread-safety-analysis] addrman.cpp:71:15: error: reading variable 'mapAddr' requires holding mutex 'cs' [-Werror,-Wthread-safety-analysis] addrman.cpp:75:46: error: reading variable 'mapInfo' requires holding mutex 'cs' [-Werror,-Wthread-safety-analysis] […]What am I missing? :-)
-
promag commented at 5:06 PM on October 8, 2018: member
@practicalswift right, sorry about last comment.
ACK 3e9f6c8.
Please update PR title and description.
- practicalswift renamed this:
addrman: Add Clang thread safety annotations for variables guarded by cs_addrMan
addrman: Add Clang thread safety annotations for variables guarded by CAddrMan.cs
on Oct 8, 2018 -
practicalswift commented at 9:26 PM on October 8, 2018: contributor
@MarcoFalke Would you mind re-reviewing your previous utACK? :-)
-
MarcoFalke commented at 3:54 AM on October 9, 2018: member
utACK 3e9f6c821b
- MarcoFalke merged this on Oct 9, 2018
- MarcoFalke closed this on Oct 9, 2018
- MarcoFalke referenced this in commit 1d1417430c on Oct 9, 2018
- LarryRuane referenced this in commit 18af176311 on Apr 5, 2021
- random-zebra referenced this in commit 7a538fde99 on Apr 8, 2021
- practicalswift deleted the branch on Apr 10, 2021
- LarryRuane referenced this in commit e96d8fd46c on Apr 29, 2021
- LarryRuane referenced this in commit 7df9aef70c on Jun 1, 2021
- PastaPastaPasta referenced this in commit b968ebf34c on Jul 17, 2021
- gades referenced this in commit dbbd0a2c9a on May 8, 2022
- DrahtBot locked this on Aug 18, 2022