About DroidRacer

DroidRacer is a dynamic race detection tool for Android applications. It has been built by modifying 
and instrumenting android-4.0.1_r1. It implements an offline race detection algorithm [1].
 
DroidRacer has three components:
(i) UI Explorer : Scans the UI state of the test application during runtime, and  automatically exercises
UI events on the test application. It is capable of generating UI events like click, long click, BACK button
press, and text data input, to name a few. The number of events generated is limited by a user defined
bound k and the order of triggering events on a screen is determined by pre-defined event priorities. The
UI of test application is explored in a depth-first search manner by systematically backtracking when the
event-sequence-length bound is reached, or the control goes out of test application.  

(ii) Trace Generator : As the UI explorer drives the test application, the Trace Generator logs operations 
performed by the application which are relevant for race detection (e.g., read, write, lock, asynchronous
post, fork). DroidRacer only tracks operations within the test application, but Android applications 
interact with system process and other application processes which can affect the actions performed
by them. We model the effect of application's environment through special operations. This is necessary
to reduce the number of false positive races reported.

(iii) Race Detector : It takes the trace generated by the race detector as input, constructs a happens-before
graph according to rules given in [1] and detects races.

DroidRacer has been tested on the following applications:

DroidRacer detected several races on the above applications and a few leading to bad behaviours too.
Details on results can be found in  [1].


DroidRacer source code

* DroidRacer source and its related files can be cloned as follows: 
$git clone https://adityakanade@bitbucket.org/iiscseal/droidracer.git
$git clone https://adityakanade@bitbucket.org/iiscseal/droidracer-related-files.git

* After cloning, read the readme-droidRacer.txt file in droidRacer directory. It gives a step-by-step instructions
to set up DroidRacer.  

* In order to test DroidRacer read the readme.txt file in droidracer-related-files directory. We have provided 
source code of a sample test application in droidRacer-related-files/sample-app folder.  The source code
corresponds to Tomdroid Notes application and can be compiled using Android Developer Tool (ADT)
plugin for eclipse IDE which can be downloaded from http://developer.android.com/sdk/index.html . 

* Instructions to reproduce DroidRacer runs corresponding to results reported in our PLDI 2014 paper
"Race Detection for Android Applications" can be found in droidRacer-related-files/readme.txt .


Related Publications 

[1] Pallavi Maiya, Aditya Kanade and Rupak Majumdar
     35th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), 2014

People

Contact

In case of any queries drop a mail to pallavi dot maiya at csa dot iisc dot ernet dot in

Acknowledgements

This work is partially supported by the Indo-German Max Planck Center for Computer Science (IMPECS). We also thank IARCS and Microsoft Research India for student travel grants to partially support travel to present this work at PLDI 2014. Pallavi Maiya is supported by a Google PhD Fellowship since July 2014. 

LICENSE

DroidRacer is available under the Apache License, version 2.0.