Automatically detecting and fixing concurrency bugs in go software systems
Automatically detecting and fixing concurrency bugs in go software systems
复制标题
自动检测并修复Go软件系统中的并发错误
DOI:
10.1145/3445814.3446756
复制
发表时间:
2021
期刊:
影响因子:
--
通讯作者:
Song, Linhai
中科院分区:
文献类型:
--
作者:
Liu, Ziheng;Zhu, Shuofei;Qin, Boqin;Chen, Hao;Song, Linhai
Go is a statically typed programming language designed for efficient and reliable concurrent programming. For this purpose, Go provides lightweight goroutines and recommends passing messages using channels as a less error-prone means of thread communication. Go has become increasingly popular in recent years and has been adopted to build many important infrastructure software systems. However, a recent empirical study shows that concurrency bugs, especially those due to misuse of channels, exist widely in Go. These bugs severely hurt the reliability of Go concurrent systems. To fight Go concurrency bugs caused by misuse of channels, this paper proposes a static concurrency bug detection system, GCatch, and an automated concurrency bug fixing system, GFix. After disentangling an input Go program, GCatch models the complex channel operations in Go using a novel constraint system and applies a constraint solver to identify blocking bugs. GFix automatically patches blocking bugs detected by GCatch using Go’s channel-related language features. We apply GCatch and GFix to 21 popular Go applications, including Docker, Kubernetes, and gRPC. In total, GCatch finds 149 previously unknown blocking bugs due to misuse of channels and GFix successfully fixes 124 of them. We have reported all detected bugs and generated patches to developers. So far, developers have fixed 125 blocking misuse-of-channel bugs based on our reporting. Among them, 87 bugs are fixed by applying GFix’s patches directly.
登录
查看更多内容
DOI:
10.32388/a6gmkq
发表时间:
2020-02
期刊:
Surgery, gynecology & obstetrics
影响因子:
--
作者:
通讯作者:
--
DOI:
10.1145/3009837.3009847
发表时间:
2016
期刊:
Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages
影响因子:
--
作者:
J. Lange;Nicholas Ng;Bernardo Toninho;N. Yoshida
通讯作者:
N. Yoshida
DOI:
--
发表时间:
2020
期刊:
European Conference on Object-Oriented Programming
影响因子:
--
作者:
Julia Gabet;N. Yoshida
通讯作者:
N. Yoshida
DOI:
10.1007/978-3-642-33296-8_15
发表时间:
2012
期刊:
Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation
影响因子:
--
作者:
Subodh Sharma;G. Gopalakrishnan;G. Bronevetsky
通讯作者:
G. Bronevetsky
DOI:
--
发表时间:
2019
期刊:
ACM-SIGPLAN Symposium on Programming Language Design and Implementation
影响因子:
--
作者:
Guangpu Li;Haopeng Liu;Xianglan Chen;Haryadi S. Gunawi;Shan Lu
通讯作者:
Shan Lu