Facebook has begun offering broad access to RacerD, a tool intended to tackle the longstanding problem of race conditions in software.
RacerD had been available as a prototype, accessible in Facebook’s open source code base only through a series of backdoor options, said codeveloper Sam Blackshear, a Facebook research scientist. Now, the tool will run by default in Facebook’s open source Infer static analysis tool for bug detection. Initially, RacerD is available only for Java code. But plans call for expanding coverage to other languages, including C++.
With race conditions, overlapping processes trying to access the same data concurrently can cause conflicts in programs. These concurrency errors can be difficult to debug or even reproduce. “This has really been a hard problem” in computing for about 50 years, said Peter O’Hearn, a research scientist on the Infer team and co-author of RacerD.
RacerD was tested in production on Facebook’s News Feed application, where it stopped more than 1,000 bugs from making it into the production application, Facebook said. And RacerD let rogrammers could thousands of lines of code to accommodate concurrency.
Inspired by the theoretical foundation of concurrent separation logic, a mathematical theory developed by O’Hearn, RacerD offers new algorithmic techniques to code problems and potential consequences in systems before they run. Developers typically address detected race conditions by adding locks.