×

抽象和挖掘跟踪以解释并发错误。 (英语) Zbl 1380.68107号

摘要:我们提出了一种基于自动挖掘的方法来解释并发错误。我们使用一种称为序列模式挖掘识别对多线程程序共享内存的并发读写访问的有问题序列。我们的技术不依赖于特定于一种并发错误的任何特征,因此为并发错误解释提供了一个通用框架。在我们的方法中,给定一组并发执行跟踪,我们首先挖掘失败跟踪中经常出现的序列,然后根据它们在通过跟踪中出现的次数对它们进行排序。我们将仅在故障跟踪中频繁发生的高级别事件序列视为系统故障的解释,因为它们可以在执行跟踪中揭示其原因。由于序列模式挖掘的可扩展性受到跟踪长度的限制,我们提出了一种抽象技术,该技术以引入虚假信息为代价缩短了跟踪解释。随后的过滤步骤可以消除虚假和误导性的解释,帮助程序员专注于故障的可能原因。我们使用大量案例研究来验证我们的方法,包括合成错误和真实错误。

MSC公司:

68甲19 其他编程范式(面向对象、顺序、并发、自动等)
68问题85 并发和分布式计算的模型和方法(进程代数、互模拟、转换网等)
68T05年 人工智能中的学习和自适应系统
PDF格式BibTeX公司 XML格式引用
全文: DOI程序

参考文献:

[1] http://bzip2smp.sourceforge.net/,(bzip2smp 1.0)。2015年9月访问
[2] Clarke EM,Grumberg O,Jha S,Lu Y,Veith H(2000)反例引导的抽象精化。加拿大皇家海军第1855章第154-169节·Zbl 0974.68517号
[3] Delgado N,Gates AQ,Roach S(2004)运行时软件故障监测工具的分类和目录。IEEE Trans Softw Eng(TSE)30(12):859-872·doi:10.10109/TSE.2004.91
[4] Elmas T、Qadeer S、Tasiran S(2010)《金发姑娘:一个竞赛软件Java运行时》。通信ACM 53(11):85-92·数字对象标识代码:10.1145/1839676.1839698
[5] Engler DR,Ashcraft K(2003)RacerX:有效、静态检测比赛条件和死锁。In:操作系统原理(SOSP)研讨会,ACM 2003,第237-252页
[6] Erickson J、Musuvathi M、Burckhardt S、Olynyk K(2010)《内核的有效数据空间检测》。In:USENIX操作系统设计与实现(OSDI)研讨会,USENIX2010年协会,第151-162页
[7] Flanagan C,Freund SN(2010)FastTrack:高效精确的动态比赛检测。通信ACM 53(11):93-101·doi:10.1145/1839676.1839699
[8] Flanagan C,Qadeer S(2003)原子性的类型和效果系统。收录:PLDI,ACM 2003,第338-349页
[9] Fleming SD、Kraemer E、Stiewalt REK、Xie S、Dillon LK(2008)《学生并发软件纠正性维护策略研究》。In:软件工程国际会议(ICSE),ACM 2008,第759-768页
[10] Hammer C、Dolby J、Vaziri M、Tip F(2008)《原子序列性违规的动态检测》。In:软件工程国际会议(ICSE),ACM 2008,第231-240页
[11] Herlihy M,Shavit N(2008)多处理机编程的艺术。伯灵顿摩根考夫曼
[12] LeBlanc TJ,Mellor-Crummey JM(1987)使用即时回放调试并行程序。IEEE传输计算36(4):471-482·doi:10.1109/TC.1987.1676929
[13] Leue S,Tabaei-Befrouei M(2012)《异常检测反例解释》。In:模型检查和软件验证(SPIN),2012年
[14] Leue S,Tabaei-Befrouei M(2013)挖掘序列模式以解释并发反例。In:模型检查和软件验证(SPIN),2013年
[15] Lewis D(2001)《反事实》。Wiley-Blackwell,纽约·Zbl 0989.03003号
[16] Lu S,Jiang W,Zhou Y(2007)交错覆盖标准研究。In:Foundations of software engineering(FSE),ESEC-FSE Companion,ACM 2007,pp 533-536
[17] Lu S,Park S,Seo E,Zhou Y(2008)从错误中学习:对真实世界并发错误特征的综合研究。收录于:ACM Sigplan Notices,ACM 2008,第43卷,第329-339页·Zbl 0974.68517号
[18] Lu S,Tucek J,Qin F,Zhou Y(2006)AVIO:通过访问交织不变量检测原子性冲突。In:编程语言和操作系统(ASPLOS)的体系结构支持,2006年
[19] Lucia B,Ceze L(2009)发现上下文感知通信图的并发错误。在:微体系结构研讨会(MICRO),ACM 2009,第553-563页
[20] Mabroukeh NR,Ezeife CI(2010)序列模式挖掘算法分类。ACM计算概况43(1):3:1-3:41。doi:10.145/1824795.1824798·数字对象标识代码:10.1145/1824795.1824798
[21] Mazurkiewicz AW(1986)跟踪理论。内容:Petri网:中心模型及其属性,Petri网的进展,LNCS,Springer,第255卷,第279-324页
[22] Musuvathi M,Qadeer S(2006)CHESS:并发软件的系统压力测试。In:基于逻辑的程序合成与转换(LOPSTR),LNCS,Springer,第4407卷,第15-16页
[23] Musuvathi M,Qadeer S(2007)多线程程序系统测试的迭代上下文绑定。收录于:PLDI,ACM 2007,第446-455页。数字对象标识代码:10.1145/1250734.1250785
[24] Musuvathi M,Qadeer S,Ball T(2007)CHESS:并发软件的系统测试工具。技术代表MSR-TR-2007-149,Microsoft Research,2007年
[25] Netzer RHB,Miller BP(1991)提高数据竞争检测的准确性。SIGPLAN通知26(7):133-144。doi:10.1145/109626.109640·doi:10.1145/109626.109640
[26] Papadimitriou CH(1979)并发数据库更新的可序列化性。美国临床医学杂志26(4):631-653·Zbl 0419.68036号 ·doi:10.1145/322154.322158
[27] Park S,Lu S,Zhou Y(2009)CTrigger:从隐藏位置暴露违反原子性的错误。In:编程语言和操作系统(ASPLOS)的体系结构支持,ACM,2009年,第25-36页
[28] Park S、Vuduc R、Harrold MJ(2012)定位非死锁并发错误的统一方法。In:软件测试、验证和确认(ICST),IEEE 2012,第51-60页
[29] Park S、Vuduc RW、Harrold MJ(2010)《猎鹰:并发程序中的故障定位》。In:软件工程国际会议(ICSE),ACM 2010,第245-254页
[30] Pei J,Han J,Mortazavi-Asl B,Pinto H,Chen Q,Dayal U,Hsu M(2001)PrefixSpan:通过前缀投影模式增长高效挖掘序列模式。In:2001年第17届国际数据工程会议(ICDE'01)
[31] Rößler J,Fraser G,Zeller A,Orso A(2012)通过测试用例生成隔离故障原因。In:软件测试和分析国际研讨会,ACM 2012,第309-319页
[32] Savage S、Burrows M、Nelson G、Sobalvarro P、Anderson T(1997)《橡皮擦:多线程程序的动态数据竞争检测器》。传输计算系统(TOCS)15(4):391-411。doi:10.1145/265924.265927·doi:10.1145/265924.265927
[33] Tabaei-Befrouei M,Wang C,Weissenbacher G(2014)《抽象和挖掘跟踪以解释并发错误》。2014年第14届运行时验证国际会议论文集·兹比尔1380.68107
[34] Wang J,Han J(2004)Bide:频繁闭合序列的高效挖掘。In:ICDE,2004年
[35] Wang L,Stoller SD(2006)多线程程序原子性的运行时分析。TSE 32(2):93-110
[36] Xu M,Bodík R,Hill MD(2005)共享内存服务器程序的可序列化违规检测器。收件人:PLDI,ACM 2005,第1-14页
[37] Yan X,Han J,Afshar R(2003)CloSpan:在大型数据集中挖掘闭合序列模式。收录:2003年SIAM国际数据挖掘会议记录(SDM'03),2003
[38] Yang Y,Chen X,Gopalakrishnan G,Kirby RM(2007)基于分布式动态部分降阶的线程化软件验证。In:模型检查和软件验证(SPIN),LNCS 2007,第58-75页
[39] Zeller A(2009)《为什么程序失败:系统调试指南》。伯灵顿摩根考夫曼
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。