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 条
  • [41] Clustering the heap in multi-threaded applications for improved garbage collection
    Cohen, Myra
    Kooi, Shiu Beng
    Srisa-An, Witawas
    GECCO 2006: GENETIC AND EVOLUTIONARY COMPUTATION CONFERENCE, VOL 1 AND 2, 2006, : 1901 - +
  • [42] Feedback-based resource management for multi-threaded applications
    Alessandro V. Papadopoulos
    Kunal Agrawal
    Enrico Bini
    Sanjoy Baruah
    Real-Time Systems, 2023, 59 : 35 - 68
  • [43] Testing Multi-Threaded Applications Using Answer Set Programming
    Xue, Xiaozhen
    Siami-Namini, Sima
    Namin, Akbar Siami
    INTERNATIONAL JOURNAL OF SOFTWARE ENGINEERING AND KNOWLEDGE ENGINEERING, 2018, 28 (08) : 1151 - 1175
  • [44] A multi-threaded asynchronous language
    Paulino, H
    Marques, P
    Lopes, L
    Vasconcelos, V
    Silva, F
    PARALLEL COMPUTING TECHNOLOGIES, PROCEEDINGS, 2003, 2763 : 316 - 323
  • [45] A multi-threaded version of MCFM
    John M. Campbell
    R. Keith Ellis
    Walter T. Giele
    The European Physical Journal C, 2015, 75
  • [46] Multi-Threaded Message Dispatcher Framework for Mission Critical Applications
    Marginean, Marcel-Titus
    Lu, Chao
    2016 IEEE/ACIS 14TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING RESEARCH, MANAGEMENT AND APPLICATIONS (SERA), 2016, : 83 - 89
  • [47] Performance Analysis of Multi-threaded Applications in NUMA Multicore Processors
    Fang, Juan
    Fan, Qing-Wen
    Hao, Xiao-Ting
    Cai, Min
    Song, Shu-Ying
    Li, Bin
    2015 INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING AND INFORMATION SYSTEM (SEIS 2015), 2015, : 257 - 262
  • [48] Feedback-based resource management for multi-threaded applications
    Papadopoulos, Alessandro, V
    Agrawal, Kunal
    Bini, Enrico
    Baruah, Sanjoy
    REAL-TIME SYSTEMS, 2023, 59 (01) : 35 - 68
  • [49] Bottle Graphs: Visualizing Scalability Bottlenecks in Multi-Threaded Applications
    Du Bois, Kristof
    Sartor, Jennifer B.
    Eyerman, Stijn
    Eeckhout, Lieven
    ACM SIGPLAN NOTICES, 2013, 48 (10) : 355 - 371
  • [50] A multi-threaded version of MCFM
    Campbell, John M.
    Ellis, R. Keith
    Giele, Walter T.
    EUROPEAN PHYSICAL JOURNAL C, 2015, 75 (06):