Automated verification of concurrent go programs via bounded model checking

被引:1
作者
Dilley, Nicolas [1 ]
Lange, Julien [2 ]
机构
[1] Univ Kent, Canterbury, England
[2] Royal Holloway Univ London, Egham, England
关键词
Go; Concurrency; Static verification; Behavioural types; Model checking;
D O I
10.1007/s10515-023-00391-z
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
The Go programming language offers a wide range of primitives to coordinate lightweight threads, e.g., channels, waitgroups, and mutexes-all of which may cause concurrency bugs. Static checkers that guarantee the absence of bugs are essential to help programmers avoid these costly errors before their code is executed. However existing tools either miss too many bugs or cannot handle large programs, and do not support programs that rely on statically unknown parameters that affect their concurrent structure (e.g., number of threads). To address these limitations, we propose a static checker for Go programs which relies on performing bounded model checking of their concurrent behaviours. In contrast to previous works, our approach deals with large codebases, supports programs that have statically unknown parameters, and is extensible to additional concurrency primitives. Our work includes a detailed presentation of the extraction algorithm from Go programs to models, an algorithm to automatically check programs with statically unknown parameters, and a large scale evaluation of our approach. The latter shows that our approach outperforms the state-of-the-art on 220 synthetic programs and 78 buggy programs adapted from existing codebases.
引用
收藏
页数:50
相关论文
共 49 条
  • [1] [Anonymous], 2021, Google: preload code
  • [2] [Anonymous], 2021, golang: TestRaceIssue12664_2 code
  • [3] [Anonymous], 2021, Kubernetes: GenerateNodeMap code
  • [4] [Anonymous], 2022, Snail007: Keys code
  • [5] [Anonymous], 2021, Kubernetes: Kubernetes (k8s)
  • [6] [Anonymous], 2021, golang: go Github project
  • [7] What's in a GitHub Star? Understanding Repository Starring Practices in a Social Coding Platform
    Borges, Hudson
    Valente, Marco Tulio
    [J]. JOURNAL OF SYSTEMS AND SOFTWARE, 2018, 146 : 112 - 129
  • [8] Castro David, 2019, Proceedings of the ACM on Programming Languages, V3, DOI 10.1145/3290342
  • [9] A Study of Real-World Data Races in Golang
    Chabbi, Milind
    Ramanathan, Murali Krishna
    [J]. PROCEEDINGS OF THE 43RD ACM SIGPLAN INTERNATIONAL CONFERENCE ON PROGRAMMING LANGUAGE DESIGN AND IMPLEMENTATION (PLDI '22), 2022, : 474 - 489
  • [10] A tool for checking ANSI-C programs
    Clarke, E
    Kroening, D
    Lerda, F
    [J]. TOOLS AND ALGORITHMS FOR THE CONSTRUCTION AND ANALYSIS OF SYSTEMS, PROCEEDINGS, 2004, 2988 : 168 - 176