Two-Phase Dynamic Analysis of Message-Passing Go Programs based on Vector Clocks
Martin Sulzmann, Kai Stadtmueller

TL;DR
This paper presents a two-phase, language-agnostic method for analyzing concurrent Go programs using vector clocks, enabling detailed runtime behavior understanding and bug detection.
Contribution
It introduces a novel two-phase approach combining runtime tracing and offline trace replay to derive vector clocks for message-passing concurrency in Go.
Findings
Effective in identifying concurrency bugs
Provides detailed vector clock information
Applicable to a wide range of concurrency features
Abstract
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Real-Time Systems Scheduling · Advanced Software Engineering Methodologies
