Trace-Based Run-time Analysis of Message-Passing Go Programs
Martin Sulzmann, Kai Stadtm\"uller

TL;DR
This paper presents a simple, low-overhead, library-based tracing method for analyzing message-passing Go programs at runtime, enabling bug detection and inference of alternative communications.
Contribution
A novel library-based tracing approach for message-passing programs that reduces overhead and captures uncommitted events for improved bug detection.
Findings
Lower runtime overhead compared to vector clocks
Able to trace uncommitted events and infer alternative communications
Successfully implemented in Go with practical examples
Abstract
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.
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
TopicsFormal Methods in Verification · Real-Time Systems Scheduling · Software Testing and Debugging Techniques
