While races in multithreaded programs have drawn huge attention from the research community, little has been done for API races, a class of errors as dangerous and as difficult to debug as traditional thread races. An API race occurs when multiple activities, whether they be threads or processes, access a shared resource via an application programming interface (API) without proper synchronization. Detecting API races is an important and difficult problem as existing race detectors are unlikely to work well with API races.

Software reliability increasingly affects everyone, whether or not they personally use computers. This research studies and automatically detects for the first time an important class of races that has a significant impact on software reliability. The study quantitatively demonstrates how API races are numerous, difficult to debug, and a real threat to software reliability. To address this problem, this research is developing RacePro, a new system to automatically detect API races in deployed systems. RacePro checks deployed systems in-vivo by recording live executions then deterministically replay and check them later. This approach increases checking coverage beyond the configurations or executions covered by software vendors or beta testing sites. RacePro records multiple processes and threads, detects races in the recording among API methods that may concurrently access shared objects, then explores different execution orderings of such API methods to determine which races are harmful and result in failures. Technologies developed will help application developers detect insidious software defects, enabling more robust, reliable, and secure software infrastructure.

Project Start
Project End
Budget Start
2012-09-01
Budget End
2017-08-31
Support Year
Fiscal Year
2011
Total Cost
$800,000
Indirect Cost
Name
Columbia University
Department
Type
DUNS #
City
New York
State
NY
Country
United States
Zip Code
10027