RacerX
- 19 October 2003
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGOPS Operating Systems Review
- Vol. 37 (5), 237-252
- https://doi.org/10.1145/1165389.945468
Abstract
This paper describes RacerX, a static tool that uses flow-sensitive, interprocedural analysis to detect both race conditions and deadlocks. It is explicitly designed to find errors in large, complex multithreaded systems. It aggressively infers checking information such as which locks protect which operations, which code contexts are multithreaded, and which shared accesses are dangerous. It tracks a set of code features which it uses to sort errors both from most to least severe. It uses novel techniques to counter the impact of analysis mistakes. The tool is fast, requiring between 2-14 minutes to analyze a 1.8 million line system. We have applied it to Linux, FreeBSD, and a large commercial code base, finding serious errors in all of them. RacerX is a static tool that uses flow-sensitive, interprocedural analysis to detect both race conditions and deadlocks. It uses novel strategies to infer checking information such as which locks protect which operations, which code contexts are multithreaded, and which shared accesses are dangerous. We applied it to FreeBSD, Linux and a large commercial code base and found serious errors in all of them.Keywords
This publication has 20 references indexed in Scilit:
- ESPPublished by Association for Computing Machinery (ACM) ,2002
- Ownership types for safe programmingPublished by Association for Computing Machinery (ACM) ,2002
- Bugs as deviant behaviorPublished by Association for Computing Machinery (ACM) ,2001
- Teapot: a domain-specific language for writing cache coherence protocolsIEEE Transactions on Software Engineering, 1999
- Detecting data races in Cilk programs that use locksPublished by Association for Computing Machinery (ACM) ,1998
- EraserACM Transactions on Computer Systems, 1997
- Evaluating deadlock detection methods for concurrent softwareIEEE Transactions on Software Engineering, 1996
- An empirical comparison of monitoring algorithms for access anomaly detectionPublished by Association for Computing Machinery (ACM) ,1990
- Experience with processes and monitors in MesaCommunications of the ACM, 1980
- Time, clocks, and the ordering of events in a distributed systemCommunications of the ACM, 1978