diff options
author | Abseil Team <absl-team@google.com> | 2022-12-08 08:25:41 -0800 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2022-12-08 08:26:40 -0800 |
commit | 2e17768541d7caa0da88e774f916b012ffc57ebb (patch) | |
tree | dbf6a1d6f2ad07c60de013696e3bedc0c9afb83f /absl/container/internal/raw_hash_set.h | |
parent | 9bff2a9302a8dbf91712fc215eb2e2cf8ec234e7 (diff) |
The abridged justification is as follows:
- The deadlock seems to occur if flag initialization happens to occur while a sample is being created.
- Each sample has its own mutex that is locked when a new sample is registered, i.e. created for the first time.
- The flag implicitly creates a global sampler object which locks `graveyard_`'s mutex.
- Usually, in `PushDead`, the `graveyard` is locked before the sample, hence triggering deadlock detection.
- This lock order can never be recreated since this code is executed exactly once per sample object, and the sample object cannot be accessed until after the method returns.
- It should therefore be safe to ignore any locking order condition that may occur during sample creation.
PiperOrigin-RevId: 493901903
Change-Id: I094abca82c1a8a82ac392383c72469d68eef09c4
Diffstat (limited to 'absl/container/internal/raw_hash_set.h')
0 files changed, 0 insertions, 0 deletions