dc.description.abstract | Races are common in all concurrency systems, including multithreaded programs, event-driven programs, distributed systems, etc. Existing static tools cannot scale well on large programs or report too many false positives due to not reasoning happens-before relations. While dynamic tools are bound by test inputs, thus they do not expose all potential bugs.
This thesis presents an efficient race detection framework design along with two implementations, SWORD and SDROID, that can efficiently detect races on real-world Java programs and Android apps. The design leverages the state-of-the-art context-sensitive pointer analysis and uses a concept called "origin" to compute the alias information between concurrent entities efficiently (e.g., threads, events, etc.). It then detects races based on a flow-sensitive lockset algorithm and a highly optimized Static Happens-Before (SHB) graph. To further support race detection on Android apps, we create an abstract thread model for Android systems and extend our race detection framework on it.
Our evaluation compares SWORD with two state-of-the-art static race detectors. The results indicate SWORD achieves a 10x speedup over previous work and has the highest precision on whole program race detection for Java programs. We also use SDROID to expose some previously unknown bugs in some popular Android apps. | en |