Efficient detection of errors in java components using random environment and restarts
Pavel Parizek,Tomas Kalibera +1 more
- 20 Mar 2010
- pp 451-465
TL;DR: A method that allows to discover at least some concurrency errors in component's code in reasonable time by use of an abstract environment that performs a random sequence of method calls in each thread, and restarts of the error detection process according to a specific strategy.
read more
Abstract: Software model checkers are being used mostly to discover specific types of errors in the code, since exhaustive verification of complex programs is not possible due to state explosion. Moreover, typical model checkers cannot be directly applied to isolated components such as libraries or individual classes. A common solution is to create an abstract environment for a component to be checked. When no constraints on component's usage are defined by its developers, a natural choice is to use a universal environment that performs all possible sequences of calls of component's methods in several concurrently-running threads. However, model checking of components with a universal environment is prone to state explosion.
In this paper we present a method that allows to discover at least some concurrency errors in component's code in reasonable time. The key ideas of our method are (i) use of an abstract environment that performs a random sequence of method calls in each thread, and (ii) restarts of the error detection process according to a specific strategy. We have implemented the method in the context of Java components and the Java PathFinder model checker. We have performed experiments on non-trivial Java components to show that our approach is viable.
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Detecting Assumptions on Deterministic Implementations of Non-deterministic Specifications
August Shi,Alex Gyori,Owolabi Legunsen,Darko Marinov +3 more
- 11 Apr 2016
TL;DR: A simple technique, called NONDEX, is presented, for detecting flaky tests due to ADINS code, which refers to code that Assumes a Deterministic Implementation of a method with a Non-deterministic Specification.
72
Fast detection of concurrency errors by state space traversal with randomization and early backtracking
Pavel Parizek,Ondřej Lhoták +1 more
TL;DR: The DFS-RB algorithm is presented, which augments the standard algorithm for depth-first traversal with early backtracking and achieves better performance in terms of speed and error detection than many state-of-the-art techniques for many benchmarks in this set.
6
References
An Extensible SAT-solver
Niklas Een,Niklas Sörensson +1 more
- 05 May 2003
TL;DR: This article presents a small, complete, and efficient SAT-solver in the style of conflict-driven learning, as exemplified by Chaff, and includes among other things a mechanism for adding arbitrary boolean constraints.
Model checking programs
Willem Visser,Klaus Havelund,Guillaume Brat,Seungjoon Park +3 more
- 11 Sep 2000
TL;DR: A verification and testing environment for Java, called Java PathFinder (JPF), which integrates model checking, program analysis and testing, and uses state compression to handle big states and partial order and symmetry reduction, slicing, abstraction, and runtime analysis techniques to reduce the state space.
Learning from mistakes: a comprehensive study on real world concurrency bug characteristics
Shan Lu,Soyeon Park,Eunsoo Seo,Yuanyuan Zhou +3 more
- 01 Mar 2008
TL;DR: This study carefully examined concurrency bug patterns, manifestation, and fix strategies of 105 randomly selected real world concurrency bugs from 4 representative server and client open-source applications and reveals several interesting findings that provide useful guidance for concurrency Bug detection, testing, and concurrent programming language design.
Context-Bounded model checking of concurrent software
Shaz Qadeer,Jakob Rehof +1 more
- 04 Apr 2005
TL;DR: In this paper, the authors show that the problem of verifying a concurrent boolean program is decidable, even in the presence of unbounded parallelism, if the analysis is restricted to executions in which the number of context switches is bounded by an arbitrary constant.