首页> 外文学位 >Diagnosing and Fixing Concurrency Bugs.
【24h】

Diagnosing and Fixing Concurrency Bugs.

机译:诊断和修复并发错误。

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

摘要

Software bugs hurt software reliability, and software companies are spending a huge amount of effort on finding and fixing bugs. Among all types of software bugs, concurrency bugs are among the most troublesome. Concurrency bugs have caused real-world disasters and are increasingly becoming an issue in this multi-core era. Lots of research efforts have been spent on concurrency bugs with a focus on bug finding.;This thesis works on two directions to provide comprehensive tool support for concurrency bugs, complementing existing work on bug finding: production-run failure diagnosis for multi-threaded software and automated concurrency-bug fixing.;Production-run failure diagnosis tools help programmers understand these bugs that are missed by various bug-finding tools and manifest at user sites. Despite all the efforts on concurrency bugs, software companies still release software that contains concurrency bugs, and they would manifest during production runs. To help understand the concurrency bugs behind these failures, we design and implement Cooperative Concurrency bug Isolation (CCI). CCI follows the high-level strategy of predicate sampling and statistical debugging approach. We design different predicate schemes that are highly related with thread interaction abnormalities to help explain failures caused by concurrency bugs. For each predicate scheme, we design a suitable sampling strategy so that the overhead would be low enough for production environment. CCI leverages existing statistical debugging techniques to process data collected by the sampled predicates. Evaluation suggests that CCI is capable of diagnosing many real-world concurrency bugs with low run-time overhead.;Automated bug fixing tools speed up the bug fixing process. Our automated concurrency-bug fixing tool, CFix, builds on the observation that concurrency bugs can be fixed by removing buggy interleavings, and leverages recent advances on bug finding tools to report buggy interleavings. CFix includes several components on static synchronization enforcement, software testing, and patch optimization to automate the whole process of concurrency-bug fixing. Evaluation shows that CFix is able to generate patches that are comparable with manual patches regarding correctness, performance, and simplicity. With CCI and CFix, we envision a self-healing system for multi-threaded software.
机译:软件错误会损害软件的可靠性,软件公司正在花费大量精力来查找和修复错误。在所有类型的软件错误中,并发错误是最麻烦的。并发错误已导致现实世界的灾难,并且在这个多核时代中越来越成为一个问题。在并发错误方面进行了大量研究工作,重点是发现错误。本论文在两个方向上进行工作,以为并发错误提供全面的工具支持,从而补充了有关发现错误的现有工作:多线程软件的生产运行故障诊断生产运行故障诊断工具可帮助程序员理解这些错误,这些错误被各种错误查找工具遗漏并在用户站点上显示。尽管在并发性错误方面做出了所有努力,但是软件公司仍会发布包含并发性错误的软件,并且这些缺陷会在生产运行期间体现出来。为了帮助理解这些故障背后的并发错误,我们设计并实现了“协作并发错误隔离”(CCI)。 CCI遵循谓词采样和统计调试方法的高级策略。我们设计与线程交互异常高度相关的不同谓词方案,以帮助解释由并发错误引起的失败。对于每个谓词方案,我们设计一个合适的采样策略,以使开销对于生产环境而言足够低。 CCI利用现有的统计调试技术来处理由采样谓词收集的数据。评估表明,CCI能够以较低的运行时开销诊断许多现实世界中的并发错误。自动化的错误修复工具可加速错误修复过程。我们的自动化并发错误修复工具CFix建立在这样的观察基础上,即可以通过删除有问题的交错来修复并发错误,并利用最新的缺陷发现工具来报告有问题的交错。 CFix包括有关静态同步实施,软件测试和补丁优化的多个组件,以自动执行并发错误修复的整个过程。评估表明,CFix能够生成与正确性,性能和简单性方面的手动修补程序相当的修补程序。借助CCI和CFix,我们可以设想一个用于多线程软件的自愈系统。

著录项

  • 作者

    Jin, Guoliang.;

  • 作者单位

    The University of Wisconsin - Madison.;

  • 授予单位 The University of Wisconsin - Madison.;
  • 学科 Computer Science.
  • 学位 Ph.D.
  • 年度 2014
  • 页码 146 p.
  • 总页数 146
  • 原文格式 PDF
  • 正文语种 eng
  • 中图分类
  • 关键词

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号