Generating Data Race Witnesses by an SMT-Based Analysis

@inproceedings{Said2011GeneratingDR,
  title={Generating Data Race Witnesses by an SMT-Based Analysis},
  author={Mahmoud H. Said and C. Wang and Z. Yang and K. Sakallah},
  booktitle={NASA Formal Methods},
  year={2011}
}
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… Expand
Fast, sound, and effectively complete dynamic race prediction
TLDR
To the first sound algorithm that achieves such a level of performance on both running time and completeness of the reported races, M2 is developed: a new polynomial-time algorithm for this problem, which has no false positives. Expand
Predicting and Witnessing Data Races Using CSP
TLDR
This paper describes an automated approach to generate, from a single program trace, a model in CSP with alternative interleavings, and checks for data races patterns and obtain a witness that allows the reproduction of errors. Expand
Sound predictive race detection in polynomial time
TLDR
This work introduces a new relation, causally-precedes (CP), which generalizes happens-before to observe more races without sacrificing soundness, and applies it to real-world programs to demonstrate that the unique aspects of CP result in practical benefit. Expand
Interleaving generation for data race and deadlock reproduction
TLDR
This work takes a single program observation and produces a set of alternative orderings of the synchronization primitives that lead to a concurrency error and enforced under a happens-before detector to discard reorderings that are infeasible or do not produce any error report. Expand
The Complexity of Dynamic Data Race Prediction
TLDR
This work addresses sources of intractability and conditions under which the dynamic data-race prediction problem is efficiently solvable, establishing a general O(k · n2·(k-1) upper-bound) and developing an algorithm that works in O(n) time when certain parameters of t are constant. Expand
Fast, Sound and Effectively Complete Dynamic Race Detection
TLDR
This work studies the algorithmic problem of predicting data races in lock-based concurrent programs, which lies at the heart of concurrent verification and has been extensively studied for over three decades. Expand
Towards concurrency race debugging: an integrated approach for constraint solving and dynamic slicing
TLDR
A new debugging framework for providing a concise schedule that can help not only witness but also understand data race and a key innovation of this work is to integrate dynamic slicing into constraint solving technique. Expand
Dynamic race prediction in linear time
TLDR
A new relation weak-causally-precedes (WCP) is presented that is provably better than CP in terms of being able to detect more races, while still remaining sound and admits a linear time algorithm which works on the entire execution without having to fragment it. Expand
Maximal sound predictive race detection with control flow abstraction
TLDR
This work presents a sound race detection technique that achieves a provably higher detection capability than existing sound techniques, and formally proves that its formulation achieves the maximal possible detection capability for any sound dynamic race detector with respect to the same input trace under the sequential consistency memory model. Expand
Symbolic predictive analysis for concurrent programs
TLDR
This paper introduces a precise predictive model based on both the program source code and the observed execution events, and proposes a symbolic algorithm to check whether a safety property holds in all feasible permutations of events of the given trace. Expand
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 36 REFERENCES
Goldilocks: a race and transaction-aware java runtime
TLDR
A Java runtime system that monitors program executions and throws a DataRaceException that may be a viable mechanism to enforce the safety of executions of multithreaded Java programs and a precise and efficient algorithm for dynamically verifying that an execution is free of data races. Expand
Detecting Errors in Multithreaded Programs by Generalized Predictive Analysis of Executions
TLDR
This paper provides an algorithm to observe execution traces of multithreaded programs and, based on appropriate code instrumentation that allows one to atomically extract a partial-order causality from a linear sequence of events, predicts other schedules that are compatible with the run. Expand
Symbolic Predictive Analysis for Concurrent Programs
TLDR
A new symbolic causal model based on source code and the observed events is introduced, and a symbolic algorithm to check whether a safety property holds in all feasible permutations of events in the given execution trace is proposed. Expand
Static Detection of Atomicity Violations in Object-Oriented Programs
TLDR
A static analysis that infers atomicity constraints and identifies potential violations is developed based on an abstract model of threads and data and is efficient and effective in determining several known synchronization problems in a set of application programs and the Java library. Expand
Fast and Accurate Static Data-Race Detection for Concurrent Programs
TLDR
A new, efficient dataflow algorithm for shared variable detection which is more effective than existing correlation-based techniques that failed to detect the shared variables responsible for data races in majority of the drivers in the authors' benchmark suite is presented. Expand
RacerX: effective, static detection of race conditions and deadlocks
TLDR
RacerX is a static tool that uses flow-sensitive, interprocedural analysis to detect both race conditions and deadlocks and uses novel strategies to infer checking information such as which locks protect which operations, which code contexts are multithreaded, and which shared accesses are dangerous. Expand
LOCKSMITH: context-sensitive correlation analysis for race detection
TLDR
This work develops several techniques to improve the precision and performance of the analysis, including a sharing analysis for inferring thread locality; existential quantification for modeling locks in data structures; and heuristics for modeling unsafe features of C such as type casts. Expand
jPredictor: a predictive runtime analysis tool for java
TLDR
Experiments show that jPredictor is precise (in its predictions), effective and efficient, and found errors missed by other tools, including static race detectors, as well as unknown errors in popular systems like Tomcat and the Apache FTP server. Expand
Coverage guided systematic concurrency testing
TLDR
A coverage-guided systematic testing framework that uses dynamically learned ordering constraints over shared object accesses to select only high-risk interleavings for test execution, which can increase the coverage of important concurrency scenarios with a reasonable cost and detect most of the concurrency bugs in practice. Expand
Using Runtime Analysis to Guide Model Checking of Java Programs
This paper describes how two runtime analysis algorithms, an existing data race detection algorithm and a new deadlock detection algorithm, have been implemented to analyze Java programs. RuntimeExpand
...
1
2
3
4
...