При -race компилятор добавляет инструментацию к доступам к памяти. Рантайм отслеживает пары событий и отношения happens-before. При обнаружении конфликтующего доступа (data race) выводит отчёт. Дорого по CPU и памяти - только для тестов и отладки.