Back to Search
Start Over
Two-Phase Dynamic Analysis of Message-Passing Go Programs Based on Vector Clocks
- 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.
- Subjects :
- Schedule (computer science)
Relation (database)
Computer science
Programming language
Vector clock
Concurrency
Message passing
020207 software engineering
02 engineering and technology
Tracing
computer.software_genre
0202 electrical engineering, electronic engineering, information engineering
020201 artificial intelligence & image processing
Instrumentation (computer programming)
computer
TRACE (psycholinguistics)
Subjects
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