Detecting and reproducing error-code propagation bugs in MPI implementations

Detecting and reproducing error-code propagation bugs in MPI implementations
复制标题

DOI:
10.1145/3332466.3374515
复制
发表时间:
2020-02
期刊:
Proceedings of the 25th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
影响因子:
--
通讯作者:
Daniel DeFreez;Antara Bhowmick;I. Laguna;Cindy Rubio-González
Daniel DeFreez;Antara Bhowmick;I. Laguna;Cindy Rubio-González
中科院分区:
其他
文献类型:
--
作者:
Daniel DeFreez;Antara Bhowmick;I. Laguna;Cindy Rubio-González

文献摘要

被引文献

相似文献

我们提出了一种方法来自动检测和重现MPI实现中的错误代码传播错误。具体来说,我们结合联合收割机静态分析和程序修复的错误检测,并应用故障注入重现错误传播的C语言编写的MPI库中发现的错误。我们展示了我们的方法上的MPICH库,MPI的最流行的实现之一,和基于MPICH的实现MVAPICH,发现447个以前未知的错误。我们发现,这些错误中有31个会导致程序崩溃,60%的MPICH测试套件容易因传播错误代码失败而崩溃。此外,95个bug会产生已动态确认的不良行为,导致测试失败,挂起进程,或者只是在到达用户应用程序之前丢弃错误代码。
We present an approach to automatically detect and reproduce error code propagation bugs in MPI implementations. Specifically, we combine static analysis and program repair for bug detection, and apply fault injection to reproduce error propagation bugs found in MPI libraries written in C. We demonstrate our approach on the MPICH library, one of the most popular implementations of MPI, and the MPICH-based implementation MVAPICH, uncovering 447 previously unknown bugs. We discovered that 31 of these bugs result in program crashes, and 60% of the MPICH test suite is susceptible to crashing due to failures to propagate error codes. Moreover, 95 bugs produce undesirable behavior that has been confirmed dynamically, causing tests to fail, hanging processes, or simply dropping error codes before reaching user applications.