HomePhabricator

Merge #13077: Add compile time checking for all cs_KeyStore runtime locking…

Description

Merge #13077: Add compile time checking for all cs_KeyStore runtime locking assertions

Summary:
66dc662c8a Add compile time checking for all cs_KeyStore runtime locking assertions (practicalswift)

Pull request description:

Add compile time checking for all `cs_KeyStore` runtime locking assertions.

This PR is a subset of #12665. The PR was broken up to make reviewing easier.

The intention is that literally all `EXCLUSIVE_LOCKS_REQUIRED`/`LOCKS_EXCLUDED`:s added in this PR should follow either directly or indirectly from `AssertLockHeld(…)`/`AssertLockNotHeld(…)`:s already existing in the repo.

Consider the case where function `A(…)` contains `AssertLockHeld(cs_foo)` (without
first locking `cs_foo` in `A`), and that `B(…)` calls `A(…)` (without first locking `cs_main`):
* It _directly_ follows that: `A(…)` should have an `EXCLUSIVE_LOCKS_REQUIRED(cs_foo)` annotation.
* It _indirectly_ follows that: `B(…)` should have an `EXCLUSIVE_LOCKS_REQUIRED(cs_foo)` annotation.

Tree-SHA512: 84ee5459e7f75f9affaa4275cb760576ab0e26da8a48b9a4a59b51a25418fe4b862ba832cb01312479a8c9b0e38ee8b6c4076bcbbd73213346d09ec2057fc9f1

Backport of Core PR13077
https://github.com/bitcoin/bitcoin/pull/13077/

Test Plan:

../configure CXX=clang++ CC=clang
make check

Reviewers: deadalnix, Fabien, jasonbcox, O1 Bitcoin ABC, #bitcoin_abc

Reviewed By: Fabien, O1 Bitcoin ABC, #bitcoin_abc

Differential Revision: https://reviews.bitcoinabc.org/D3980

Details

Provenance
MarcoFalke <falke.marco@gmail.com>Authored on Apr 28 2018, 01:47
nakihitoCommitted on Sep 4 2019, 18:15
nakihitoPushed on Sep 4 2019, 21:17
Reviewer
Restricted Owners Package
Differential Revision
D3980: Merge #13077: Add compile time checking for all cs_KeyStore runtime locking assertions
Parents
rSTAGING8f5f90aa1296: Add missing override keyword to DummySignatureCreator::CreateSig()
Branches
Unknown
Tags
Unknown
References
tag: phabricator/base/11092, tag: phabricator/base/11090, tag: phabricator/base/11089