Generating Data Race Witnesses by an SMT-Based Analysis

DOI: 10.1007/978-3-642-20398-5_23
Source: DBLP


Data race is one of the most dangerous errors in multithreaded programming, and despite intensive studies, it remains a notorious
cause of failures in concurrent systems. Detecting data races is already a hard problem, and yet it is even harder for a programmer
to decide whether or how a reported data race can appear in the actual program execution. In this paper we propose an algorithm for generating debugging
aid information called witnesses, which are concrete thread schedules that can deterministically trigger the data races. More specifically, given a concrete
execution trace, e.g. non-erroneous one which may have triggered a warning in Eraser-style data race detectors, we use a symbolic
analysis based on SMT solvers to search for a data race witness among alternative interleavings of events of that trace. Our
symbolic analysis precisely encodes the sequential consistency semantics using a scalable predictive model to ensure that
the reported witness is always feasible.

KeywordsData Race–Debug–SMT–Concurrent Programs

Download full-text


Available from: Zijiang Yang, Jan 15, 2015
1 Follower
32 Reads
  • Source
    • "A data race witnesses algorithm in multithreaded java programs introduced in [22] which based on analyzing a single execution trace. "
    [Show abstract] [Hide abstract]
    ABSTRACT: Recent advances in microprocessor technologies have increased the need for concurrent multi-threaded programming. These advances imposed an immediate mandate in the researcher to develop methodologies and tools to support the development process especially in testing and debugging of concurrent multithreaded programs. In this paper, we are surveying the available tools and techniques for testing and debugging concurrent and multi-threaded applications as well as highlighting the different ways of implementing these techniques. At the time of writing and as fare as our search had reached we didn�t find published surveys that cover these tools techniques since 2006 in [1], [2].
  • Source
    • "A data race witnesses algorithm in multithreaded java programs introduced in [22] which based on analyzing a single execution trace. "
  • Source
    [Show abstract] [Hide abstract]
    ABSTRACT: Predictive analysis aims at detecting concurrency errors during runtime by monitoring a concrete execution trace of a concurrent program. In recent years, various models based on happens-before causality relations have been proposed for predictive analysis to improve the interleaving coverage while ensuring the absence of false alarms. However, these models are based on only the observed events, and typically do not utilize source code. Furthermore, the enumerative algorithms they use for verifying safety properties in the predicted execution traces often suffer from the interleaving explosion problem. In this paper, we introduce a new symbolic causal model based on source code and the observed events, and propose a symbolic algorithm to check whether a safety property holds in all feasible permutations of events in the given execution trace. Rather than explicitly enumerating the interleavings, our algorithm conducts the verification using a novel encoding of the causal model and symbolic reasoning with a satisfiability modulo theory (SMT) solver. Our algorithm has a larger interleaving coverage than known causal models in the literature. We also propose a method to symbolically bound the number of context switches allowed in an interleaving, to further improve the scalability of the algorithm.
    11/2009: pages 256-272;
Show more