首页> 外文会议>25th annual ACM conference on object oriented programming, systems, languages and applications 2010 >Do I Use the Wrong Definition? DefUse: Definition-Use Invariants for Detecting Concurrency and Sequential Bugs
【24h】

Do I Use the Wrong Definition? DefUse: Definition-Use Invariants for Detecting Concurrency and Sequential Bugs

机译:我使用错误的定义吗? DefUse:定义使用不变式,用于检测并发和顺序错误

获取原文
获取原文并翻译 | 示例

摘要

Software bugs, such as concurrency, memory and semantic bugs, can significantly affect system reliability. Although much effort has been made to address this problem, there are still many bugs that cannot be detected, especially concurrency bugs due to the complexity of concurrent programs. Effective approaches for detecting these common bugs are therefore highly desired. This paper presents an invariant-based bug detection tool, DefUse, which can detect not only concurrency bugs (including the previously under-studied order violation bugs), but also memory and semantic bugs. Based on the observation that many bugs appear as violations to programmers' data flow intentions, we introduce three different types of definition-use invariants that commonly exist in both sequential and concurrent programs. We also design an algorithm to automatically extract such invariants from programs, which are then used to detect bugs. Moreover, DefUse uses various techniques to prune false positives and rank error reports. We evaluated DefUse using sixteen real-world applications with twenty real-world concurrency and sequential bugs. Our results show that DefUse can effectively detect 19 of these bugs, including 2 new bugs that were never reported before, with only a few false positives. Our training sensitivity results show that, with the benefit of the pruning and ranking algorithms, DefUse is accurate even with insufficient training.
机译:诸如并发,内存和语义错误之类的软件错误会严重影响系统的可靠性。尽管已为解决此问题付出了很多努力,但仍然存在许多无法检测到的错误,特别是由于并发程序的复杂性而导致的并发错误。因此,非常需要用于检测这些常见错误的有效方法。本文介绍了一种基于不变的错误检测工具DefUse,它不仅可以检测并发错误(包括先前未被充分研究的顺序冲突错误),还可以检测内存和语义错误。基于观察到许多错误似乎违反了程序员的数据流意图的观点,我们介绍了顺序和并发程序中普遍存在的三种不同类型的定义使用不变式。我们还设计了一种算法,可以从程序中自动提取此类不变量,然后将其用于检测错误。此外,DefUse使用各种技术来修剪误报并对错误报告进行排名。我们使用了16个真实世界的应用程序以及20个真实世界的并发性和顺序错误对DefUse进行了评估。我们的结果表明,DefUse可以有效地检测到其中的19个错误,包括2个以前从未报告过的新错误,只有很少的误报。我们的训练敏感性结果表明,利用修剪和排序算法,即使没有足够的训练,DefUse也是准确的。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号