Detecting Blocking Errors in Go Programs using Localized Abstract Interpretation

Oskar Haarklou Veileborg, Georgian-Vlad Saioc, Anders Møller

Research output: Contribution to book/anthology/report/proceedingArticle in proceedingsResearchpeer-review

Abstract

Channel-based concurrency is a widely used alternative to shared-memory concurrency but is difficult to use correctly. Common programming errors may result in blocked threads that wait indefinitely. Recent work exposes this as a considerable problem in Go programs and shows that many such errors can be detected automatically using SMT encoding and dynamic analysis techniques. In this paper, we present an alternative approach to detect such errors based on abstract interpretation. To curb the large state spaces of real-world multi-threaded programs, our static program analysis leverages standard pre-analyses to divide the given program into individually analyzable fragments. Experimental results on 6 large real-world Go programs show that the abstract interpretation achieves good scalability and finds 104 blocking errors that are missed by the state-of-the-art tool GCatch.

Original languageDanish
Title of host publicationiWOAR 2022 - 7th International Workshop on Sensor-Based Activity Recognition and Artificial Intelligence, Proceedings
Place of publicationNew York
PublisherAssociation for Computing Machinery
Publication dateJan 2023
Pages1-12
Article number32
ISBN (Print)978-1-4503-9475-8
ISBN (Electronic)9781450396240
DOIs
Publication statusPublished - Jan 2023
Event37th IEEE/ACM International Conference on Automated Software Engineering -
Duration: 10 Oct 2022 → …

Conference

Conference37th IEEE/ACM International Conference on Automated Software Engineering
Period10/10/2022 → …

Keywords

  • Channels
  • Concurrency
  • Static Program Analysis

Cite this