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

09/05/2017
by   Martin Sulzmann, et al.
0

We consider the task of analyzing message-passing programs by observing their run-time behavior. We introduce a purely library-based instrumentation method to trace communication events during execution. A model of the dependencies among events can be constructed to identify potential bugs. Compared to the vector clock method, our approach is much simpler and has in general a significant lower run-time overhead. A further advantage is that we also trace events that could not commit. Thus, we can infer alternative communications. This provides the user with additional information to identify potential bugs. We have fully implemented our approach in the Go programming language and provide a number of examples to substantiate our claims.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
07/10/2018

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

Understanding the run-time behavior of concurrent programs is a challeng...
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
10/06/2022

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

Message-passing concurrency is a popular computation model that underlie...
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
12/14/2022

PSTMonitor: Monitor Synthesis from Probabilistic Session Types

We present PSTMonitor, a tool for the run-time verification of quantitat...
research
04/07/2018

Symbolic Reasoning for Automatic Signal Placement (Extended Version)

Explicit signaling between threads is a perennial cause of bugs in concu...

Please sign up or login with your details

Forgot password? Click here to reset