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 条
  • [1] Multi-threaded testing with AOP is easy, and it finds bugs!
    Copty, S
    Ur, S
    EURO-PAR 2005 PARALLEL PROCESSING, PROCEEDINGS, 2005, 3648 : 740 - 749
  • [2] Implementation of a Multi-threaded Framework for Large-scale Scientific Applications
    Sexton-Kennedy, E.
    Gartung, Patrick
    Jones, C. D.
    Lange, David
    16TH INTERNATIONAL WORKSHOP ON ADVANCED COMPUTING AND ANALYSIS TECHNIQUES IN PHYSICS RESEARCH (ACAT2014), 2015, 608
  • [3] The impact of concurrency gains on the analysis and control of multi-threaded Internet services
    Jamjoom, H
    Chou, CT
    Shin, KG
    IEEE INFOCOM 2004: THE CONFERENCE ON COMPUTER COMMUNICATIONS, VOLS 1-4, PROCEEDINGS, 2004, : 827 - 837
  • [4] A formal study of slicing for multi-threaded programs with JVM concurrency primitives
    Hatcliff, J
    Corbett, J
    Dwyer, M
    Sokolowski, S
    Zheng, HJ
    STATIC ANALYSIS, 1999, 1694 : 1 - 18
  • [5] A Framework for Systematic Testing of Multi-threaded Applications
    Florian, Mihai
    2011 IEEE 17TH PACIFIC RIM INTERNATIONAL SYMPOSIUM ON DEPENDABLE COMPUTING (PRDC), 2011, : 278 - 279
  • [6] Analysing Dataflow Multi-Threaded Applications at Runtime
    Mazumdar, Somnath
    Scionti, Alberto
    2017 7TH IEEE INTERNATIONAL ADVANCE COMPUTING CONFERENCE (IACC), 2017, : 744 - 749
  • [7] A SIMT Analyzer for Multi-Threaded CPU Applications
    Alawneh, Ahmad
    Khairy, Mahmoud
    Rogers, Timothy G.
    2022 IEEE INTERNATIONAL SYMPOSIUM ON PERFORMANCE ANALYSIS OF SYSTEMS AND SOFTWARE (ISPASS 2022), 2022, : 248 - 250
  • [8] BarrierPoint: Sampled Simulation of Multi-Threaded Applications
    Carlson, Trevor E.
    Heirman, Wim
    Van Craeynest, Kenzo
    Eeckhout, Lieven
    2014 IEEE INTERNATIONAL SYMPOSIUM ON PERFORMANCE ANALYSIS OF SYSTEMS AND SOFTWARE (ISPASS), 2014, : 2 - 12
  • [9] Estimating Computational Requirements in Multi-Threaded Applications
    Perez, Juan F.
    Casale, Giuliano
    Pacheco-Sanchez, Sergio
    IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2015, 41 (03) : 264 - 278
  • [10] Workshop on Multi-Threaded Architectures and Applications - MTAAP
    DeRose, Luiz
    2012 IEEE 26TH INTERNATIONAL PARALLEL AND DISTRIBUTED PROCESSING SYMPOSIUM WORKSHOPS & PHD FORUM (IPDPSW), 2012, : 1571 - 1571