Efficient Scalable Thread-Safety-Violation Detection Finding thousands of concurrency bugs during testing

被引:38
|
作者
Li, Guangpu [1 ]
Lu, Shan [1 ]
Musuvathi, Madanlal [2 ]
Nath, Suman [2 ]
Padhye, Rohan [3 ]
机构
[1] Univ Chicago, Chicago, IL 60637 USA
[2] Microsoft Res, Redmond, WA USA
[3] Univ Calif Berkeley, Berkeley, CA 94720 USA
关键词
thread-safety violation; concurrency bugs; debugging; reliability; scalability; DATA RACE DETECTION;
D O I
10.1145/3341301.3359638
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Concurrency bugs are hard to find, reproduce, and debug. They often escape rigorous in-house testing, but result in large-scale outages in production. Existing concurrency-bug detection techniques unfortunately cannot be part of industry's integrated build and test environment due to some open challenges: how to handle code developed by thousands of engineering teams that uses a wide variety of synchronization mechanisms, how to report little/no false positives, and how to avoid excessive testing resource consumption. This paper presents TSVD, a thread-safety violation detector that addresses these challenges through a new design point in the domain of active testing. Unlike previous techniques that inject delays randomly or employ expensive synchronization analysis, TSVD uses lightweight monitoring of the calling behaviors of thread-unsafe methods, not any synchronization operations, to dynamically identify bug suspects. It then injects corresponding delays to drive the program towards thread-unsafe behaviors, actively learns from its ability or inability to do so, and persists its learning from one test run to the next. TSVD is deployed and regularly used in Microsoft and it has already found over 1000 thread-safety violations from thousands of projects. It detects more bugs than state-of-the-art techniques, mostly with just one test run.
引用
收藏
页码:162 / 180
页数:19
相关论文
empty
未找到相关数据