Facebook’s RacerD detects hard-to-find race conditions in Java code
Facebook has started offering wide access to RacerD, a tool designed to address the long-standing problem of competitive conditions in software.
RacerD was available as a prototype, accessible in Facebook’s open source codebase only through a series of backdoor options, said code developer Sam Blackshear, a Facebook researcher. Now, the tool will run by default in Facebook’s open source Infer static analysis tool for bug detection. Initially, RacerD is only available for Java code. But plans call for extending coverage to other languages, including C ++.
With race conditions, overlapping processes trying to access the same data simultaneously can cause conflicts in programs. These concurrency errors can be difficult to debug or even reproduce. “This has really been a difficult problem” in computing for about 50 years, said Peter O’Hearn, a research scientist on Team Infer and co-author of RacerD.
RacerD was tested in production on Facebook’s news feed app, where it prevented more than 1,000 bugs from being incorporated into the production app, Facebook said. And RacerD let programmers use 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 proposes new algorithmic techniques for coding problems and potential consequences in systems before they run. Developers typically address detected race conditions by adding locks.
Copyright © 2017 IDG Communications, Inc.