Software Analysis Techniques for Detecting Data Race

Pilsung KANG  

IEICE TRANSACTIONS on Information and Systems   Vol.E100-D   No.11   pp.2674-2682
Publication Date: 2017/11/01
Online ISSN: 1745-1361
DOI: 10.1587/transinf.2017EDR0004
Type of Manuscript: SURVEY PAPER
Category: Fundamentals of Information Systems
concurrency,  program analysis,  data race,  

Full Text: FreePDF(309.3KB)

Data races are a multithreading bug. They occur when at least two concurrent threads access a shared variable, and at least one access is a write, and the shared variable is not explicitly protected from simultaneous accesses of the threads. Data races are well-known to be hard to debug, mainly because the effect of the conflicting accesses depends on the interleaving of the thread executions. Hence there have been a multitude of research efforts on detecting data races through sophisticated techniques of software analysis by automatically analyzing the behavior of computer programs. Software analysis techniques can be categorized according to the time they are applied: static or dynamic. Static techniques derive program information, such as invariants or program correctness, before runtime from source code, while dynamic techniques examine the behavior at runtime. In this paper, we survey data race detection techniques in each of these two approaches.