Two-Phase Dynamic Analysis of Message-Passing Go Programs based on Vector Clocks

07/10/2018
by   Martin Sulzmann, et al.
0

Understanding the run-time behavior of concurrent programs is a challenging task. A popular approach is to establish a happens- before relation via vector clocks. Thus, we can identify bugs and per- formance bottlenecks, for example, by checking if two con icting events may happen concurrently. We employ a two-phase method to derive vector clock information for a wide range of concurrency features that includes all of the message-passing features in Go. The rst phase (instrumentation and tracing) yields a run-time trace that records all events related to message-passing concurrency that took place. The second phase (trace replay) is carried out o ine and replays the recorded traces to infer vector clock information. Trace replay operates on thread-local traces. Thus, we can observe behav- ior that might result from some alternative schedule. Our approach is not tied to any speci c language. We have built a prototype for the Go programming language and provide empirical evidence of the usefulness of our method.

READ FULL TEXT

page 1

page 2

page 3

page 4

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
08/26/2021

A Program Instrumentation for Prefix-Based Tracing in Message-Passing Concurrency

The execution of concurrent programs generally involves some degree of n...
research
04/29/2022

FRANCIS: Fast Reaction Algorithms for Network Coordination In Switches

Distributed protocols are widely used to support network functions such ...
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
09/09/2023

From Reversible Computation to Checkpoint-Based Rollback Recovery for Message-Passing Concurrent Programs

The reliability of concurrent and distributed systems often depends on s...
research
04/18/2018

On the Completeness of Verifying Message Passing Programs under Bounded Asynchrony

We address the problem of verifying message passing programs, defined as...
research
02/26/2021

Capturing High-level Nondeterminism in Concurrent Programs for Practical Concurrency Model Agnostic Record Replay

With concurrency being integral to most software systems, developers com...

Please sign up or login with your details

Forgot password? Click here to reset