Skip to main content
Department of Information Technology

The Benefits of Duality in Verifying Concurrent Programs under TSO (Parameterized Verification of TSO Memory Models)

Parosh Abdulla, Mohamed Faouzi Atig, Ahmed Bouajjani, Tuan Phong Ngo

We study decision problems for the verification of an arbitrary number of finite-state programs running under the classical TSO memory model.

For TSO model, we consider the following decision problem: (COVER) reachability of a configuration with one process in a given control state. We show that the COVER problem is decidable. To this aim, we introduce a novel machine model, called the Dual TSO semantics. Then, we show the decidability of the COVER problem for an arbitrary number of processes running under the Dual TSO semantics. We present a simple backward reachability analysis algorithm for the latter.

To our best of knowledge, our method is the first one that can verify the COVER reachability problems of concurrent programs under TSO memory models.

This page addresses the following issues:

  • Download and install the tool Dual-TSO (see Section 1)
  • Reproduce experimental results (see Section 2)
  • Publication information (see Section 4)
  • Contact information (see Section 6)

If you encounter problems or bugs when installing or running Dual-TSO, your feedback by email to will be appreciated.

1. How to download and install?

Before download and install, you should check requirements of operation system (see 1.1) and software (see 1.2).

1.1. Operation requirements

Dual-TSO is implemented for Unix environments such as Ubuntu, Fedora, Debian, etc, and the Mac OS system.

1.2. Software requirements

The following softwares are required to be capable of building it:

  • C++ compiler supporting C++11. For example g++ version 4.8.4 or higher (required)
  • GNU Autoconf (required)
  • GNU Make (required)

1.3. Download

We have implemented a prototype as an extension of Memorax TACAS'12 and TACAS'13. The prototype implements the new memory model called the Dual TSO model.

You can download the source code of Dual-TSO for Unix system (tested with OS Ubuntu 14.04 LTS 64 bit).

1.4. Building commands

To produce a configure script as well as Makefile templates:

 
$ cd memorax
$ autoreconf --install

After building the installation files, you should be able to proceed in the same way as above:

$ ./configure
$ make
$ make install

Other information related to installing can be seen in README.md file.

If you have an error related to Latex command when you are installing and you do not want to install Latex packages, you can move forward to the next install command. In this case, you will not have the PDF manual version. The file can be downloaded from manual.pdf.

2. Reproduce experimental results

The Memorax has an option to test with Single Buffer model with fixed number of processes (SB) from TACAS'12 and TACAS'13. The Dual-TSO has two options to test with the Dual model with a fixed number of processes (dual), and the Dual model with parameterized versions (pdual). The commands to run are:

For DUAL: 
  $./src/memorax -a dual reach ./doc/examples/dual-examples/sb.rmm

For PDUAL: 
  $./src/memorax -a pdual reach ./doc/examples/dual-examples/sb.rmm

For SB: 
  $./src/memorax -a sb reach ./doc/examples/dual-examples/sb.rmm

We provide scripts to automatically run all experiments.

$ ./doc/examples/dual-examples/test_sb.sh 
    to repeat all experiments with SB model with a fixed number of processes

$ ./doc/examples/dual-examples/test_dual.sh 
    to repeat all experiments with DUAL model with a fixed number of processes

$ ./doc/examples/dual-examples/test_pdual.sh 
    to repeat all experiments with DUAL model with parameterized versions

Other information related to experiments can be seen in README_experiment.md file.

3. RFF and Limitation

If you would like to run Memorax with SB and/or Dual abstractions on your benchmarks, using --rff option can benefit the performance. Dual-TSO currently only supports input programs presented by finite state transition systems, i.e. finite data domain and finite number of variables. Fence insertion supported by Memorax for SB is currently not supported by Dual and PDual.

6. Contact

Email: tuan-phong.ngo at it dot uu dot se

Updated  2018-05-21 08:06:22 by Tuan Phong Ngo.