Buena pregunta 👍
Para detectar data races, errores de sincronización de hilos y mal uso de mutexes en programas multihilo en C/C++, Valgrind ofrece una herramienta llamada Helgrind, y también otra más moderna llamada DRD.
Aquí te explico cómo usarlas y qué hace cada una 👇
Helgrind analiza programas que usan pthreads (hilos POSIX) y busca condiciones de carrera, bloqueos y errores en mutexes.
Compila tu programa con símbolos de depuración:
gcc -g -pthread -o programa programa.c
Ejecuta con Helgrind:
valgrind --tool=helgrind ./programa
pthread_mutex_lock() sin unlock()).pthread_cond_*).Possible data race during read of size 4 at 0x601040 by thread #2
Locks held: none
Esto indica que dos hilos acceden a la misma dirección sin sincronización.