Preview

Труды Института системного программирования РАН

Расширенный поиск

Автоматический поиск ошибок синхронизации в приложениях на платформе Android

Аннотация

В данной статье рассматривается задача автоматического поиска ошибок синхронизации при проведении динамического анализа приложений в рамках платформы Android. Приводится теоретический обзор существующих методов проведения подобного анализа, затем рассматриваются основные особенности приложений платформы Android с точки зрения применения данных методов. Приводится обзор существующих инструментов для анализа компонентов Android-приложений как в нативном кода на языке Си, так и реализованных на языке Java. Также в статье описан механизм обнаружения ошибок синхронизации, используемый инструментом динамического анализа байт-кода Coffee Machine и его основные аспекты: инструментирование, генерация трассы отношений предшествования и использование инструмента ThreadSanitizer Offline для обнаружения состояния гонок по сгенерированной трассе для платформы Android.

Об авторах

В. П. Иванников
ИСП РАН
Россия


С. П. Вартанов
ИСП РАН
Россия


М. К. Ермаков
ИСП РАН
Россия


Список литературы

1. Официальный анонс выпуска Android 3.0 [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):558–565, 1978.

3. R. O’Callahan and J.-D. Choi. Hybrid dynamic data race detection. In PPoPP ’03: Proceedings of the ninth ACM SIGPLAN symposium on Principles and practice of parallel programming, pages 167–178, New York, NY, USA, 2003.

4. Julian Seward. Анализ текущего состояния инструмента Valgrind в контексте использования на платформе Android [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. In Proceedings of STMCS ’06. Manhattan, NY, USA, 2006

6. Руководство по инструменту Sun Thread Analyzer [HTML] (http://docs.oracle.com/cd/E19205-01/820-4155/tha.html)

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

8. 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.

9. Примечания к выпускам версий Valgrind [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. In CAV 2007, LNCS 4590, pages 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, pages 137-157. John Wiley and Sons Ltd. Chichester, UK, 2007

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, Nov. 2003


Рецензия

Для цитирования:


Иванников В.П., Вартанов С.П., Ермаков М.К. Автоматический поиск ошибок синхронизации в приложениях на платформе Android. Труды Института системного программирования РАН. 2013;24.

For citation:


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
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


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