Finding Complex Concurrency Bugs in Large Multi-Threaded Applications

被引:0
|
作者
Fonseca, Pedro
Li, Cheng
Rodrigues, Rodrigo
机构
关键词
Concurrency bugs; Latent bugs; Linearizability; Semantic bugs; LINEARIZABILITY; PROGRAMS;
D O I
暂无
中图分类号
TP3 [计算技术、计算机技术];
学科分类号
0812 ;
摘要
Parallel software is increasingly necessary to take advantage of multi-core architectures, but it is also prone to concurrency bugs which are particularly hard to avoid, find, and fix, since their occurrence depends on specific thread interleavings. In this paper we propose a concurrency bug detector that automatically identifies when an execution of a program triggers a concurrency bug. Unlike previous concurrency bug detectors, we are able to find two particularly hard classes of bugs. The first are bugs that manifest themselves by subtle violation of application semantics, such as returning an incorrect result. The second are latent bugs, which silently corrupt internal data structures, and are especially hard to detect because when these bugs are triggered they do not become immediately visible. PIKE detects these concurrency bugs by checking both the output and the internal state of the application for linearizability at the level of user requests. This paper presents this technique for finding concurrency bugs, its application in the context of a testing tool that systematically searches for such problems, and our experience in applying our approach to MySQL, a large-scale complex multi-threaded application. We were able to find several concurrency bugs in a stable version of the application, including subtle violations of application semantics, latent bugs, and incorrect error replies.
引用
收藏
页码:215 / 228
页数:14
相关论文
共 50 条
  • [31] Multi-Threaded Parallel I/O for OpenMP Applications
    Mehta, Kshitij
    Gabriel, Edgar
    INTERNATIONAL JOURNAL OF PARALLEL PROGRAMMING, 2015, 43 (02) : 286 - 309
  • [32] A shared-variable concurrency analysis of multi-threaded object-oriented programs
    de Boer, F. S.
    THEORETICAL COMPUTER SCIENCE, 2009, 410 (2-3) : 128 - 141
  • [33] An efficient multi-level trace toolkit for multi-threaded applications
    Danjean, V
    Namyst, R
    Wacrenier, PA
    EURO-PAR 2005 PARALLEL PROCESSING, PROCEEDINGS, 2005, 3648 : 166 - 175
  • [34] On visualizing large multidimensional datasets with a multi-threaded radial approach
    Liu, Tianyang
    Bouali, Fatma
    Venturini, Gilles
    DISTRIBUTED AND PARALLEL DATABASES, 2016, 34 (03) : 321 - 345
  • [35] Performance and energy metrics for multi-threaded applications on DVFS processors
    Rauber, Thomas
    Ruenger, Gudula
    Stachowski, Matthias
    SUSTAINABLE COMPUTING-INFORMATICS & SYSTEMS, 2018, 17 : 55 - 68
  • [36] On visualizing large multidimensional datasets with a multi-threaded radial approach
    Tianyang Liu
    Fatma Bouali
    Gilles Venturini
    Distributed and Parallel Databases, 2016, 34 : 321 - 345
  • [37] A sound and complete shared-variable concurrency model for multi-threaded Java']Java programs
    de Boer, F. S.
    Formal Methods for Open Object-Based Distributed Systems, Proceedings, 2007, 4468 : 252 - 268
  • [38] A scalability prediction approach for multi-threaded applications on manycore processors
    Bai, Xiuxiu
    Wang, Endong
    Dong, Xiaoshe
    Zhang, Xingjun
    JOURNAL OF SUPERCOMPUTING, 2015, 71 (11): : 4072 - 4094
  • [39] Fault Detection in Multi-Threaded C++ Server Applications
    Muehlenfeld, Arndt
    Wotawa, Franz
    ELECTRONIC NOTES IN THEORETICAL COMPUTER SCIENCE, 2007, 174 (09) : 5 - 22
  • [40] Multi-Threaded Graph Partitioning
    LaSalle, Dominique
    Karypis, George
    IEEE 27TH INTERNATIONAL PARALLEL AND DISTRIBUTED PROCESSING SYMPOSIUM (IPDPS 2013), 2013, : 225 - 236