- 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
| Name |
Last commit
|
Last Update |
|---|---|---|
| .. | ||
| exponential_biased.cc | Loading commit data... | |
| exponential_biased.h | Loading commit data... | |
| exponential_biased_test.cc | Loading commit data... | |
| periodic_sampler.cc | Loading commit data... | |
| periodic_sampler.h | Loading commit data... | |
| periodic_sampler_benchmark.cc | Loading commit data... | |
| periodic_sampler_test.cc | Loading commit data... | |
| sample_recorder.h | Loading commit data... | |
| sample_recorder_test.cc | Loading commit data... |