Back to Search Start Over

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

Authors :
Kai Stadtmüller
Martin Sulzmann
Source :
PPDP
Publication Year :
2018
Publisher :
ACM, 2018.

Abstract

Understanding the runtime 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 performance bottlenecks, for example, by checking if two conflicting 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 first phase (instrumentation and tracing) yields a runtime trace that records all events related to message-passing concurrency that took place. The second phase (trace replay) is carried out of fline and replays the recorded traces to infer vector clock information. Trace replay operates on thread-local traces. Thus, we can observe behavior that might result from some alternative schedule. Our approach is not tied to any specific language. We have built a prototype for the Go programming language and provide empirical evidence of the usefulness of our method.

Details

Database :
OpenAIRE
Journal :
Proceedings of the 20th International Symposium on Principles and Practice of Declarative Programming
Accession number :
edsair.doi...........5efd771f175d53b5df6942673dd78dd1
Full Text :
https://doi.org/10.1145/3236950.3236959