Skip to main content

Trace-Based Run-Time Analysis of Message-Passing Go Programs

  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 10629))

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 more 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.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Fidge, C.J.: Timestamps in message-passing systems that preserve the partial ordering 10(1), 56–66 (1987)

    Google Scholar 

  2. Flanagan, C., Freund, S.N.: Fasttrack: Efficient and precise dynamic race detection. In: Proc. of PLDI 2009, pp. 121–133. ACM (2009)

    Google Scholar 

  3. Garg, V.K., Skawratananond, C., Mittal, N.: Timestamping messages and events in a distributed system using synchronous communication. Distributed Computing 19(5–6), 387–402 (2007)

    Article  MATH  Google Scholar 

  4. The Go programming language. https://golang.org/

  5. Trace-based run-time analysis of message-passing Go programs. https://github.com/KaiSta/gopherlyzer-GoScout

  6. Hoare, C.A.R.: Communicating sequential processes. Commun. ACM 21(8), 666–677 (1978)

    Article  MATH  Google Scholar 

  7. Lamport, L.: Time, clocks, and the ordering of events in a distributed system. Communications of the ACM 21(7), 558–565 (1978)

    Article  MATH  Google Scholar 

  8. Mattern, F. : Virtual time and global states of distributed systems. In: Parallel and Distributed Algorithms, pp. 215–226. North-Holland (1989)

    Google Scholar 

  9. Pozniansky, E., Schuster, A.: Multirace: efficient on-the-fly data race detection in multithreaded C++ programs. Concurrency and Computation: Practice and Experience 19(3), 327–340 (2007)

    Article  Google Scholar 

  10. Tasharofi, S.: Efficient testing of actor programs with non-deterministic behaviors. PhD thesis, University of Illinois at Urbana-Champaign (2013)

    Google Scholar 

  11. Vo, A. : Scalable Formal Dynamic Verification of Mpi Programs Through Distributed Causality Tracking. PhD thesis, University of Utah (2011), AAI3454168

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Martin Sulzmann .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2017 Springer International Publishing AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Sulzmann, M., Stadtmüller, K. (2017). Trace-Based Run-Time Analysis of Message-Passing Go Programs. In: Strichman, O., Tzoref-Brill, R. (eds) Hardware and Software: Verification and Testing. HVC 2017. Lecture Notes in Computer Science(), vol 10629. Springer, Cham. https://doi.org/10.1007/978-3-319-70389-3_6

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-70389-3_6

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-70388-6

  • Online ISBN: 978-3-319-70389-3

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics