TSan also catches data races that end up not having any visible effect, unlike rerunning and hoping to see the program misbehave.
TSan also catches data races that end up not having any visible effect, unlike rerunning and hoping to see the program misbehave.
The false positive on TSAN is so low that it’s worth fixing any false positives although concluding it’s a false positive seems so hard that I always have a nagging feeling as to whether I actually did fix it
"Data race which doesn't seem to modify the data" is actually often not a false positive, they're called "Benign data races" and well, go read the literature, it's often difficult to be sure they're truly "benign" and if there's a subtle reason why they aren't that's now a crazy hard to spot bug in your program.
So yeah, just fix 'em. Most of them you dodged a bullet, and even when you didn't it will now be easier for the next person to reason about the software.
Yeah in fact there is no such thing as a benign data race -- https://web.archive.org/web/20181022150257/https://software....
I agree. That doesn’t mean that TSAN doesn’t have false positives even though they may be rare.
Sure, but nobody is gonna rely on TSAN to determine data races in their code :)