RacerD: compositional static race detection

RacerD: compositional static race detection
复制标题

DOI:
10.1145/3276514
复制
发表时间:
2018-10
影响因子:
--
通讯作者:
Sam Blackshear;Nikos Gorogiannis;P. O'Hearn;Ilya Sergey
Sam Blackshear;Nikos Gorogiannis;P. O'Hearn;Ilya Sergey
中科院分区:
--
文献类型:
--
作者:
Sam Blackshear;Nikos Gorogiannis;P. O'Hearn;Ilya Sergey

文献摘要

被引文献

相似文献

自动静态检测数据是关于并发推理的最基本问题之一,我们提出了Racerd,这是一种静态的计划分析,用于检测Java程序中的数据竞赛,可以快速扩展到大型代码据我们所知,软件工程方案是第一个合成数据竞赛探测器,由于其组成性,它具有非平凡的精度和影响。与以前的静态竞赛探测器相比,对持续的集成生态系统的部署进行了持续的推理,其设计有利于报道高信心的错误。在Facebook上,它已经标记了开发人员在达到生产之前已解决的2500多个问题,这对于能够开发新代码和修复旧代码很重要:它有助于支持主要的Facebook Android应用程序的转换从单线程到多线程体系结构。
Automatic static detection of data races is one of the most basic problems in reasoning about concurrency. We present RacerD—a static program analysis for detecting data races in Java programs which is fast, can scale to large code, and has proven effective in an industrial software engineering scenario. To our knowledge, RacerD is the first inter-procedural, compositional data race detector which has been shown to have non-trivial precision and impact. Due to its compositionality, it can analyze code changes quickly, and this allows it to perform continuous reasoning about a large, rapidly changing codebase as part of deployment within a continuous integration ecosystem. In contrast to previous static race detectors, its design favors reporting high-confidence bugs over ensuring their absence. RacerD has been in deployment for over a year at Facebook, where it has flagged over 2500 issues that have been fixed by developers before reaching production. It has been important in enabling the development of new code as well as fixing old code: it helped support conversion of part of the main Facebook Android app from a single-threaded to a multi-threaded architecture. In this paper we describe RacerD’s design, implementation, deployment and impact.