ThreadSanitizer no detecta carreras de datos al superar los 255 hilos
Data races and the limits of ThreadSanitizer in C and Go
ThreadSanitizer (TSan) es el detector de carreras que usan Clang, GCC, Go, Swift y OCaml, pero no está bien documentado y tiene límites poco conocidos. El artículo explica qué es una carrera de datos, implementa un intérprete en Python de un subconjunto idealizado de C con relojes vectoriales estilo FastTrack para mostrar cómo funciona TSan, y demuestra que TSan no puede reportar carreras de forma fiable al cruzar el límite de 255 hilos totales, algo común en servicios web en Go con una goroutine por petición. También cubre un caso en sync.Pool que oculta carreras entre goroutines.
No obstante, es bueno conocer sus limitaciones.