Data races and the limits of ThreadSanitizer in C and Go
Summary
Data races frustrate deterministic testing; the article explains what a data race is and how detectors like ThreadSanitizer work, including historical algorithms and the limitations of TSAN. It also demonstrates a Python-based interpreter with vector clocks to illustrate how TSAN operates and why it can miss races, such as at a 255-thread boundary, with Go's concurrency model highlighted. The piece emphasizes understanding detector limits to improve concurrent code testing.