Data Race Detection by Understanding Synchronization Relationships of Thread Segments

Zhiyuan Shao,Jian Peng,Hai Jin
DOI: https://doi.org/10.1109/PDP.2017.49
2017-01-01
Abstract:Detecting data races among the threads of a concurrent program is one of the most important debugging issues. However, the data races are never be easily detected due to the inherent concurrency and indeterministic execution of the participating threads. The widely employed dynamic data race detecting methods generally scrutinize one of sampled execution paths of the program, and may thus miss some data races. With improved coverage, static methods detect the data races by analyzing the source code. However, such static methods result in lots of false alarming, and are not of practical use. In this paper, we propose a method that detects the data races by understanding the synchronization relationships among the segments of participating threads. This method can improve the coverage by enumerating all the possible execution paths of the thread phases, and at the same time, reserve the existing merits of dynamic data race detecting methods. The experiment data shows that our prototype detector is comparable in accuracy with the commercial detector Intel Inspector, and other open source detector, such as ThreadSanitizer. At the same time, our detector has less memory consumption for memory intensive benchmarks in NPB suite, which other software tools fail to analyze.
What problem does this paper attempt to address?