ThreadSanitizer пропускает гонки данных при более чем 255 потоках

Data races and the limits of ThreadSanitizer in C and Go

Гонки данных — это недетерминированные баги, которые не всегда ловятся тестами. ThreadSanitizer (TSan) из LLVM используется в Clang, GCC, Go, Swift и OCaml, но его алгоритм имеет ограничения. Автор реализует интерпретатор многопоточного C на Python с векторными часами в стиле FastTrack, чтобы показать, как TSan может пропускать очевидные гонки, например, при пересечении границы в 255 потоков. Также рассматривается сценарий в Go с sync.Pool, скрывающий гонки между горутинами.

TSan не может надёжно сообщать о гонках данных при пересечении границы в 255 потоков.

Ещё за этот день

2026-09-15