AVIO: detecting atomicity violations via access interleaving invariants

AVIO: detecting atomicity violations via access interleaving invariants
复制标题

DOI:
10.1145/1168857.1168864
复制
发表时间:
2006-10
期刊:
--
影响因子:
--
通讯作者:
Shan Lu;Joseph A. Tucek;Feng Qin;Yuanyuan Zhou
Shan Lu;Joseph A. Tucek;Feng Qin;Yuanyuan Zhou
中科院分区:
其他
文献类型:
--
作者:
Shan Lu;Joseph A. Tucek;Feng Qin;Yuanyuan Zhou

文献摘要

被引文献

相似文献

并发错误是所有软件错误中最难测试和诊断的。多核技术的发展趋势解决了这个问题。大多数以前的并发错误检测工作集中在一个错误子类,数据竞争,而忽略了许多其他重要的,如原子性违规,这将变得越来越重要,由于新兴的趋势,transactional memory models.本文提出了一种创新的,全面的,invariantbased方法称为AVIO来检测原子性违规。我们的想法是基于一个新的观察称为访问交织不变,这是一个很好的指示程序员的假设,某些代码区域的原子性。通过自动提取这些不变量并在运行时检测这些不变量的违反,AVIO可以检测各种原子性违反。基于这一思想,我们设计并构建了两个AVIO实现,并评估了它们之间的权衡。第一种实现AVIO-S纯粹是软件实现,而第二种实现AVIO-H需要对该高速缓存一致性硬件进行一些简单的扩展。AVIO-S更便宜,更准确,但会产生更高的开销,因此比AVIOH更多的运行时扰动。因此,AVIO-S是更适合于在内部的错误检测和事后错误诊断,而AVIO-H可以用于错误检测在生产run.We评估这两个实现的AVIO使用大型现实世界的服务器应用程序(Apache和MySQL)与六个代表真实的原子性违反错误,和SPLASH-2基准。我们的研究结果表明,AVIO检测到更多的测试各种类型的原子性违规,并有25倍的误报比以前的解决方案平均。
Concurrency bugs are among the most difficult to test and diagnose of all software bugs. The multicore technology trend worsens this problem. Most previous concurrency bug detection work focuses on one bug subclass, data races, and neglects many other important ones such as atomicity violations, which will soon become increasingly important due to the emerging trend of transactional memory models.This paper proposes an innovative, comprehensive, invariantbased approach called AVIO to detect atomicity violations. Our idea is based on a novel observation called access interleaving invariant, which is a good indication of programmers' assumptions about the atomicity of certain code regions. By automatically extracting such invariants and detecting violations of these invariants at run time, AVIO can detect a variety of atomicity violations.Based on this idea, we have designed and built two implementations of AVIO and evaluated the trade-offs between them. The first implementation, AVIO-S, is purely in software, while the second, AVIO-H, requires some simple extensions to the cache coherence hardware. AVIO-S is cheaper and more accurate but incurs much higher overhead and thus more run-time perturbation than AVIOH. Therefore, AVIO-S is more suitable for in-house bug detection and postmortem bug diagnosis, while AVIO-H can be used for bug detection during production runs.We evaluate both implementations of AVIO using large realworld server applications (Apache and MySQL) with six representative real atomicity violation bugs, and SPLASH-2 benchmarks. Our results show that AVIO detects more tested atomicity violations of various types and has 25 times fewer false positives than previous solutions on average.