nAdroid: Statically Detecting Ordering Violations in Android Applications
X. Fu, D. Lee, und C. Jung. Proceedings of the 2018 International Symposium on Code Generation and Optimization, Seite 62--74. ACM, (2018)
DOI: 10.1145/3168829
Zusammenfassung
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.
Beschreibung
nAdroid: statically detecting ordering violations in Android applications
%0 Conference Paper
%1 Fu:2018:NSD
%A Fu, Xinwei
%A Lee, Dongyoon
%A Jung, Changhee
%B Proceedings of the 2018 International Symposium on Code Generation and Optimization
%D 2018
%I ACM
%K Android Concurrency EventLoop Issues RaceDetection
%P 62--74
%R 10.1145/3168829
%T nAdroid: Statically Detecting Ordering Violations in Android Applications
%X 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.
%@ 978-1-4503-5617-6
@inproceedings{Fu:2018:NSD,
abstract = {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.},
acmid = {3168829},
added-at = {2018-09-23T00:49:51.000+0200},
author = {Fu, Xinwei and Lee, Dongyoon and Jung, Changhee},
biburl = {https://www.bibsonomy.org/bibtex/203503b4196e647f7866329de3930af6a/gron},
booktitle = {Proceedings of the 2018 International Symposium on Code Generation and Optimization},
description = {nAdroid: statically detecting ordering violations in Android applications},
doi = {10.1145/3168829},
interhash = {82260389ddadb97d92464cbcefb65a24},
intrahash = {03503b4196e647f7866329de3930af6a},
isbn = {978-1-4503-5617-6},
keywords = {Android Concurrency EventLoop Issues RaceDetection},
location = {Vienna, Austria},
numpages = {13},
pages = {62--74},
publisher = {ACM},
series = {CGO 2018},
timestamp = {2018-09-23T00:49:51.000+0200},
title = {{nAdroid: Statically Detecting Ordering Violations in Android Applications}},
year = 2018
}