The rapid adoption of multicore and manycore processors in every class of computing systems---from mobile handheld devices to high-end data center servers---is increasing our dependence on concurrent software. However, defects in concurrent programs are notoriously difficult for developers to detect and diagnose, because concurrent behavior is fundamentally harder to reason about than sequential behavior. Major software vendors report the tangible negative impacts on software development from concurrent faults, such as reduced development productivity or inadequate concurrency training and tools, along with the significant impact on end-users from defective software. The goal of this research project is to help developers of concurrent software find and understand defects quickly.
The research will employ novel approaches that combine testing and dynamic analysis with automated post-mortem statistical analysis of thread interactions. Dynamic analysis reduces false positive fault reports, and statistical data analysis exploits the inherent non-determinism of concurrent execution to produce informative prioritized rankings of candidate faults. The resulting techniques will greatly improve debugging productivity by helping the developer to hone in on the most likely causes of program the resulting techniques and tools will be transformative, and will automate fault-localization for concurrent software. The results of the research will have broader impacts on the state-of-the-art in concurrent software practice, research, and education. The research will prepare globally competitive students in the emerging area of concurrent software and parallel thinking, along with providing intellectual bridges between students in software engineering and in computational science and engineering, and advance diversity goals. Additionally, successes in improving fault-localization techniques for concurrent software will lead to improvements in software quality and, thus, benefit all segments of society that depend on software.