Algorithmic verification of asynchronous programs
-
Published:2012-04
Issue:1
Volume:34
Page:1-48
-
ISSN:0164-0925
-
Container-title:ACM Transactions on Programming Languages and Systems
-
language:en
-
Short-container-title:ACM Trans. Program. Lang. Syst.
Author:
Ganty Pierre1,
Majumdar Rupak2
Affiliation:
1. IMDEA Software, Madrid, Spain
2. MPI-SWS, Kaiserslautern, Germany
Abstract
Asynchronous programming is a ubiquitous systems programming idiom for managing concurrent interactions with the environment. In this style, instead of waiting for time-consuming operations to complete, the programmer makes a non-blocking call to the operation and posts a callback task to a task buffer that is executed later when the time-consuming operation completes. A cooperative scheduler mediates the interaction by picking and executing callback tasks from the task buffer to completion (and these callbacks can post further callbacks to be executed later). Writing correct asynchronous programs is hard because the use of callbacks, while efficient, obscures program control flow.
We provide a formal model underlying asynchronous programs and study verification problems for this model. We show that the safety verification problem for finite-data asynchronous programs is expspace-complete. We show that liveness verification for finite-data asynchronous programs is decidable and polynomial-time equivalent to Petri net reachability. Decidability is not obvious, since even if the data is finite-state, asynchronous programs constitute infinite-state transition systems: both the program stack for an executing task and the task buffer of pending calls to tasks can be potentially unbounded.
Our main technical constructions are polynomial-time, semantics-preserving reductions from asynchronous programs to Petri nets and back. The first reduction allows the use of algorithmic techniques on Petri nets for the verification of asynchronous programs, and the second allows lower bounds on Petri nets to apply also to asynchronous programs.
We also study several extensions to the basic models of asynchronous programs that are inspired by additional capabilities provided by implementations of asynchronous libraries and classify the decidability and undecidability of verification questions on these extensions.
Funder
Seventh Framework Programme
Ministerio de Ciencia e Innovación
Division of Computing and Communication Foundations
Comunidad de Madrid's Program PROMETIDOS-CM
Division of Computer and Network Systems
Publisher
Association for Computing Machinery (ACM)
Cited by
49 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献