Bandera: extracting finite-state models from Java source code
Proceedings of the 22nd international conference on Software engineering
Concurrent control with “readers” and “writers”
Communications of the ACM
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Automated Software Engineering
Combining Theorem Proving and Model Checking through Symbolic Analysis
CONCUR '00 Proceedings of the 11th International Conference on Concurrency Theory
Specification and verification of concurrent systems in CESAR
Proceedings of the 5th Colloquium on International Symposium on Programming
Experiments in Theorem Proving and Model Checking for Protocol Verification
FME '96 Proceedings of the Third International Symposium of Formal Methods Europe on Industrial Benefit and Advances in Formal Methods
Faithful Translations among Models and Specifications
FME '01 Proceedings of the International Symposium of Formal Methods Europe on Formal Methods for Increasing Software Productivity
PVS: A Prototype Verification System
CADE-11 Proceedings of the 11th International Conference on Automated Deduction: Automated Deduction
Proceedings of the 26th International Conference on Software Engineering
Java Concurrency in Practice
A refinement calculus for software components and architectures
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Checking JML specifications using an extensible software model checking framework
International Journal on Software Tools for Technology Transfer (STTT)
Formal Aspects of Computing
Principles of the Spin Model Checker
Principles of the Spin Model Checker
Spin model checker, the: primer and reference manual
Spin model checker, the: primer and reference manual
Reentrant Readers-Writers: A Case Study Combining Model Checking with Theorem Proving
Formal Methods for Industrial Critical Systems
JPF-SE: a symbolic execution extension to Java PathFinder
TACAS'07 Proceedings of the 13th international conference on Tools and algorithms for the construction and analysis of systems
A JML tutorial: modular specification and verification of functional behavior for java
CAV'07 Proceedings of the 19th international conference on Computer aided verification
Analysis of a session-layer protocol in MCRL2: verification of a real-life industrial implementation
FMICS'07 Proceedings of the 12th international conference on Formal methods for industrial critical systems
A proof framework for concurrent programs
IFM'12 Proceedings of the 9th international conference on Integrated Formal Methods
Hi-index | 0.00 |
The classic readers-writers problem has been extensively studied. This holds to a lesser degree for the reentrant version, where it is allowed to nest locking actions. Such nesting is useful when a library is created with various procedures each starting and ending with a lock operation. Allowing nesting makes it possible for these procedures to call each other. We considered an existing widely used industrial implementation of the reentrant readers-writers problem. Staying close to the original code, we modelled and analyzed it using a model checker resulting in the detection of a serious error: a possible deadlock situation. The model was improved and checked satisfactorily for a fixed number of processes. To achieve a correctness result for an arbitrary number of processes the model was converted to a specification that was proven with a theorem prover. Furthermore, we studied starvation. Using model checking we found a starvation problem. We have fixed the problem and checked the solution. Combining model checking with theorem proving appeared to be very effective in reducing the time of the verification process.