BINGO: Pinpointing Concurrency Bugs in Go via Binary

Chongxin Zhong,Qidong Zhao,Xu Liu

arxiv(2022)

引用 0|浏览6
暂无评分
摘要
Golang (also known as Go for short) has become popular in building concurrency programs in distributed systems. As the unique features, Go employs lightweight Goroutines to support highly parallelism in user space. Moreover, Go leverages channels to enable explicit communication among threads. However, recent studies show that concurrency bugs are not uncommon in Go applications. Pinpointing these concurrency bugs in real Go applications is both important and challenging. Existing approaches are mostly based on compiler-aided static or dynamic analysis, which have two limitations. First, existing approaches require the availability and recompilation of the source code, which work well on testing rather than production environments with no source code available for both applications and external libraries. Second, existing approaches work on pure Go code bases only, not programs mixed with Go and other languages. To address these limitations, we develop BINGO, the first tool to identify concurrency bugs in Go applications via dynamic binary analysis. BINGO correlates binary execution with Go semantics and employs novel bug detection algorithms. BINGO is an end-to-end tool that is ready for deployment in the production environment with no modification on source code, compilers, and runtimes in the Go eco-system. Our experiments show that BINGO has a high coverage of concurrency bugs with no false positives. We are able to use BINGO to identify concurrency bugs in real applications with moderate overhead.
更多
查看译文
关键词
pinpointing concurrency bugs,binary analysis
AI 理解论文
溯源树
样例
生成溯源树,研究论文发展脉络
Chat Paper
正在生成论文摘要