Pattern
Years of growth accumulate shared state and locks added by people who never met. Eventually two of those decisions meet at the wrong moment. Components that weren't designed to interact now do.
Constraint
Observation changes timing: a log line or breakpoint makes the bug vanish. New bugs arise on slower or faster hardware or only in optimized code.
Method
Reconstruct the lock safety and lock order the code actually uses. Force the interleavings that matter. Prove the cause before touching the fix. Red before green.
Deliverable
Fixes that address the design rather than the symptom, plus a written map of the relevant concurrency.
Seeing something similar? patrick@eigenstate.solutions