EPSRC Reference: |
EP/M008991/1 |
Title: |
CONSEQUENCER: Sequentialization-based Verification of Concurrent Programs with FIFO channels |
Principal Investigator: |
Parlato, Dr G |
Other Investigators: |
|
Researcher Co-Investigators: |
|
Project Partners: |
|
Department: |
Electronics and Computer Science |
Organisation: |
University of Southampton |
Scheme: |
First Grant - Revised 2009 |
Starts: |
01 March 2015 |
Ends: |
31 August 2016 |
Value (£): |
98,969
|
EPSRC Research Topic Classifications: |
Fundamentals of Computing |
|
|
EPSRC Industrial Sector Classifications: |
No relevance to Underpinning Sectors |
|
|
Related Grants: |
|
Panel History: |
Panel Date | Panel Name | Outcome |
20 Oct 2014
|
EPSRC ICT Prioritisation Panel - Oct 2014
|
Announced
|
|
Summary on Grant Application Form |
The steady exponential increase in processor performance
has reached the inevitable turning point, at which it is no longer feasible to
increase the clock speeds of individual processors. To achieve
higher performance, processors now contain several cores that work in parallel.
Consequently, concurrency has become an important aspect across many
areas within computer science, such as algorithms, data structures, programming
languages, software engineering, testing, and verification.
Concurrent programs consist of several computations or threads that are
active at the same time and communicate through some control mechanism, such as
locks and shared variables, or message passing. Concurrent programming is difficult:
programmers do not only have to guarantee the correctness
of the sequential execution of each individual thread, they must also consider
nondeterministic interferences from other threads. Due to these complex
interactions, considerable resources are spent to repair buggy concurrent
software.
Testing remains
the most used (and often the only known) paradigm in industry to find errors,
even though the inherently nondeterministic nature of the concurrent
schedules causes errors that manifest rarely and are difficult to reproduce and repair.
Testing is not effective in detecting such concurrency errors, as all
possible executions of the programs have to be explored explicitly.
Consequently, testing needs to be complemented by automated verification tools that
enable detection of errors without explicitly (i.e. symbolically) exploring executions.
On the other hand, the state of the art for concurrent program verification lags behind that for sequential programs.
Here, researchers have successfully explored a wide range of techniques and
tools to analyse real-world sequential software.
A recently proposed approach for symbolic verification of concurrent programs
called sequentialization, consists in translating the concurrent program
into an equivalent sequential program so that
verification techniques or tools that were originally designed for
sequential programs can be reused without any changes.
This technique has been successfully used to discover bugs in existing software
and has been implemented in several tools (e.g., Corral by Microsoft Research).
However, existing sequentialization schemas do not support weak memory models,
or distributed programs that use message passing.
In this proposal we address these weaknesses and plan the development of automated verification tools that enable detection of errors in concurrent programs in a systematic and symbolic way. More specifically, we will develop the theory, models and algorithms that underpin sequentialization of concurrent programs that use FIFO channels. This will enable us to capture within a single framework (1) concurrent programs that communicate through shared memory, for the variety of (weak) memory models that are implemented in today's computer architectures, and (2) distributed programs which use a message-passing communication style (i.e., the two most commonly used programming models for concurrency).
A key deliverable of this project will be a set of automatic code-to-code translators, called ConSequencer, for C programs that use Pthread (for shared variables) and MPI (for distributed programs). This will serve as a concurrency plugin for any program verification tool designed for sequential programs. We will evaluate our solutions on publicly available benchmarks using a range of robust sequential verification tools for the C language.
|
Key Findings |
This information can now be found on Gateway to Research (GtR) http://gtr.rcuk.ac.uk
|
Potential use in non-academic contexts |
This information can now be found on Gateway to Research (GtR) http://gtr.rcuk.ac.uk
|
Impacts |
Description |
This information can now be found on Gateway to Research (GtR) http://gtr.rcuk.ac.uk |
Summary |
|
Date Materialised |
|
|
Sectors submitted by the Researcher |
This information can now be found on Gateway to Research (GtR) http://gtr.rcuk.ac.uk
|
Project URL: |
|
Further Information: |
|
Organisation Website: |
http://www.soton.ac.uk |