-
Notifications
You must be signed in to change notification settings - Fork 37.8k
refactor: Replace RecursiveMutex with Mutex in Shutdown() #19180
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
ACK 1a9ef1d Shutdown is not recursive, so the same thread can never lock twice (UB) |
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
ACK 1a9ef1d verified manually that
I think it should be |
@sipa Mind reviewing this PR? |
…etbase.cpp 78c8f4f refactor: Replace RecursiveMutex with Mutex in netbase.cpp (Hennadii Stepanov) Pull request description: The functions that could lock this mutex, i.e., `{S,G}etProxy()`, `{S,G}etNameProxy()`, `HaveNameProxy()`, `IsProxy()`, do not call itself recursively, and do not call each other either directly or indirectly. Therefore, the `g_proxyinfo_mutex` could be a non-recursive mutex. Related to bitcoin#19180. ACKs for top commit: MarcoFalke: ACK 78c8f4f , reviewed with the -W git option 👮 vasild: ACK 78c8f4f verified that recursion does not happen Tree-SHA512: fc077fb371f38af5d05f1383c6bebf9926167c257892936fefd2d4fe6f679ca40124d25099e09f645d8ec266df222f96c5d0f9fd39eddcad15cbde0b427bc205
….cpp cc5c0d2 refactor: Fix formatting of timedata.cpp (Hennadii Stepanov) c2410ce refactor: Replace RecursiveMutex with Mutex in timedata.cpp (Hennadii Stepanov) Pull request description: Only `GetTimeOffset()` and `AddTimeData()` functions lock this mutex. They do not call itself recursively, and do not call each other either directly or indirectly. Therefore, the `g_timeoffset_mutex` could be a non-recursive mutex. Related to #19180. ACKs for top commit: MarcoFalke: ACK cc5c0d2 , checked the second commit with --word-diff-regex=. --ignore-all-space -U0 🦉 vasild: ACK cc5c0d2 verified that recursion is not happening Tree-SHA512: 38f6df689374d4a1a0e9aedb3ed5e885d8285c4da6b75f9bc84ae036936a159ef8276462db33b4f4dd5c71c6312fa9b45380f7a5726959665bc71dc39031be88
….cpp bacbfb6 refactor: Replace RecursiveMutex with Mutex in warnings.cpp (Hennadii Stepanov) Pull request description: The functions that could lock this mutex, i.e., `SetMiscWarning()`, `{S,G}etfLargeWorkForkFound()`, `SetfLargeWorkInvalidChainFound()`, `GetWarnings()`, do not call itself recursively, and do not call each other either directly or indirectly. Therefore, the `g_warnings_mutex` could be a non-recursive mutex. Related to #19180. ACKs for top commit: laanwj: Code review ACK bacbfb6 MarcoFalke: ACK bacbfb6 , reviewed with -W --word-diff-regex=. 🎿 Tree-SHA512: cc06d3d30e4051115d176dcfbd496c8562a70087369bccde756c1de42d7dc3f415ef20d3d69ad2599c1d0cd4228d604d7564adc17beac7b6ff92b924b8c20d54
Summary: > Step by step, going to replace all of the RecursiveMutex instances with the Mutex ones throughout the code base :) > > Not sure if it is possible in all cases though... > > This one is a low-hanging fruit. This is a backport of [[bitcoin/bitcoin#19180 | core#19180]] Test Plan: `ninja all check-all` Reviewers: #bitcoin_abc, majcosta Reviewed By: #bitcoin_abc, majcosta Differential Revision: https://reviews.bitcoinabc.org/D9279
…arnings.cpp bacbfb6 refactor: Replace RecursiveMutex with Mutex in warnings.cpp (Hennadii Stepanov) Pull request description: The functions that could lock this mutex, i.e., `SetMiscWarning()`, `{S,G}etfLargeWorkForkFound()`, `SetfLargeWorkInvalidChainFound()`, `GetWarnings()`, do not call itself recursively, and do not call each other either directly or indirectly. Therefore, the `g_warnings_mutex` could be a non-recursive mutex. Related to bitcoin#19180. ACKs for top commit: laanwj: Code review ACK bacbfb6 MarcoFalke: ACK bacbfb6 , reviewed with -W --word-diff-regex=. 🎿 Tree-SHA512: cc06d3d30e4051115d176dcfbd496c8562a70087369bccde756c1de42d7dc3f415ef20d3d69ad2599c1d0cd4228d604d7564adc17beac7b6ff92b924b8c20d54
…arnings.cpp bacbfb6 refactor: Replace RecursiveMutex with Mutex in warnings.cpp (Hennadii Stepanov) Pull request description: The functions that could lock this mutex, i.e., `SetMiscWarning()`, `{S,G}etfLargeWorkForkFound()`, `SetfLargeWorkInvalidChainFound()`, `GetWarnings()`, do not call itself recursively, and do not call each other either directly or indirectly. Therefore, the `g_warnings_mutex` could be a non-recursive mutex. Related to bitcoin#19180. ACKs for top commit: laanwj: Code review ACK bacbfb6 MarcoFalke: ACK bacbfb6 , reviewed with -W --word-diff-regex=. 🎿 Tree-SHA512: cc06d3d30e4051115d176dcfbd496c8562a70087369bccde756c1de42d7dc3f415ef20d3d69ad2599c1d0cd4228d604d7564adc17beac7b6ff92b924b8c20d54
…arnings.cpp bacbfb6 refactor: Replace RecursiveMutex with Mutex in warnings.cpp (Hennadii Stepanov) Pull request description: The functions that could lock this mutex, i.e., `SetMiscWarning()`, `{S,G}etfLargeWorkForkFound()`, `SetfLargeWorkInvalidChainFound()`, `GetWarnings()`, do not call itself recursively, and do not call each other either directly or indirectly. Therefore, the `g_warnings_mutex` could be a non-recursive mutex. Related to bitcoin#19180. ACKs for top commit: laanwj: Code review ACK bacbfb6 MarcoFalke: ACK bacbfb6 , reviewed with -W --word-diff-regex=. 🎿 Tree-SHA512: cc06d3d30e4051115d176dcfbd496c8562a70087369bccde756c1de42d7dc3f415ef20d3d69ad2599c1d0cd4228d604d7564adc17beac7b6ff92b924b8c20d54
…arnings.cpp bacbfb6 refactor: Replace RecursiveMutex with Mutex in warnings.cpp (Hennadii Stepanov) Pull request description: The functions that could lock this mutex, i.e., `SetMiscWarning()`, `{S,G}etfLargeWorkForkFound()`, `SetfLargeWorkInvalidChainFound()`, `GetWarnings()`, do not call itself recursively, and do not call each other either directly or indirectly. Therefore, the `g_warnings_mutex` could be a non-recursive mutex. Related to bitcoin#19180. ACKs for top commit: laanwj: Code review ACK bacbfb6 MarcoFalke: ACK bacbfb6 , reviewed with -W --word-diff-regex=. 🎿 Tree-SHA512: cc06d3d30e4051115d176dcfbd496c8562a70087369bccde756c1de42d7dc3f415ef20d3d69ad2599c1d0cd4228d604d7564adc17beac7b6ff92b924b8c20d54
…arnings.cpp bacbfb6 refactor: Replace RecursiveMutex with Mutex in warnings.cpp (Hennadii Stepanov) Pull request description: The functions that could lock this mutex, i.e., `SetMiscWarning()`, `{S,G}etfLargeWorkForkFound()`, `SetfLargeWorkInvalidChainFound()`, `GetWarnings()`, do not call itself recursively, and do not call each other either directly or indirectly. Therefore, the `g_warnings_mutex` could be a non-recursive mutex. Related to bitcoin#19180. ACKs for top commit: laanwj: Code review ACK bacbfb6 MarcoFalke: ACK bacbfb6 , reviewed with -W --word-diff-regex=. 🎿 Tree-SHA512: cc06d3d30e4051115d176dcfbd496c8562a70087369bccde756c1de42d7dc3f415ef20d3d69ad2599c1d0cd4228d604d7564adc17beac7b6ff92b924b8c20d54
…arnings.cpp bacbfb6 refactor: Replace RecursiveMutex with Mutex in warnings.cpp (Hennadii Stepanov) Pull request description: The functions that could lock this mutex, i.e., `SetMiscWarning()`, `{S,G}etfLargeWorkForkFound()`, `SetfLargeWorkInvalidChainFound()`, `GetWarnings()`, do not call itself recursively, and do not call each other either directly or indirectly. Therefore, the `g_warnings_mutex` could be a non-recursive mutex. Related to bitcoin#19180. ACKs for top commit: laanwj: Code review ACK bacbfb6 MarcoFalke: ACK bacbfb6 , reviewed with -W --word-diff-regex=. 🎿 Tree-SHA512: cc06d3d30e4051115d176dcfbd496c8562a70087369bccde756c1de42d7dc3f415ef20d3d69ad2599c1d0cd4228d604d7564adc17beac7b6ff92b924b8c20d54
Step by step, going to replace all of the
RecursiveMutex
instances with theMutex
ones throughout the code base :)Not sure if it is possible in all cases though...
This one is a low-hanging fruit.