pith. sign in

arxiv: 1807.03585 · v2 · pith:Z4MYFKADnew · submitted 2018-07-10 · 💻 cs.PL

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

classification 💻 cs.PL
keywords vectormessage-passingtraceapproachclockclocksconcurrencyevents
0
0 comments X
read the original 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 language. We have built a prototype for the Go programming language and provide empirical evidence of the usefulness of our method.

This paper has not been read by Pith yet.

discussion (0)

Sign in with ORCID, Apple, or X to comment. Anyone can read and Pith papers without signing in.