The consequences of data races can be potentially very problematic [1], and it is important to determine what tools and methods are best at detecting them. The following conditions must be met for a data race to occur: two or more threads in a single process access the same memory location concurrently, at least one of the accesses is for writing, and the threads are not using any exclusive locks to control their accesses to that memory. This paper reveals the techniques and implementations of the two main methods for dynamic data race detection techniques; the happens-before and lockset methods, and produces an analysis for several tools that employ either ({\S}4, {\S}5) or of both these methods ({\S}7.1) for detecting data races. This paper also reveals the extent to which dynamic data race detection (also called dynamic analysis) can identify harmful data races, how it can be implemented, and how it compares to other forms of data detection in terms of performance and accuracy.
翻译:数据竞赛的后果可能非常有问题[1],必须确定哪些工具和方法是发现它们的最佳手段和方法。必须满足以下条件才能发生数据竞赛:一个过程同时存取相同存储位置的两条或多条线索,至少一个存取器是写作的,而线索没有使用任何独家锁来控制其存取。本文揭示了动态数据竞赛探测技术的两种主要方法的技巧和实施情况;事前和锁套方法,并对使用(~S}4, ~S}5)或这两种方法(~S}7.1)来探测数据竞赛的若干工具进行了分析。本文还揭示了动态数据竞赛探测(也称为动态分析)可在何种程度上识别有害数据竞赛,如何加以实施,以及如何在性能和准确性方面与其他数据探测形式进行比较。