Preview

Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS)

Advanced search

Automatic concurrency defect detection for Android applications

Abstract

This paper describes issues related to automatic detection of concurrency defects using dynamic analysis methods with primary target subject as the Android platform. Due to the increased popularity and spread of Android platform and, more importantly, high importance of concurrent work flow for all user applications on this platform, automatic tools for defect detection are likely to be beneficial for many developers. The paper is organised as follows: section 1 provides a brief introduction to the discussed subjects (concurrency basics, Android platform basics). Section 2 discusses theoretical base for a set of dynamic concurrency detection methods. Section 3 contains an overview of several key points in Android work flow related to native code execution in system utilities and in user applications through the JNI mechanisms. This overview is followed by a description of existing tools implementing concurrency defect detection methods for native code and the practical considerations of applying these tools for Android analysis. Section 4 provides the information on Java-oriented tools for concurrency defect detection (Java ThreadSanitizer and Coffee Machine) with the major focus on Coffee Machine, developed within the scope of this project. An overview of Coffee Machine tool functionality and base methods is given, followed by an evaluation of practical application of the tool to Android platform. Section 5 concludes the paper with an evaluation of key issues for both native and Java dynamic analysis for automatic concurrency defect detection.

About the Authors

V. P. Ivannikov
ISP RAS, Moscow
Russian Federation


S. P. Vartanov
ISP RAS, Moscow
Russian Federation


M. K. Ermakov
ISP RAS, Moscow
Russian Federation


References

1. Android 3.0 official release statement. [HTML] (http://developer.android.com/about/versions/android-3.0-highlights.html)

2. L. Lamport. Time, clocks, and the ordering of events in a distributed system. Communications of the ACM, 21(7), 1978. pp. 558–565. doi: 10.1145/359545.359563

3. R. O’Callahan and J.-D. Choi. Hybrid dynamic data race detection. Proceedings of the ninth ACM SIGPLAN symposium on Principles and practice of parallel programming 2003. pp. 167–178. doi: 10.1145/781498.781528

4. Julian Seward. Valgrind on Android — Current Status. [HTML] (http://blog.mozilla.org/jseward/2011/09/27/valgrind-on-android-current-status)

5. U. Banerjee, B. Bliss, Zh. Ma, P. Petersen. Unraveling Data Race Detection in the Intel® Thread Checker. Presented at The First Workshop on Software Tools for Multi-core Systems (STMCS), in conjunction with IEEE/ACM International Symposium on Code Generation and Optimization (CGO), 2006.

6. Sun Thread Analyzer documentation [HTML] (http://docs.oracle.com/cd/E19205-01/820-4155/tha.html)

7. K. Serebryany and T. Iskhodzhanov. ThreadSanitizer – data race detection in practice. Proceedings of the Workshop on Binary Instrumentation and Applications, 2009. pp. 62-71. doi: 10.1145/1791194.1791203

8. Nethercote N., Seward J. Valgrind: A framework for heavyweight dynamic binary instrumentation. Proceedings of ACM SIGPLAN conference on Programming language design and implementation, 2007. pp. 89-100. doi: 10.1145/1250734.1250746

9. Valgrind changelog [HTML] (http://valgrind.org/docs/manual/dist.news.html)

10. Bruneton E. ASM 4.0. A Java bytecode engineering library, 2011 [PDF] (http://download.forge.objectweb.org/asm/asm4-guide.pdf)

11. V. Ganesh and D. Dill. A decision procedure for bit-vectors and arrays. Proceedings of the 19th international conference on Computer aided verification, 2007. pp. 519-531

12. Apache Commons Byte Code Engineering Library [HTML] (http://commons.apache.org/bcel)

13. Atif Memon. An event-flow model of GUI-based applications for testing. Software Testing, Verification & Reliability. Volume 17 Issue 3, 2007. pp. 137-157. doi: 10.1002/stvr.v17:3

14. Atif M. Memon, Ishan Banerjee, and Adithya Nagarajan. GUI Ripping: Reverse Engineering of Graphical User Interfaces for Testing. In Proceedings of The 10th Working Conference on Reverse Engineering, 2003. pp. 260 – 269. doi: 10.1109/WCRE.2003.1287256


Review

For citations:


Ivannikov V.P., Vartanov S.P., Ermakov M.K. Automatic concurrency defect detection for Android applications. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2013;24. (In Russ.)



Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)