Causality-Guided Adaptive Interventional Debugging

Causality-Guided Adaptive Interventional Debugging
复制标题

DOI:
10.1145/3318464.3389694
复制
发表时间:
2020-03
期刊:
Proceedings of the 2020 ACM SIGMOD International Conference on Management of Data
影响因子:
--
通讯作者:
Anna Fariha;Suman Nath;A. Meliou
Anna Fariha;Suman Nath;A. Meliou
中科院分区:
其他
文献类型:
--
作者:
Anna Fariha;Suman Nath;A. Meliou

文献摘要

被引文献

相似文献

运行时不确定性是现代数据库应用程序中的一个事实。以前的研究表明,不确定性可能会导致应用程序间歇性崩溃、变得无响应或经历数据损坏。我们提出了自适应介入调试(AID)来调试这种间歇性故障。AID以一种新颖的方式组合了现有的统计调试、原因分析、故障注入和组测试技术,以(1)查明应用程序间歇性故障的根本原因,(2)生成根本原因如何触发故障的解释。AID的工作方式是首先确定一组与故障密切相关的运行时行为(称为谓词)。然后,它利用谓词的时间属性来(过)逼近它们的因果关系。最后,它使用故障注入对谓词执行一系列干预,并发现它们真正的因果关系。这使AID能够确定故障的真正根本原因及其因果关系。我们从理论上分析了AID收敛到辨识的速度。我们使用六个在特定输入下间歇性失败的真实应用程序来评估AID。在每种情况下,AID都能够识别根本原因并解释根本原因如何触发故障,这比组测试快得多,也比统计调试更准确。我们还使用许多已知根本原因的合成应用程序对AID进行了评估,并确认其益处也适用于它们。
Runtime nondeterminism is a fact of life in modern database applications. Previous research has shown that nondeterminism can cause applications to intermittently crash, become unresponsive, or experience data corruption. We propose Adaptive Interventional Debugging (AID) for debugging such intermittent failures. AID combines existing statistical debugging, causal analysis, fault injection, and group testing techniques in a novel way to (1) pinpoint the root cause of an application's intermittent failure and (2) generate an explanation of how the root cause triggers the failure. AID works by first identifying a set of runtime behaviors (called predicates) that are strongly correlated to the failure. It then utilizes temporal properties of the predicates to (over)-approximate their causal relationships. Finally, it uses fault injection to execute a sequence of interventions on the predicates and discover their true causal relationships. This enables AID to identify the true root cause and its causal relationship to the failure. We theoretically analyze how fast AID can converge to the identification. We evaluate AID with six real-world applications that intermittently fail under specific inputs. In each case, AID was able to identify the root cause and explain how the root cause triggered the failure, much faster than group testing and more precisely than statistical debugging. We also evaluate AID with many synthetically generated applications with known root causes and confirm that the benefits also hold for them.