跳到主要内容
研究论文

ConSeq(连接顺序):通过顺序错误检测并发错误

出版:2011年3月5日 出版历史
  • 获取引文提醒
  • 摘要

    并发错误是由共享内存访问之间的非确定性交错引起的。它们的影响通过数据和控制相关性传播,直到导致软件崩溃、挂起、产生错误输出等。因此,错误的生命周期包括三个阶段:(1)触发、(2)传播和(3)失败。
    传统的并发错误检测技术主要集中在阶段(1)上,即查找交叉的某些结构模式,这些模式是并发错误的常见触发因素,例如数据竞争。本文探索了一种面向结果的方法,以提高状态空间搜索和错误检测的准确性和覆盖率。提出的方法首先静态地识别程序二进制文件中的潜在故障位置(即,它首先考虑阶段(3)问题)。然后,它使用静态切片来识别极有可能通过控制和数据相关性影响潜在故障站点的关键读取指令(阶段(2))。最后,它监视并发程序的单个(正确)执行,并识别可能导致关键读取时出现错误状态,然后导致软件故障的可疑交错(阶段(1))。
    ConSeq的后退方式,(3)!(2)!(1) ,在漏洞检测覆盖率和准确性方面提供了优势,但执行起来很有挑战性。ConSeq通过利用经验观测使其可行,相位(2)和(3)通常较短,并且出现在一个线程中。我们对大型、真实的C/C++应用程序的评估表明,ConSeq比传统方法检测到更多的错误,并且误报率低得多。

    工具书类

    [1]
    G.Altekar和I.Stoica。ODR:用于多核调试的输出确定性重放。SOSP,2009年。
    [2]
    G.Balakrishnan、R.Gruian、T.Reps和T.Teitelbaum。CodeSurfer/x86——分析x86可执行文件的平台(工具演示文件)。CC,2005年。
    [3]
    G.Balakrishnan和T.Reps.分析x86可执行文件中的内存访问。《编译器构造》,2004年。
    [4]
    E.D.Berger、T.Yang、T.Liu和G.Novark。格雷斯:C/C的安全多线程编程。OOPSLA,2009年。
    [5]
    A.Bessey、K.Block、B.Chelf、A.Chou、B.Fulton、S.Hallem、C.Henri-Gros、A.Kamsky、S.McPeak和D.Engler。几十亿行代码之后:使用静态分析发现现实世界中的错误。Commun公司。ACM,53(2):66-752010年。
    [6]
    F.布尔顿克。具有加宽的高效混沌迭代策略。在程序中形式方法的国际会议上。及其应用程序。,1993
    [7]
    S.Burckhardt、P.Kothari、M.Musuvati和S.Nagarakatte。一种随机调度程序,具有发现错误的概率保证。2010年,ASPLOS。
    [8]
    J.Burnim和K.Sen.断言和检查多线程程序的确定性。FSE,2009年。
    [9]
    C.Cadar、D.Dunbar和D.R.Engler。Klee:为复杂系统程序自动生成高覆盖率测试。OSDI,2008年。
    [10]
    切罗基。切罗基:最快的免费网络服务器!http://www.cherokee-project.com/。
    [11]
    L.Chew和D.Lie。基瓦蒂:快速检测和预防原子性违规。在EuroSys,2010年。
    [12]
    J.-D.Choi等人。多线程面向对象程序的高效和精确数据竞争检测。PLDI,2002年。
    [13]
    点击。点击模块化路由器项目。http://read.cs.ucla.edu/click/click。
    [14]
    J.Devietti、B.Lucia、L.Ceze和M.Oskin。DMP:确定性共享内存多处理。在ASPLOS,2009年。
    [15]
    M.Dimitrov和H.Zhou。基于异常的错误预测、隔离和验证:软件调试的自动化方法。在ASPLOS,2009年。
    [16]
    O.Edelstein、E.Farchi、Y.Nir、G.Ratsaby和S.Ur。多线程Java程序测试生成。《IBM系统杂志》,2002年。
    [17]
    M.Ernst、A.Czeisler、W.G.Griswold和D.Notkin。快速检测相关程序不变量。ICSE,2000年。
    [18]
    M.D.Ernst、J.H.Perkins、P.J.Guo、S.McCamant、C.Pacheco、M.S.Tschantz和C.Xiao。动态检测可能不变量的daikon系统。科学。计算。程序。,69(1-3):35--45, 2007.
    [19]
    C.Flanagan和S.N.Freund。FastTrack:高效精确的动态比赛检测。PLDI,2009年。
    [20]
    P.Godefroid、N.Klarlund和K.Sen.Dart:指导自动化随机测试。PLDI,2005年。
    [21]
    W.Gu、Z.Kalbarczyk、R.K.Iyer和Z.-Y.Yang。描述错误下Linux内核的行为。DSN,2003年。
    [22]
    S.Horwitz、T.Reps和D.Binkley。使用依赖图进行过程间切片。1990年,托普拉斯。
    [23]
    R.Jhala和R.Majumdar。软件模型检查。《计算调查》,41(4),2009年。
    [24]
    H.Jula、D.Tralamazza、C.Zamfir和G.Candea。死锁免疫:使系统能够防御死锁。OSDI,2008年。
    [25]
    N.Kidd、P.Lammich、T.Touilli和T.Reps。检查多变量数据竞争的静态技术。技术转让软件工具,2010年。
    [26]
    V.Kuznetsov、V.Chipunov和G.Candea。使用DDT测试闭源二进制设备驱动程序。在USENIX,2010年。
    [27]
    A.Lal和T.Reps。在与顺序分析相关的上下文中减少并发分析。形式方法系统。设计。,2009
    [28]
    I.Lee和R.K.Iyer。串联GUARDIAN90操作系统中的故障、症状和软件容错。IEEE,第20-29页,1993年。
    [29]
    N.G.莱维森和C.S.特纳。对高温-25事故的调查。计算机,26(7):18-411993。
    [30]
    X.Li和D.Yeung。应用程序级正确性及其对容错的影响。HPCA,2007年。
    [31]
    卢素馨、朴素馨,胡锦涛,马晓霞,江西,李振中,波帕,周瑜。MUVI:自动推断多变量访问相关性并检测相关的语义和并发错误。SOSP,2007年10月。
    [32]
    S.Lu、S.Park、E.Seo和Y.Zhou。从错误中学习——对真实世界并发错误特征的全面研究。在ASPLOS,2008年。
    [33]
    S.Lu、J.Tucek、F.Qin和Y.Zhou。AVIO:通过访问交织不变量检测原子性冲突。在ASPLOS,2006年。
    [34]
    B.Lucia和L.Ceze。使用上下文软件通信图查找并发错误。2009年,MICRO。
    [35]
    B.Lucia、L.Ceze和K.Strauss。Colorsafe:对调试和动态避免多变量原子性冲突的体系结构支持。2010年《国际会计准则》。
    [36]
    B.Lucia、J.Devietti、K.Strauss和L.Ceze。原子援助:检测和幸存原子性违规。2008年,国际会计准则理事会。
    [37]
    C.-K.Luk、R.Cohn、R.Muth、H.Patil、A.Klauser、G.Lowney、S.Wallace、V.J.Reddi和K.Hazelwood。引脚:使用动态工具构建定制的程序分析工具。PLDI,2005年。
    [38]
    M.Musuvathi和S.Qadeer。多线程程序系统测试的迭代上下文边界。PLDI,2007年。
    [39]
    M.Musuvathi、S.Qadeer、T.Ball、G.Basler、P.A.Nainar和I.Neamtiu。在并发程序中查找和复制heisenbug。OSDI,2008年。
    [40]
    S.Narayanasamy、Z.Wang、J.Tigani、A.Edwards和B.Calder。使用重播分析自动分类良性和有害数据竞争。在PLDI,2007年。
    [41]
    N.Nethercote和J.Seward。Valgrind:重量级动态二进制指令插入框架。在PLDI,2007年。
    [42]
    R.H.B.Netzer和B.P.Miller。提高数据竞争检测的准确性。PPoPP,1991年。
    [43]
    M.Olszewski、J.Ansel和S.P.Amarasinghe。Kendo:软件中高效的确定性多线程。在ASPLOS,2009年。
    [44]
    S.Park、S.Lu和Y.Zhou。Ctrigger:从发现位置暴露原子性违规错误。在ASPLOS,2009年。
    [45]
    S.Park、R.W.Vuduc和M.J.Harrold。Falcon:并发程序中的错误定位。2010年ICSE’10。
    [46]
    S.Park、Y.Zhou、W.Xiong、Z.Yin、R.Kaushik、K.H.Lee和S.Lu.PRES:在多处理器上使用执行草图进行概率重播。SOSP,2009年。
    [47]
    D.K.普拉丹。容错计算机系统设计。Prentice-Hall公司,1996年。
    [48]
    S.Qadeer和D.Wu。接吻:保持简单有序。PLDI,2004年。
    [49]
    F.Qin、J.Tucek、J.Sundaresan和Y.Zhou。Rx:将错误视为过敏症是一种安全的软件故障生存方法。SOSP,2005年。
    [50]
    L.Ryzhyk、P.Chubb、I.Kuz和G.Heiser。Dingo:驯服设备驱动程序。在EuroSys,2009年。
    [51]
    S.Savage、M.Burrows、G.Nelson、P.Sobalvarro和T.Anderson。橡皮擦:多线程程序的动态数据竞争检测器。ACM TOCS,1997年。
    [52]
    安全焦点。软件错误导致停电。http://www.securityfocus.com/news/8016。
    [53]
    K.Sen.Race指导对并发程序进行随机测试。PLDI,2008年。
    [54]
    K.Sen、D.Marinov和G.Agha。可爱:一个用于c的共鸣单元测试引擎。ESEC/SIGSOFT FSE,2005。
    [55]
    石彦、朴素馨、尹志贤、卢素馨,周瑜、陈伟强和郑伟强。我用错定义了吗?消除:定义使用不变量来检测并发性和顺序错误。2010年,OOPSLA。
    [56]
    M.Vaziri、F.Tip和J.Dolby。将同步约束与面向对象语言中的数据相关联。在POPL,2006年。
    [57]
    Y.Wang、T.Kelly、M.Kudlur、S.Lafortune和S.A.Mahlke。Gadara:多线程程序的动态死锁避免。OSDI,2008年。
    [58]
    D.Weeratunge、X.Zhang和S.Jagannathan。分析多核转储以促进并发错误再现。2010年,ASPLOS。
    [59]
    M.Weiser。程序切片。1984年IEEE软件工程汇刊。
    [60]
    S.C.Woo、M.Ohara、E.Torrie、J.P.Singh和A.Gupta。SPLASH-2项目:特征和方法考虑。1995年,ISCA。
    [61]
    W.Xiong、S.Park、J.Zhang、Y.Zhou和Z.Ma。临时同步被认为是有害的。OSDI,2010年。
    [62]
    M.Xu、R.Bodík和M.D.Hill。共享内存服务器程序的序列化违规检测器。PLDI,2005年。
    [63]
    J.Yu和S.Narayanasamy。交错约束共享内存多处理器的情况。ISCA,2009年。
    [64]
    Y.Yu、T.Rodeheffer和W.Chen。赛道:通过自适应跟踪有效检测数据竞争条件。SOSP,2005年。
    [65]
    C.赞菲尔和G.坎迪亚。执行合成:一种自动化软件调试技术。在EuroSys,2010年。
    [66]
    W.Zhang、C.Sun和S.Lu.ConMem:通过面向效果的方法检测严重的并发错误。在ASPLOS,2010年。

    引用人

    查看全部
    • (2023)基于信息检索的并发程序故障定位2023年第38届IEEE/ACM国际自动化软件工程会议(ASE)10.1109/ASE56229.2023.00122(1467-1479)在线发布日期:2023年9月11日
    • (2020)网络协议软件实现中的自动特征隔离2020年ACM围绕软件转型形成生态系统研讨会会议记录10.1145/3411502.3418425(29-34)在线发布日期:2020年11月13日
    • (2019)POMP++:利用价值集分析促进事后程序诊断IEEE软件工程汇刊10.1109/TSE.2019.2939528(1-1)在线发布日期:2019年
    • 显示更多引用者

    建议

    评论

    信息和贡献者

    问询处

    发布于

    封面图片ACM SIGPLAN注意事项
    ACM SIGPLAN通知 第46卷第3期
    ASPLOS’11
    2011年3月
    407页
    国际标准编号:0362-1340
    EISSN公司:1558-1160
    DOI(操作界面):10.1145/1961296
    期刊目录
    • 封面图片ACM会议
      ASPLOS XVI:第十六届编程语言和操作系统体系结构支持国际会议记录
      2011年3月
      432页
      国际标准图书编号:9781450302661
      DOI(操作界面):10.1145/1950365
    如果复制品不是为了盈利或商业利益而制作或分发的,并且复制品的第一页载有本通知和完整引文,则允许免费制作本作品的全部或部分数字或硬拷贝以供个人或课堂使用。必须尊重ACM以外的其他人对本作品组成部分的版权。允许用信用证进行摘要。要以其他方式复制或重新发布,在服务器上发布或重新发布到列表,需要事先获得特定许可和/或付费。从请求权限[电子邮件保护]

    出版商

    计算机协会

    美国纽约州纽约市

    出版历史

    出版:2011年3月5日
    在SIGPLAN中发布体积46,问题

    检查更新

    作者标记

    1. 并发错误
    2. 软件测试

    限定符

    • 研究文章

    贡献者

    其他指标

    文献计量学和引文

    文献计量学

    文章指标

    • 下载次数(过去12个月)29
    • 下载次数(最近6周)4

    其他指标

    引文

    引用人

    查看全部
    • (2023)基于信息检索的并发程序故障定位2023年第38届IEEE/ACM国际自动化软件工程会议(ASE)10.1109/ASE56229.2023.00122(1467-1479)在线发布日期:2023年9月11日
    • (2020)网络协议软件实现中的自动特征隔离2020年ACM围绕软件转型形成生态系统研讨会会议记录10.1145/3411502.3418425(29-34)在线发布日期:2020年11月13日
    • (2019)POMP++:利用价值集分析促进事后程序诊断IEEE软件工程汇刊10.1109/TSE.2019.2939528(1-1)在线发布日期:2019年
    • (2019)数据流跟踪程序计算机科学前沿:中国大学文选2007年10月17日/11704-016-6383-813:2(247-263)在线发布日期:2019-04-01
    • (2018)TScope:服务器系统的自动超时错误识别2018 IEEE自主计算国际会议(ICAC)10.1109/ICAC.2018.00010(1-10)在线发布日期:2018年9月
    • (2018)自动并发错误检测、暴露、避免和修复技术的系统调查软件质量期刊2007年10月17日/11219-017-9385-326:3(855-889)在线发布日期:2018年9月1日
    • (2016)用数据操作Petri网检查并发系统中的不一致数据2016年IEEE第22届并行和分布式系统国际会议(ICPADS)10.1109/ICPADS.2016.0073(501-508)在线发布日期:2016年12月
    • (2015)TACO:并发程序的测试套件扩充2015年第十届软件工程基础联席会议记录10.1145/2786805.2803201(918-921)在线发布日期:2015年8月30日
    • (2015)并发错误检测的协同技术国际并行程序设计杂志2007年10月10日/10766-014-0304-y43:2(260-285)在线发布日期:2015年4月1日
    • (2011)事件驱动程序中并发错误的分类软件工程、业务连续性和教育10.1007/978-3-642-27207-3_48(437-450)在线发布日期:2011年
    • 显示更多引用者

    视图选项

    获取访问权限

    登录选项

    完全访问权限

    查看选项

    PDF格式

    以PDF文件查看或下载。

    PDF格式

    电子阅读器

    使用联机查看电子阅读器.

    电子阅读器

    媒体

    数字

    其他

    桌子

    分享

    分享

    共享此出版物链接

    在社交媒体上分享