...
【24h】

2ndStrike: Toward Manifesting Hidden Concurrency Typestate Bugs

机译:2ndStrike:迈向隐式并发Typestate错误的表现

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

获取外文期刊封面封底 >>

       

摘要

Concurrency bugs are becoming increasingly prevalent in the multi-core era. Recently, much research has focused on data races and atomicity violation bugs, which are related to low-level memory accesses. However, a large number of concurrency typestate bugs such as "invalid reads to a closed file from a different thread" are under-studied. These concurrency typestate bugs are important yet challenging to study since they are mostly relevant to high-level program semantics.; This paper presents 2ndStrike, a method to manifest hidden concurrency typestate bugs in software testing. Given a state machine describing correct program behavior on certain object typestates, 2ndStrike profiles runtime events related to the typestates and thread synchronization. Based on the profiling results, 2ndStrike then identifies bug candidates, each of which is a pair of runtime events that would cause typestate violation if the event order is reversed. Finally, 2ndStrike re-executes the program with controlled thread interleaving to manifest bug candidates.; We have implemented a prototype of 2ndStrike on Linux and have illustrated our idea using three types of concurrency typestate bugs, including invalid file operation, invalid pointer dereference, and invalid lock operation. We have evaluated 2ndStrike with six real world bugs (including one previously unknown bug) from three open-source server and desktop programs (i.e., MySQL, Mozilla, pbzip2). Our experimental results show that 2ndStrike can effectively and efficiently manifest all six software bugs, most of which are difficult or impossible to manifest using stress testing or active testing techniques that are based on data race/atomicity violation. Additionally, 2ndStrike reports no false positives, provides detailed bug reports for each manifested bug, and can consistently reproduce the bug after manifesting it once.
机译:并发错误在多核时代变得越来越普遍。最近,许多研究集中在与低级内存访问有关的数据争用和原子性违规错误。但是,对诸如“从另一个线程对关闭的文件进行无效读取”之类的并发类型错误的研究不足。这些并发型态错误很重要,但研究难度很大,因为它们主要与高级程序语义相关。本文提出了2ndStrike,一种在软件测试中表现出隐藏的并发类型错误的方法。给定状态机来描述某些对象typestate上正确的程序行为,2ndStrike会分析与typestate和线程同步有关的运行时事件。然后,根据性能分析结果,2ndStrike会确定错误候选者,每个错误候选者都是一对运行时事件,如果事件顺序颠倒,它们将导致类型状态冲突。最后,2ndStrike使用受控线程交织重新执行程序,以显示候选错误。我们已经在Linux上实现了2ndStrike的原型,并使用三种类型的并发typestate错误(包括无效的文件操作,无效的指针解除引用和无效的锁定操作)说明了我们的想法。我们用来自三个开源服务器和桌面程序(即MySQL,Mozilla,pbzip2)的六个真实错误(包括一个以前未知的错误)评估了2ndStrike。我们的实验结果表明,2ndStrike可以有效且高效地显示所有六个软件错误,使用基于数据竞争/原子违反的压力测试或主动测试技术很难或不可能显示其中的大多数。此外,2ndStrike不会报告任何误报,它会为每个已显示的错误提供详细的错误报告,并且在将其显示一次后即可一致地重现该错误。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号