...
首页> 外文期刊>Computer architecture news >2ndStrike: Toward Manifesting Hidden Concurrency Typestate Bugs
【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 types-tates, 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.
机译:并发错误在多核时代正变得越来越普遍。最近,许多研究集中在与低级内存访问相关的数据争用和原子性违规错误。但是,对诸如“从另一个线程对关闭的文件的无效读取”之类的并发类型错误(statestate bug)的研究不足。这些并发typestate错误非常重要,但研究起来很困难,因为它们与高级程序语义主要相关。本文介绍了2ndStrike,这是一种在软件测试中显示隐藏的并发类型错误的方法。给定状态机来描述某些对象类型-tate上正确的程序行为,2ndStrike会分析与类型状态和线程同步有关的运行时事件。然后,根据性能分析结果,2ndStrike会确定错误候选者,每个错误候选者都是一对运行时事件,如果事件顺序相反,它们将导致类型状态冲突。最后,2ndStrike使用受控制的线程交织重新执行程序,以显示候选错误。我们已经在Linux上实现了2ndStrike的原型,并使用三种类型的并发typestate错误(包括无效的文件操作,无效的指针取消引用和无效的锁定操作)说明了我们的想法。我们用来自三个开源服务器和桌面程序(即MySQL,Mozilla,pbzip2)的六个真实世界的错误(包括一个以前未知的错误)评估了2ndStrike。我们的实验结果表明,2ndStrike可以有效地显示所有六个软件错误,使用基于数据竞争/原子违反的压力测试或主动测试技术,很难或不可能显示其中的大多数。此外,2ndStrike不会报告任何误报,它会为每个已显示的错误提供详细的错误报告,并且在将其显示一次后即可一致地重现该错误。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号