nAdroid: statically detecting ordering violations in Android applications

X Fu, D Lee, C Jung - Proceedings of the 2018 International Symposium …, 2018 - dl.acm.org
Proceedings of the 2018 International Symposium on Code Generation and …, 2018dl.acm.org
Modern mobile applications use a hybrid concurrency model. In this model, events are
handled sequentially by event loop (s), and long-running tasks are offloaded to other
threads. Concurrency errors in this hybrid concurrency model can take multiple forms:
traditional atomicity and ordering violations between threads, as well as ordering violations
between event callbacks on a single event loop. This paper presents nAdroid, a static
ordering violation detector for Android applications. Using our threadification technique …
Modern mobile applications use a hybrid concurrency model. In this model, events are handled sequentially by event loop(s), and long-running tasks are offloaded to other threads. Concurrency errors in this hybrid concurrency model can take multiple forms: traditional atomicity and ordering violations between threads, as well as ordering violations between event callbacks on a single event loop.
This paper presents nAdroid, a static ordering violation detector for Android applications. Using our threadification technique, nAdroid statically models event callbacks as threads. Threadification converts ordering violations between event callbacks into ordering violations between threads, after which state-of-the-art thread-based race detection tools can be applied. nAdroid then applies a combination of sound and unsound filters, based on the Android concurrency model and its happens-before relation, to prune out false and benign warnings.
We evaluated nAdroid with 27 open source Android applications. Experimental results show that nAdroid detects 88 (at least 58 new) harmful ordering violations, and outperforms the state-of-the-art static technique with fewer false negatives and false positives.
ACM Digital Library
Showing the best result for this search. See all results