Font Size: a A A

Diagnosing and Fixing Concurrency Bugs

Posted on:2015-05-03Degree:Ph.DType:Thesis
University:The University of Wisconsin - MadisonCandidate:Jin, GuoliangFull Text:PDF
GTID:2478390017992497Subject:Computer Science
Abstract/Summary:PDF Full Text Request
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.
Keywords/Search Tags:Bugs, Fixing, Software, CCI, Finding, Cfix
PDF Full Text Request
Related items