Answers are grounded in this paper and cite their sources.
Precise dynamic race detectors report an error if and only if more than one thread concurrently exhibits conflict on a memory access. They insert instrumentations at compile-time to perform runtime checks on all memory accesses to ensure that all races are captured and no spurious warnings are generated. However, a dynamic race check for a particular memory access statement is guaranteed to be redundant if the statement can be statically identified as thread interference-free. Despite significant recent advances in dynamic detection techniques, the redundant check remains a critical factor that leads to prohibitive overhead of dynamic race detection for multithreaded programs.
No takes yet. Share an insight, caveat, or question.
Di et al. (2016) studied this question.
Synapse has enriched 8 closely related papers on similar clinical questions. Consider them for comparative context: