Optimal speedup of Las Vegas algorithms
Information Processing Letters
Boosting combinatorial search through randomization
AAAI '98/IAAI '98 Proceedings of the fifteenth national/tenth conference on Artificial intelligence/Innovative applications of artificial intelligence
Automated Software Engineering
Using Runtime Analysis to Guide Model Checking of Java Programs
Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification
Optimal Parallelization of Las Vegas Algorithms
STACS '94 Proceedings of the 11th Annual Symposium on Theoretical Aspects of Computer Science
Eighteenth national conference on Artificial intelligence
Specification and Generation of Environment for Model Checking of Software Components
Electronic Notes in Theoretical Computer Science (ENTCS)
Analysis of Restart Mechanisms in Software Systems
IEEE Transactions on Software Engineering
Learning from mistakes: a comprehensive study on real world concurrency bug characteristics
Proceedings of the 13th international conference on Architectural support for programming languages and operating systems
Context-Bounded Analysis for Concurrent Programs with Dynamic Creation of Threads
TACAS '09 Proceedings of the 15th International Conference on Tools and Algorithms for the Construction and Analysis of Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009,
Automated Construction of Reasonable Environment for Java Components
Electronic Notes in Theoretical Computer Science (ENTCS)
IJCAI'99 Proceedings of the 16th international joint conference on Artificial intelligence - Volume 2
The effect of restarts on the efficiency of clause learning
IJCAI'07 Proceedings of the 20th international joint conference on Artifical intelligence
Context-Bounded model checking of concurrent software
TACAS'05 Proceedings of the 11th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Hi-index | 0.00 |
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.