The recently-ratified C and C++ standards, "C11" and "C++11" respectively, add a concurrency model that supports writing high-performance, portable code for machines with multiple processors. The concurrency model, however, is large and complicated; it is not particularly easy for compiler and library developers to get all of its corner cases right. Errors in implementing the new model can introduce bugs into important pieces of software, such as operating systems, web browsers, web sites, database engines, and embedded systems, all of which are written, at least partially, in concurrent C and C++.

The PI's previous work on randomized testing for C compilers uncovered more than 450 bugs in production-quality compilers, most of which were fixed by compiler developers. The PI's current project extends this research agenda to support stress testing of implementations of the C11 and C++11 concurrency model. The intellectual merit of this work stems from the need to generate random, but standards-conforming, concurrent code; the need to synthesize "test oracles" that can automatically ascertain the success or failure of a test case; and, the need to develop "hostile" simulators for flushing out errors in compiled concurrent code.

The expected impact of the PI's work is to significantly reduce the period during which implementations of the C11 / C++11 concurrency model are flaky and immature, and to reduce the lifetime of compiler bugs that are introduced during ongoing development.

Agency
National Science Foundation (NSF)
Institute
Division of Computer and Network Systems (CNS)
Type
Standard Grant (Standard)
Application #
1218022
Program Officer
Marilyn McClure
Project Start
Project End
Budget Start
2012-09-01
Budget End
2018-08-31
Support Year
Fiscal Year
2012
Total Cost
$467,740
Indirect Cost
Name
University of Utah
Department
Type
DUNS #
City
Salt Lake City
State
UT
Country
United States
Zip Code
84112