2018/07/10 by Martin Sulzmann, Sulzmann, Martin, Kai Stadtmueller +1 · 1 citation
Computer Science · #Advanced Software Engineering Methodologies #FOS: Computer and information sciences #Parallel Computing and Optimization Techniques #Programming Languages (cs.PL) #Real-Time Systems Scheduling
paper · pdf · doi:10.48550/arxiv.1807.03585
openalex publication_date 2018/07/10 · openalex created_date 2025/10/10 · openalex updated_date 2026/07/28
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.