The University of Southampton
University of Southampton Institutional Repository

Finding rare concurrent programming bugs:: An automatic, symbolic, randomized, and parallelizable approach

Finding rare concurrent programming bugs:: An automatic, symbolic, randomized, and parallelizable approach
Finding rare concurrent programming bugs:: An automatic, symbolic, randomized, and parallelizable approach
Developing correct, scalable and efficient concurrent programs is a complex and difficult task, due to the large number of possible concurrent executions that need to be taken into account. Modern multi-core processors with weak memory models and lock-free algorithms make this task even more difficult, as they introduce additional executions that confound the developers' reasoning. Because of these complex interactions, concurrent programs often contain bugs that are difficult to find, reproduce, and fix. Stress testing is known to be very ineffective in detecting rare concurrency bugs as all possible executions of the programs have to be explored explicitly. Consequently, testing by itself is often inadequate for concurrent programs and needs to be complemented by automated analysis tools that enable detection of bugs in a systematic and symbolic way.

In the first part of the talk, I provide an overview of Lazy-CSeq, a symbolic method based on Bounded Model Checking (BMC) and Sequentialization. Lazy-CSeq first translates a multi-threaded C program into a nondeterministic sequential C program that preserves reachability for all round-robin schedules with a given bound on the number of rounds. It then re-uses existing high-performance BMC tools as backends for the sequential verification problem. This translation is carefully designed to introduce very small memory overheads and very few sources of nondeterminism, so that it produces tight SAT/SMT formulae, and is thus very effective in practice.

In the second part of the talk, I present Swarm-CSeq, which extends Lazy-CSeq with a swarm-based bug-finding method. The key idea is to generate a set of simpler program instances, each capturing a reduced set of the original program’s interleavings. These instances can then be verified independently in parallel. Our approach is parametrizable and allows us to fine-tune the nondeterminism and randomness used for the analysis. In our experiments, by using parallel analysis, we show that this approach is able, even with a small number of cores, to find bugs in the hardest known concurrency benchmarks in a matter of minutes, whereas other dynamic and static tools fail to do so in hours.
Springer
Parlato, Gennaro
c28428a0-d3f3-4551-a4b5-b79e410f4923
Fischer, Bernd
Uustalu, Tarmo
Parlato, Gennaro
c28428a0-d3f3-4551-a4b5-b79e410f4923
Fischer, Bernd
Uustalu, Tarmo

Parlato, Gennaro (2018) Finding rare concurrent programming bugs:: An automatic, symbolic, randomized, and parallelizable approach. Fischer, Bernd and Uustalu, Tarmo (eds.) In Theoretical Aspects of Computing – ICTAC 2018: 5th International Colloquium, Stellenbosch, South Africa, October 16–19, 2018, Proceedings. Springer..

Record type: Conference or Workshop Item (Paper)

Abstract

Developing correct, scalable and efficient concurrent programs is a complex and difficult task, due to the large number of possible concurrent executions that need to be taken into account. Modern multi-core processors with weak memory models and lock-free algorithms make this task even more difficult, as they introduce additional executions that confound the developers' reasoning. Because of these complex interactions, concurrent programs often contain bugs that are difficult to find, reproduce, and fix. Stress testing is known to be very ineffective in detecting rare concurrency bugs as all possible executions of the programs have to be explored explicitly. Consequently, testing by itself is often inadequate for concurrent programs and needs to be complemented by automated analysis tools that enable detection of bugs in a systematic and symbolic way.

In the first part of the talk, I provide an overview of Lazy-CSeq, a symbolic method based on Bounded Model Checking (BMC) and Sequentialization. Lazy-CSeq first translates a multi-threaded C program into a nondeterministic sequential C program that preserves reachability for all round-robin schedules with a given bound on the number of rounds. It then re-uses existing high-performance BMC tools as backends for the sequential verification problem. This translation is carefully designed to introduce very small memory overheads and very few sources of nondeterminism, so that it produces tight SAT/SMT formulae, and is thus very effective in practice.

In the second part of the talk, I present Swarm-CSeq, which extends Lazy-CSeq with a swarm-based bug-finding method. The key idea is to generate a set of simpler program instances, each capturing a reduced set of the original program’s interleavings. These instances can then be verified independently in parallel. Our approach is parametrizable and allows us to fine-tune the nondeterminism and randomness used for the analysis. In our experiments, by using parallel analysis, we show that this approach is able, even with a small number of cores, to find bugs in the hardest known concurrency benchmarks in a matter of minutes, whereas other dynamic and static tools fail to do so in hours.

Text
ICTAC2018-Gennaro Parlato-rare bugs
Download (3MB)

More information

Published date: 2018
Additional Information: Invited Talk
Venue - Dates: 15th International Colloquium on Theoretical Aspects of Computing, , Stellenbosch, South Africa, 2018-10-12 - 2018-10-19

Identifiers

Local EPrints ID: 425836
URI: http://eprints.soton.ac.uk/id/eprint/425836
PURE UUID: d2773974-1953-40b7-8420-daea88033e32

Catalogue record

Date deposited: 05 Nov 2018 17:30
Last modified: 16 Mar 2024 03:18

Export record

Contributors

Author: Gennaro Parlato
Editor: Bernd Fischer
Editor: Tarmo Uustalu

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

Atom RSS 1.0 RSS 2.0

Contact ePrints Soton: eprints@soton.ac.uk

ePrints Soton supports OAI 2.0 with a base URL of http://eprints.soton.ac.uk/cgi/oai2

This repository has been built using EPrints software, developed at the University of Southampton, but available to everyone to use.

We use cookies to ensure that we give you the best experience on our website. If you continue without changing your settings, we will assume that you are happy to receive cookies on the University of Southampton website.

×