Deadlock detection in distributed databases
ACM Computing Surveys (CSUR)
Pthreads programming
Model checking for programming languages using VeriSoft
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A practical method for verifying event-driven software
Proceedings of the 21st international conference on Software engineering
Bandera: extracting finite-state models from Java source code
Proceedings of the 22nd international conference on Software engineering
Runtime Checking of Multithreaded Applications with Visual Threads
Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification
Model-Checking Multi-threaded Distributed Java Programs
Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification
Using Runtime Analysis to Guide Model Checking of Java Programs
Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification
Boolean and Cartesian Abstraction for Model Checking C Programs
TACAS 2001 Proceedings of the 7th International Conference on Tools and Algorithms for the Construction and Analysis of Systems
ASE '00 Proceedings of the 15th IEEE international conference on Automated software engineering
ASE '00 Proceedings of the 15th IEEE international conference on Automated software engineering
Applying Static Analysis to Large-Scale, Multi-Threaded Java Programs
ASWEC '01 Proceedings of the 13th Australian Conference on Software Engineering
Multithreaded java program test generation
IBM Systems Journal
Detecting potential deadlocks with static analysis and run-time monitoring
HVC'05 Proceedings of the First Haifa international conference on Hardware and Software Verification and Testing
Dynamic deadlock analysis of multi-threaded programs
HVC'05 Proceedings of the First Haifa international conference on Hardware and Software Verification and Testing
Racer: effective race detection using aspectj
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
Verified Software: Theories, Tools, Experiments
Deadlocks: From Exhibiting to Healing
Runtime Verification
A randomized dynamic program analysis technique for detecting real deadlocks
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Forcing small models of conditions on program interleaving for detection of concurrent bugs
Proceedings of the 7th Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging
A modular scheme for deadlock prevention in an object-oriented programming model
ICFEM'10 Proceedings of the 12th international conference on Formal engineering methods and software engineering
Detection of deadlock potentials in multithreaded programs
IBM Journal of Research and Development
Testing concurrent programs on relaxed memory models
Proceedings of the 2011 International Symposium on Software Testing and Analysis
Efficient data race detection for distributed memory parallel programs
Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and Analysis
MagicFuzzer: scalable deadlock detection for large-scale applications
Proceedings of the 34th International Conference on Software Engineering
Trace driven dynamic deadlock detection and reproduction
Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programming
Hi-index | 0.00 |
This paper presents a framework for confirming deadlock potentials detected by runtime analysis of a single run of a multi-threaded program. The multi-threaded program under examination is instrumented to emit lock and unlock events. When the instrumented program is executed, a trace is generated consisting of the lock and unlock operations performed during that specific run. A lock graph is constructed which can reveal deadlock potentials in the form of cycles. The effectiveness of this analysis is caused by the fact that successful non-deadlocking runs yield as good, and normally better, information as deadlocking runs. Each cycle is then used to construct an observer that can detect the occurrence of the corresponding real deadlock, should it occur during subsequent test runs; and a controller, which, when composed with the program, determines the optimal scheduling strategy that will maximize the probability for the corresponding real deadlock to occur. The framework is formalized in terms of transition systems and is implemented in Java.