J Supercomput (2017) 73:3999–4019
A dynamic predictive race detector for C/C++ programs
· Deqing Zou
· Hai Jin
· Jinan Shen
Published online: 15 June 2017
© Springer Science+Business Media New York 2017
Abstract Concurrent techniques have been widely adopted in software systems, and
data race has become a great threat to stability and security of concurrent systems.
Previous precise race detection techniques either may miss many races, or are only
suitable for some speciﬁc programs, such as the programs executed in a virtual machine
rather than in actual hardware. To solves these problems, this paper introduces a
dynamic predictive race detector, called LayDetect, which detects predictable races
in C/C++ programs. LayDetect applies an innovative layering technique, which can
detect more races than other detectors, such as FastTrack. We have implemented
and evaluated LayDetect with well-known benchmarks and real-world applications.
LayDetect has detected 3.7 M races at run-time which is more than that of FastTrack
by two orders of magnitude, while the average slowdown (3.0×) and space overhead
(34.1 MB) of LayDetect are similar to that of FastTrack.
Keywords Data race · Concurrent systems · Race detection · C/C++ programs
Cluster and Grid Computing Lab, Services Computing Technology and System Lab, Huazhong
University of Science and Technology, Wuhan, China