RaceMob is a novel data race detector that has both low overhead and good accuracy. RaceMob first detects potential races statically (hence it has few false negatives), and then dynamically validates whether these are true races (hence has few false positives). It achieves low runtime overhead and a high degree of realism by combining real-user crowdsourcing with a new on-demand dynamic data race validation technique. RaceMob is the first data race detector that can be used always-on and in-production, while also providing better accuracy than today’s race detectors.

RaceMob’s high-level goal is to change the way software is deployed and maintained today by improving the existing process significantly.

Today, users download a program from an application home (like the AppStore) and use it. Occasionally, users may report issues in their software, which the developer needs to examine and figure out what the problem exactly is.

In RaceMob, the flow is different; developers again upload the program to the application home. RaceMob then instruments the program with instrumentation around potentially racing accesses determined through static detection. Then, users use the program as they would use the uninstrumented one, while performing data race validation. Consequently, the developers know exactly what the issues are and can fix them more efficiently than they do today.

Today's usage model
RaceMob's vision

RaceMob operates in three main steps shown below to perform data race detection. In step 1, It employs static data race detection which is mostly complete but inaccurate to narrow down the set of all memory accesses to the potentially racing ones. In step 2, it further narrows this set down to likely accesses through dynamic context inference, and to true races through its new on-demand validation algorithm. Finally, step 3 crowdsources step 2 to multiple users to reduce the per-user overhead. For more details, please see the paper.

If you are interested in obtaining RaceMob, please contact us.