跳到主要内容
研究论文

从错误中学习:真实世界并发bug特征的综合研究

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

    多核硬件的现实使得并发程序普遍存在。不幸的是,编写正确的并发程序很困难。解决这一挑战需要在多个方向上取得进展,包括并发错误检测、并发程序测试、并发编程模型设计等。深入了解真实世界的并发错误特征将大大有助于在所有这些方向上设计有效的技术。
    本文提供了第一个(据我们所知)全面的真实世界并发错误特征研究。具体来说,我们仔细检查了从4个代表性的服务器和客户端开源应用程序(MySQL、Apache、Mozilla和OpenOffice)中随机选择的105个现实世界并发错误的并发模式、表现和修复策略。我们的研究揭示了几个有趣的发现,并为并发错误检测、测试和并发编程语言设计提供了有用的指导。
    我们的一些发现如下:(1)大约三分之一被检查的非死锁并发错误是由违反程序员的顺序意图引起的,这可能不容易通过锁和事务内存等同步原语表达;(2) 大约34%的被检查的非死锁并发错误涉及多个变量,现有的错误检测工具没有很好地解决这些变量;(3) 大约92%的被检查的并发错误可以通过在不超过4次的内存访问中强制执行某些命令来可靠触发。这表明,测试并发程序的目标是探索每一小组内存访问之间的可能顺序,而不是所有内存访问之间可能的顺序;(4) 大约73%的被检查的非死锁并发错误并没有通过简单地添加或更改锁来修复,许多修复在第一次尝试时都不正确,这表明程序员很难推理并发执行。

    补充材料

    索引.html (index.html)
    演示文稿中的幻灯片
    ZIP文件 (第329-shanlu-slides.zip页)
    从错误中学习的补充材料:对真实世界并发错误特征的综合研究
    仅限音频 (1346323.mp3)
    视频 (1346323.mp4)

    工具书类

    [1]
    A.-R.Adl Tabatabai、C.Kozyrakis和B.Saha。多核环境中的事务编程。在PPOPP,2007年。
    [2]
    C.S.Ananian、K.Asanovic、B.C.Kuszmaul、C.E.Leiserson和S.Lie。无限事务内存。HPCA,2005年。
    [3]
    C.Boyapati、R.Lee和M.Rinard。安全编程的所有权类型:防止数据竞争和死锁。2002年,OOPSLA。
    [4]
    A.Bron、E.Farchi、Y.Magid、Y.Nir和S.Ur。同步覆盖的应用。在PPoPP,2005年。
    [5]
    B.D.Carlstrom、A.McDonald、H.Chafi、J.Chung、C.C.Minh、C.Kozyrakis和K.Olukotun。atomos事务性编程语言。2006年6月PLDI。
    [6]
    S.Chandra和P.M.Chen。应用程序故障的一般恢复在哪里?使用开源软件进行故障研究。DSN,2000年。
    [7]
    J.-D.Choi等人。多线程面向对象程序的高效和精确数据竞争检测。PLDI,2002年。
    [8]
    A.Chou、J.Yang、B.Chelf、S.Hallem和D.R.Engler。操作系统错误的实证研究。SOSP,2001年。
    [9]
    O.Edelstein、E.Farchi、Y.Nir、G.Ratsaby和S.Ur。多线程java程序测试生成。《IBM系统杂志》,2002年。
    [10]
    D.Engler和K.Ashcraft。RacerX:有效、静态地检测竞争条件和死锁。SOSP,2003年。
    [11]
    E.Farchi、Y.Nir和S.Ur。并发错误模式以及如何测试它们。在IPDPS中,2003年。
    [12]
    C.Flanagan和S.N.Freund。雾化器:多线程程序的动态原子性检查程序。在POPL,2004年。
    [13]
    P.戈德弗里德。使用verisoft对编程语言进行模型检查。在持久性有机污染物清单中,1997年。
    [14]
    W.Gu、Z.Kalbarczyk、R.K.Iyer和Z.Yang。描述错误下的linux内核行为。DSN,2003年。
    [15]
    L.Hammond、V.Wong、M.Chen、B.D.Carlstrom、J.D.Davis、B.Hertzberg、M.K.Prabhu、H.Wijaya、C.Kozyrakis和K.Olukotun。事务记忆的连贯性和一致性。在ISCA中,2004年。
    [16]
    T.Harris和K.Fraser。轻量级事务的语言支持。在OOPSLA,2003年。
    [17]
    T.Harris、S.Marlow、S.Peyton-Jones和M.Herlihy。可组合内存事务。2005年PPoPP’05。
    [18]
    R.黑斯廷斯和B.乔伊斯。净化:快速检测内存泄漏和访问错误。在Usenix,1992年。
    [19]
    Z.Li、S.Lu、S.Myagmar和Y.Zhou。CP-Miner:一种工具,用于查找操作系统代码中的副本和相关错误。OSDI,2004年。
    [20]
    Z.Li、L.Tan、X.Wang、S.Lu、Y.Zhou和C.Zhai。现在情况变了吗现代开源软件中bug特征的实证研究。2006年,《提高软件可靠性的体系结构和系统支持第一次研讨会论文集》(ASID’06)。
    [21]
    S.Lu、W.Jiang和Y.Zhou。交错覆盖标准研究。FSE,2007年。
    [22]
    卢素馨、朴素馨,胡锦涛,马晓霞,江西,李振中,波帕,周瑜。Muvi:自动推断多变量访问相关性并检测相关的语义和并发错误。在2007年的SOSP07中。
    [23]
    S.Lu、J.Tucek、F.Qin和Y.Zhou。Avio:通过访问交错不变量检测原子性冲突。在ASPLOS,2006年。
    [24]
    B.McCloskey、F.Zhou、D.Gay和E.Brewer。Autolocker:原子部分的同步推断。在POPL,2006年。
    [25]
    莫尔(M.Moir)。对无等待事务的透明支持。1997年,第11届分布式算法国际研讨会。
    [26]
    K.E.Moore、J.Bobba、M.J.Moravan、M.D.Hill和D.A.Wood。Logtm:基于日志的事务内存。HPCA,2006年。
    [27]
    J.E.B.Moss和A.L.Hosking。嵌套事务内存:模型和架构草图。科学。计算。程序。,2006
    [28]
    M.Musuvathi和S.Qadeer。多线程程序系统测试的迭代上下文边界。在PLDI,2007年。
    [29]
    G.C.Necula、S.McPeak和W.Weimer。CCured:传统代码的类型安全翻新。在持久性有机污染物清单中,2002年。
    [30]
    N.Nethercote和J.Seward。《Valgrind:项目监督框架》,ENTCS,2003年。
    [31]
    R.H.B.Netzer和B.P.Miller。提高数据竞争检测的准确性。PPoPP,1991年。
    [32]
    T.Ostrand、E.Weyuker和R.Bell。预测大型软件系统中的故障位置和数量。TSE,2005年。
    [33]
    M.Prvulovic和J.Torrellas。ReEnact:使用线程级推测机制调试多线程代码中的数据竞争。在ISCA,2003年。
    [34]
    S.Qadeer和D.Wu。接吻:保持简单有序。PLDI,2004年。
    [35]
    F.Qin、J.Tucek、J.Sundaresan和Y.Zhou。Rx:将错误视为过敏症是一种安全的软件故障生存方法。SOSP,2005年。
    [36]
    H.E.Ramadan、C.J.Rossbach、D.E.Porter、O.S.Hofmann、A.Bhandari和E.Witchel。Metatm/txlinux:操作系统的事务性内存。ISCA,2007年。
    [37]
    S.Savage、M.Burrows、G.Nelson、P.Sobalvarro和T.Anderson。橡皮擦:多线程程序的动态数据竞争检测器。ACM TOCS,1997年。
    [38]
    M.Sullivan和R.Chillarege。比较数据库管理系统和操作系统中的软件缺陷。《金融时报》,1992年。
    [39]
    R.N.Taylor、D.L.Levine和C.D.Kelly。并发程序的结构测试。IEEE传输。柔和。工程师,1992年。
    [40]
    M.Vaziri、F.Tip和J.Dolby。将同步约束与面向对象语言中的数据相关联。在POPL,2006年。
    [41]
    M.Xu、R.Bodík和M.D.Hill。共享内存服务器程序的序列化违规检测器。在PLDI,2005年。
    [42]
    Y.Yu、T.Rodeheffer和W.Chen。赛道:通过自适应跟踪有效检测数据竞争条件。在SOSP中,2005年。
    [43]
    李泽楷等人。事情现在变了吗现代开源软件中bug特征的实证研究。2006年,在ASPLOS的ASID研讨会上。

    引用人

    查看全部
    • (2023)竞技场:使用静态分析摘要修复数据竞赛软件工程及方法论学报10.1145/354694232:2(1-33)在线发布日期:2023年3月31日
    • (2022)NVD并发漏洞的综合分析2022年IEEE第22届软件质量、可靠性和安全国际会议(QRS)10.1109/QRS57517.2022.00012(9-18)在线发布日期:2022年12月
    • (2021)巧克力程序设计语言与系统学报10.1145/342720142:4(1-56)在线发布日期:2021年1月27日
    • 显示更多引用者

    索引术语

    1. 从错误中学习:对现实世界并发错误特征的全面研究

          建议

          评论

          信息和贡献者

          问询处

          发布于

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

          出版商

          计算机协会

          美国纽约州纽约市

          出版历史

          出版:2008年3月1日
          在SIGPLAN中发布体积43,问题

          检查更新

          作者标记

          1. 错误特征
          2. 并发性错误
          3. 并行程序

          限定符

          • 研究文章

          贡献者

          其他指标

          文献计量学和引文

          文献计量学

          文章指标

          • 下载量(最近12个月)529
          • 下载次数(最近6周)44

          其他指标

          引文

          引用人

          查看全部
          • (2023)竞技场:使用静态分析摘要修复数据竞赛软件工程及方法论学报10.1145/354694232:2(1-33)在线发布日期:2023年3月31日
          • (2022)NVD并发漏洞的综合分析2022年IEEE第22届软件质量、可靠性和安全国际会议(QRS)10.1109/QRS57517.2022.00012(9-18)在线发布日期:2022年12月
          • (2021)巧克力程序设计语言与系统学报10.1145/342720142:4(1-56)在线发布日期:2021年1月27日
          • (2021)基于UI的片状测试的实证分析第43届国际软件工程会议论文集10.1109/ICSE43902.2021.00141(1585-1597)在线发布日期:2021年5月22日
          • (2021)基于深度学习的移动应用程序部署错误的实证研究第43届软件工程国际会议论文集10.1109/ICSE43902.2021.00068(674-685)在线发布日期:2021年5月22日
          • (2021)机器学习系统重构与技术债务的实证研究第43届国际软件工程会议论文集10.1109/ICSE43902.2021.00033(238-250)在线发布日期:2021年5月22日
          • (2020)利用影响因素进行压力测试以加速数据竞赛软件故障可靠性会刊10.1109/TR.2019.289505269:1(3-21)在线发布日期:2020年3月
          • (2019)依赖感知、无界声音预测竞争检测美国计算机学会程序设计语言会议录10.1145/3360605:OOPSLA公司(1-30)在线发布日期:2019年10月10日
          • (2019)Linux操作系统中故障触发的实证研究:一个进化的视角可靠性会刊109年10月10日/2019年9月916204日68:4(1356-1383)在线发布日期:2019年12月
          • (2019)一种基于模式的自动并行代码生成框架的形式化规范和实现国际技术转让软件工具杂志2007年10月10日/10009-017-0465-221:2(183-202)在线发布日期:2019-04-01
          • 显示更多引用者

          视图选项

          获取访问权限

          登录选项

          完全访问权限

          查看选项

          PDF格式

          以PDF文件查看或下载。

          PDF格式

          电子阅读器

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

          电子阅读器

          媒体

          数字

          其他

          桌子

          分享

          分享

          共享此出版物链接

          在社交媒体上分享