Computing Race Variants in Message-Passing Concurrent Programming with Selective Receives

10/06/2022
by   Germán Vidal, et al.
0

Message-passing concurrency is a popular computation model that underlies several programming languages like, e.g., Erlang, Akka, and (to some extent) Go and Rust. In particular, we consider a message-passing concurrent language with dynamic process spawning and selective receives, i.e., where messages can only be consumed by the target process when they match a specific constraint (e.g., the case of Erlang). In this work, we introduce a notion of trace that can be seen as an abstraction of a class of causally equivalent executions (i.e., which produce the same outcome). We then show that execution traces can be used to identify message races. We provide constructive definitions to compute message races as well as to produce so-called race variants, which can then be used to drive new executions which are not causally equivalent to the previous ones. This is an essential ingredient of state-space exploration techniques for program verification.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
02/23/2018

Gossiping in Message-Passing Systems

We study the gossip problem in a message-passing environment: When a pro...
research
04/13/2023

Communicating Actor Automata – Modelling Erlang Processes as Communicating Machines

Brand and Zafiropulo's notion of Communicating Finite-State Machines (CF...
research
04/02/2022

A Study of Real-World Data Races in Golang

The concurrent programming literature is rich with tools and techniques ...
research
04/03/2020

Bounded verification of message-passing concurrency in Go using Promela and Spin

This paper describes a static verification framework for the message-pas...
research
12/23/2021

A Lightweight Approach to Computing Message Races with an Application to Causal-Consistent Reversible Debugging

This paper presents a lightweight formalism (a trace) to model message-p...
research
09/05/2017

Trace-Based Run-time Analysis of Message-Passing Go Programs

We consider the task of analyzing message-passing programs by observing ...
research
12/14/2018

Mastering Concurrent Computing Through Sequential Thinking: A Half-century Evolution

Concurrency, the art of doing many things at the same time is slowly bec...

Please sign up or login with your details

Forgot password? Click here to reset