Finding Non-Terminating Executions in Distributed Asynchronous Programs

Programming distributed and reactive asynchronous systems is complex due to the lack of synchronization between concurrently executing tasks, and arbitrary delay of message-based communication. As even simple programming mistakes have the capability to introduce divergent behavior, a key liveness property is eventual quiescence: for any finite number of external stimuli (e.g., client-generated events), only a finite number of internal messages are ever created. In this work we propose a practical three-step reduction-based approach for detecting divergent executions in asynchronous programs. As a first step, we give a code-to-code translation reducing divergence of an asynchronous program P to completed state-reachability--i.e., reachability to a given state with no pending asynchronous tasks--of a polynomially-sized asynchronous program P′. In the second step, we give a code-to-code translation under-approximating completed state-reachability of P′ by state-reachability of a polynomially-sized recursive sequential program P′′(K), for the given analysis parameter K ∈ N. Following Emmi et al. [8]'s delay-bounding approach, P′′(K) encodes a subset of P′'s, and thus of P's, behaviors by limiting scheduling nondeterminism. As K is increased, more possibly divergent behaviors of P are considered, and in the limit as K approaches infinity, our reduction is complete for programs with finite data domains. As the final step we give the resulting state-reachability query to an off-the-shelf SMT-based sequential program verification tool. We demonstrate the feasibility of our approach by implementing a prototype analysis tool called Alive, which detects divergent executions in several hand-coded variations of textbook distributed algorithms. As far as we are aware, our easy-to-implement prototype is the first tool which automatically detects divergence for distributed and reactive asynchronous programs.

Data and Resources

Additional Info

Field Value
Source https://hal.science/hal-00702306
Author Emmi, Michael, Lal, Akash
Maintainer CCSD
Last Updated May 16, 2026, 14:55 (UTC)
Created May 16, 2026, 14:55 (UTC)
Identifier hal-00702306
Language en
Rights https://about.hal.science/hal-authorisation-v1/
contributor Laboratoire d'informatique Algorithmique : Fondements et Applications (LIAFA) ; Université Paris Diderot - Paris 7 (UPD7)-Centre National de la Recherche Scientifique (CNRS)
creator Emmi, Michael
date 2012-05-30T00:00:00
harvest_object_id 5fcd8381-94ac-424d-b340-0731784950d7
harvest_source_id 3374d638-d20b-4672-ba96-a23232d55657
harvest_source_title test moissonnage SELUNE
metadata_modified 2025-11-11T00:00:00
set_spec type:REPORT