Year: 1999
Type: dissertation
Abstract: Concurrent programs are becoming common, while testing techniques that can adequately test such programs are not widely available.Due to the nondeterministic nature of concurrent programs, program errors resulting from unintended timing dependencies can be extremely difficult to track down.We have designed, proved correct, and implemented a testing algorithm called ExitBlock that systematically and deterministically finds such errors.ExitBlock executes a program or a portion of a program on a given input multiple times, enumerating meaningful schedules in order to cover all program behaviors.Other systematic testers exist for programs whose concurrent elements are processes that run in separate memory spaces and explicitly declare what memory they will be sharing.Exit-Block extends previous approaches to multithreaded programs in which all of memory is potentially shared.A key challenge is to minimize the number of schedules executed while still guaranteeing to cover all behaviors.Our approach relies on the fact that for a program following a mutual-exclusion locking discipline, enumerating possible orders of the synchronized regions of the program covers all possible behaviors of the program.This thesis presents ExitBlock and its correctness proof, describes its implementation in the Rivet virtual machine, and demonstrates its ability to detect errors in actual programs.
Author: Derek Bruening
Language: English
Subfield: Software
Field: Computer Science
Domain: Physical Sciences
Open Access status: green
OpenAlex ID: W2245219974
