Preview

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

Advanced search

Applying dynamic analysis to programs running in interpreted environments

https://doi.org/10.15514/ISPRAS-2017-29(1)-9

Abstract

The present-day trends in software engineering include the steady increase of code and design complexity which reinforces the high demand in automated software testing and analysis tools. In this paper, we showcase several dynamic program analysis applications and present our solutions. These applications include memory profiling, automated test generation using dynamic symbolic execution and automated detection of concurrency bugs in multithreaded programs. Our memory profiling tool is designed for Java applications for Android and it is implemented through Android Dalvik VM modification. This approach allowed us to overcome existing Dalvik VM limitations that make existing profiling tools based on dynamic bytecode instrumentation inaccessible. We have successfully applied our tool to several core Android applications - the results provided in the paper outline the effectiveness of the approach. The second solution we discuss in the paper - dynamic symbolic execution for test generation automation - allows us to efficiently generate test scenarios for Java program graphical user interface. The core technologies of the approach include the use of static bytecode instrumentation and automatic GUI model extraction. We implement the approach on top of a user interface test automation framework GUITAR. Finally, we present our approach to automatically identify concurrency bugs in multithreaded Java applications. The approach is based on static bytecode instrumentation for trace generation and employs ThreadSanitizer defect detection tool for identifying bugs.

About the Authors

S. P. Vartanov
Institute for System Programming of the Russian Academy of Sciences
Russian Federation


M. K. Ermakov
Institute for System Programming of the Russian Academy of Sciences
Russian Federation


A. Y. Gerasimov
Institute for System Programming of the Russian Academy of Sciences
Russian Federation


References

1. The official announce of the Android 3.0 release [HTML] (http://developer.android.com/about/versions/android-3.0-highlights.html). Accessed at 01.12.2016

2. D. Bornstein. Dalvik VM internals (http://sites.google.com/site/io/dalvik-vm-internals) Accessed at 01.12.2016

3. David Detlefs, Christine Flood, Sete Heller, Tony Printezis. Garbage-first garbage collection. ISMM'4 Proceedings of the 4th international symposium on Memoty management. pp. 37-48. Vancouver, BC, Canada. October 24-25, 2004

4. Bao N. Nauyen, Bryan Robbins, Ishan Banerjee, Atif Memon. GUITAR: an innovative tool for automated testinf of GUI-driven software. Automated Software Engineering, Volutme 21, Issue 1, March 2014. pp. 65-105.

5. Willem Visser, Corina S. Pāsāreanu, Sarfranz Khurshid. Test input generation with java PathFinder. ISSTA '04 Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis. pp. 97-107. Boston, Massachusetts, USA. July 11-14, 2004.

6. Kasper Luckow, Marko Dimjašević, Dimitra Giannakopoulou, Falk Howar, Malte Isberner, Temesghen Kahsai, Zvonimir Rakamarić, Vashwanath Raman. JDart: a dynamic symbolic analysis framework. Proceedings of the 22nd International Conference on Tools and Algorithms for the Construction and Analysis of Systems, Volume 9636. pp. 442-459. Springer-Verlang New Yor, Inc, New York, NY, USA. April 02-08, 2016.

7. S. P. Vartanov, M. K. Ermakov. Applying Java bytecode static instrumentation for software dynamic analysis. Trudy ISP RAN / Proc. ISP RAS, volume 27, issue 1, 2015, pp. 25-38 (in Russian). DOI: 10.15514/ISPRAS-2015-27(1)-2.

8. U. Banerjee, B. Bliss, Zh. Ma, P. Petersen. Unraveling Data Race Detection in the Intel® Thread Checker. In Proceedings of STMCS ’06. Manhattan, NY, USA, 2006

9. The manual for Sun Thread Analyzer [HTML] (http://docs.oracle.com/cd/E19205-01/820-4155/tha.html) Accessed at 01.12.2016

10. N. Nethercote and J. Seward. Valgrind: A Framework for Heavyweight Dynamic Binary Instrumentation. Proceedings of ACM SIGPLAN 2007 Conference on Programming Language Design and Implementation (PLDI 2007), San Diego, California, USA, 2007

11. Ali Jannesari, Walter F. Tichy, Victor Pankratius, Kaibin Bao. Helgrind+: an efficient dynamic race detector. Parallel and Distributed Processing Symposium, International (2009). pp. 1-13. Rome, Italy, May 23-29, 2009

12. K. Serebryany and T. Iskhodzhanov. ThreadSanitizer - data race detection in practice. WBIA '09, New York City, NY, USA, 2009

13. Ali Jannesari, Markus Westpahl-Futuya, Walter F Tichy. Dynamic data race detection for correlated variables. ICA3PP’11 Proceedings of the 11th international conference on Algorithms and architectures for parallel processing, Colume Part I. pp. 14-26. Melbourne, Austratia. October 24-26, 2011

14. E. Bruneton, R. Lenglet, T. Coupaye. ASM: a code manipulation tool to implement adaptable systems. Adaptable and extensible systems, November 2002. Grenoble, France.

15. Apache Commons Byte Code Engineering Library [HTML] (http://commons.apache.org/bcel) Accessed at 01.12.2016


Review

For citations:


Vartanov S.P., Ermakov M.K., Gerasimov A.Y. Applying dynamic analysis to programs running in interpreted environments. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2017;29(1):135-148. (In Russ.) https://doi.org/10.15514/ISPRAS-2017-29(1)-9



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


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