To:Dmitry-san,
> You are correct. ThreadSanitizer is a dynamic checker, it only detects
> data races that actually happen in the current execution.
> Re torelation: write better tests, run real systems under
> ThreadSanitizer. That't the techniques we use.
Exploring the entire parameter space for detecting data race,
or proving absence of data race, sounds like a greatly
inefficient way of verification work. "Happens-before"
symbolically matches R/W access to program variables
without exploring the parameter space, and it works if
concurrently running processes consist of sequential code only.
As far as all feasible (=schedulable) concurrent execution
paths are examined, then there remains no false negative.
Yet, it would be costly to prepare such test scenarios, as
lots of effort on system-level tests are required. It also raises
the cost of modifying the original code.
So I try to explore a better way of handling the branching
paths for upgrading the existing race detection method in
a way that absence of data race is guaranteed by design.
p.s.
Now I "struggle" to find evidently bad false positive.
Masataka Nishi