A pragmatic verification approach for concurrent programs
A pragmatic verification approach for concurrent programs
Developing correct concurrent software is a difficult task, due to the inherently non-deterministic nature of thread interactions. Traditional testing techniques typically perform an explicit exploration of the possible program executions, and are thus inadequate for concurrent software. Symbolic verification techniques for concurrent programs are therefore desirable.
Sequentialization has become one of the most promising symbolic approach for the verification of concurrent programs in recent years. However, current efficient implementations still struggle with concurrent programs that contain rare bugs, and their purposes is restricted to bug-finding. In this thesis, we advance sequentialization to provide pragmatic and scalable verification approaches for concurrent programs, aiming at finding bugs and proving correctness.
Concerning finding rare bugs in concurrent programs, we present our work on optimising Lazy-CSeq sequentialization using abstract interpretation. We empirically demonstrate that this procedure, which is implemented in the tool called Lazy-CSeq+ABS, can lead to significant performance gain for very hard verification problem.
Furthermore, we propose a “swarm” verification approach that can enable existing tools to find rare concurrency bugs which were previously out of reach. We implement the approach in VeriSmart, as a extension of Lazy-CSeq, and empirically demonstrate that VeriSmart can spot rare bugs considerably faster than Lazy-CSeq tool can.
With regard to proving correctness, we develop a novel lazy sequentialization for unbounded concurrent programs and implement the corresponding schema in a tool named UL-CSeq based on the CSeq framework. Empirical experiments show that our new schema is efficient in both proving correctness and finding bugs on concurrency benchmarks in comparison with state-of-the-art approaches.
Concurrency, Verification, Program Analysis, tool
University of Southampton
Nguyen Lam, Truc
0a373da7-0868-466d-a3b8-060868037acc
May 2017
Nguyen Lam, Truc
0a373da7-0868-466d-a3b8-060868037acc
Parlato, Gennaro
c28428a0-d3f3-4551-a4b5-b79e410f4923
Nguyen Lam, Truc
(2017)
A pragmatic verification approach for concurrent programs.
University of Southampton, Doctoral Thesis, 101pp.
Record type:
Thesis
(Doctoral)
Abstract
Developing correct concurrent software is a difficult task, due to the inherently non-deterministic nature of thread interactions. Traditional testing techniques typically perform an explicit exploration of the possible program executions, and are thus inadequate for concurrent software. Symbolic verification techniques for concurrent programs are therefore desirable.
Sequentialization has become one of the most promising symbolic approach for the verification of concurrent programs in recent years. However, current efficient implementations still struggle with concurrent programs that contain rare bugs, and their purposes is restricted to bug-finding. In this thesis, we advance sequentialization to provide pragmatic and scalable verification approaches for concurrent programs, aiming at finding bugs and proving correctness.
Concerning finding rare bugs in concurrent programs, we present our work on optimising Lazy-CSeq sequentialization using abstract interpretation. We empirically demonstrate that this procedure, which is implemented in the tool called Lazy-CSeq+ABS, can lead to significant performance gain for very hard verification problem.
Furthermore, we propose a “swarm” verification approach that can enable existing tools to find rare concurrency bugs which were previously out of reach. We implement the approach in VeriSmart, as a extension of Lazy-CSeq, and empirically demonstrate that VeriSmart can spot rare bugs considerably faster than Lazy-CSeq tool can.
With regard to proving correctness, we develop a novel lazy sequentialization for unbounded concurrent programs and implement the corresponding schema in a tool named UL-CSeq based on the CSeq framework. Empirical experiments show that our new schema is efficient in both proving correctness and finding bugs on concurrency benchmarks in comparison with state-of-the-art approaches.
Text
thesis
- Version of Record
More information
Published date: May 2017
Additional Information:
Related publications:
Lazy-CSeq: A Context-Bounded Model Checking Tool for Multi-Threaded C-Programs
Lazy Sequentialization for TSO and PSO via Shared Memory Abstractions
Separating computation from communication: a design approach for concurrent program verification
Unbounded Lazy-CSeq: a lazy sequentialization tool for C programs with unbounded context switches (competition contribution)
Embedding weak memory models within eager sequentialization
MU-CSeq 0.4: individual memory location unwindings: (competition contribution)
Lazy-CSeq 1.0:(Competition Contribution)
Lazy sequentialization for the safety verification of unbounded concurrent programs
Unbounded Lazy-CSeq: A Lazy Sequentialization Tool for C with unboundedly many Context Switches: (Competition Contribution)
Keywords:
Concurrency, Verification, Program Analysis, tool
Identifiers
Local EPrints ID: 413593
URI: http://eprints.soton.ac.uk/id/eprint/413593
PURE UUID: f4e49f1e-a8cc-4b59-9cce-5919ce83268f
Catalogue record
Date deposited: 29 Aug 2017 16:30
Last modified: 15 Mar 2024 14:30
Export record
Contributors
Author:
Truc Nguyen Lam
Thesis advisor:
Gennaro Parlato
Download statistics
Downloads from ePrints over the past year. Other digital versions may also be available to download e.g. from the publisher's website.
View more statistics