Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.5555/3340730.3340752acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

Characterizing Android-specific crash bugs

Published: 25 May 2019 Publication History

Abstract

Android platform provides a unique framework for app development. Failure to comply with the framework may result in serious bugs. Android platform is also evolving rapidly and developers extensively use APIs provided by the framework, which may lead to serious compatibility bugs if developers do not update the released apps frequently. Furthermore, Android apps run on a wide range of memory-constrained devices, which may cause various device-specific and memory-related bugs. There are several other Android-specific issues that developers need to address during app development and maintenance. Failure to address the issues may result in serious bugs manifested as crashes. In this paper, we perform an empirical study to investigate and characterize various Android-specific crash bugs, their prevalence, root causes, and solutions by analyzing 1,862 confirmed crash reports of 418 open source Android apps. The investigation results can help app developers in understanding, preventing, and fixing the Android-specific crash bugs. Moreover, the results can help app developers and researchers in designing effective bug detection tools for Android apps.

References

[1]
AppBrain - Number of available Android apps in the Play Store. http://www.appbrain.com/stats/number-of-android-apps.
[2]
S. L. Lim, P. J. Bentley, N. Kanakam, F. Ishikawa, and S. Honiden. Investigating country differences in mobile app user behavior and challenges for software engineering. IEEE Transactions on Software Engineering 41, no. 1 (2015): 40--64.
[3]
S. R. Choudhary, A. Gorla, and A. Orso. Automated test input generation for android: Are we there yet? In 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE), pp. 429--440. IEEE, 2015.
[4]
S. Zein, N. Salleh, and J. Grundy. A systematic mapping study of mobile application testing techniques. Journal of Systems and Software 117 (2016): 334--356.
[5]
P. S. Kochhar, F. Thung, N. Nagappan, T. Zimmermann, and D. Lo. Understanding the test automation culture of app developers. In 2015 IEEE 8th International Conference on Software Testing, Verification and Validation (ICST), pp. 1--10. IEEE, 2015.
[6]
M. E. Joorabchi, A. Mesbah, and P. Kruchten. Real challenges in mobile app development. In 2013 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement, pp. 15--24. IEEE, 2013.
[7]
M. Linares-Vásquez, G. Bavota, M. Tufano, K. Moran, M. D. Penta, C. Vendome, C. Bernal-Cárdenas, and D. Poshyvanyk. Enabling mutation testing for Android apps. In Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering, pp. 233--244. ACM, 2017.
[8]
C. Hu, and I. Neamtiu. Automating GUI testing for Android applications. In Proceedings of the 6th International Workshop on Automation of Software Test, pp. 77--83. ACM, 2011.
[9]
L. Fan, T. Su, S. Chen, G. Meng, Y. Liu, L. Xu, G. Pu, and Z. Su. Large-Scale Analysis of Framework-Specific Exceptions in Android Apps. In Proceedings of the 40th International Conference on Software Engineering, pp. 408--419. ACM, 2018.
[10]
P. Bhattacharya, L. Ulanova, I. Neamtiu, and S. C. Koduru. An empirical analysis of bug reports and bug fixing in open source android apps. In Proceedings of the 17th European Conference on Software Maintenance and Reengineering (CSMR), pp. 133--143. IEEE, 2013.
[11]
A. K. Maji, K. Hao, S. Sultana, and S. Bagchi. Characterizing failures in mobile oses: A case study with android and symbian. In 2010 IEEE 21st International Symposium on Software Reliability Engineering (ISSRE), pp. 249--258. IEEE, 2010.
[12]
M. E. Joorabchi, M. Mirzaaghaei, and A. Mesbah. Works for me! characterizing non-reproducible bug reports. In Proceedings of the 11th Working Conference on Mining Software Repositories, pp. 62--71. ACM, 2014.
[13]
A. Pathak, A. Jindal, Y. C. Hu, and S. P. Midkiff. What is keeping my phone awake?: characterizing and detecting no-sleep energy bugs in smartphone apps. In Proceedings of the 10th international conference on Mobile systems, applications, and services, pp. 267--280. ACM, 2012.
[14]
Y. Liu, C. Xu, S. Cheung, and V. Terragni. Understanding and detecting wake lock misuses for android applications. In Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp. 396--409. ACM, 2016.
[15]
Y. Liu, C. Xu, and S. Cheung. Characterizing and detecting performance bugs for smartphone applications. In Proceedings of the 36th International Conference on Software Engineering, pp. 1013--1024. ACM, 2014.
[16]
H. Shahriar, S. North, and E. Mawangi. Testing of memory leak in Android applications. In 2014 IEEE 15th International Symposium on High-Assurance Systems Engineering (HASE), pp. 176--183. IEEE, 2014.
[17]
A. K. Jha, S. Lee, and W. J. Lee. Developer mistakes in writing Android manifests: an empirical study of configuration errors. In Proceedings of the 14th International Conference on Mining Software Repositories, pp. 25--36. IEEE Press, 2017.
[18]
G. Hu, X. Yuan, Y. Tang, and J. Yang. Efficiently, effectively detecting mobile app bugs with appdoctor. In Proceedings of the Ninth European Conference on Computer Systems, p. 18. ACM, 2014.
[19]
A. Banerjee, L. K. Chong, S. Chattopadhyay, and A. Roychoudhury. Detecting energy bugs and hotspots in mobile apps. In Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp. 588--598. ACM, 2014.
[20]
K. Mao, M. Harman, and Y. Jia. Sapienz: Multi-objective automated testing for android applications. In Proceedings of the 25th International Symposium on Software Testing and Analysis, pp. 94--105. ACM, 2016.
[21]
L. Gomez, I. Neamtiu, T. Azim, and T. Millstein. Reran: Timing-and touch-sensitive record and replay for android. In Proceedings of the 35th International Conference on Software Engineering (ICSE), pp. 72--81. IEEE, 2013.
[22]
Y. Hu, T. Azim, and I. Neamtiu. Versatile yet lightweight record-and-replay for android. In ACM SIGPLAN Notices, vol. 50, no. 10, pp. 349--366. ACM, 2015.
[23]
Z. Qin, Y. Tang, E. Novak, and Q. Li. Mobiplay: A remote execution based record-and-replay tool for mobile applications. In Proceedings of the 38th International Conference on Software Engineering, pp. 571--582. ACM, 2016.
[24]
M. Gómez, R. Rouvoy, B. Adams, and L. Seinturier. Reproducing context-sensitive crashes of mobile apps using crowdsourced monitoring. In MOBILESoft'16, pp. 88--99. IEEE, 2016.
[25]
K. Moran, M. Linares-Vásquez, C. Bernal-Cárdenas, and D. Poshyvanyk. Auto-completing bug reports for android applications. In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering, pp. 673--686. ACM, 2015.
[26]
A. K. Jha and W. J. Lee. Capture and Replay Technique for Reproducing Crash in Android Applications. In Proceedings of the 12th IASTED International Conference in Software Engineering, pp. 783--790. 2013.
[27]
A. K. Jha, S. Jeong, and W. J. Lee. Value-deterministic search-based replay for android multithreaded applications. In Proceedings of the 2013 Research in Adaptive and Convergent Systems, pp. 381--386. ACM, 2013.
[28]
S.H. Tan, Z. Dong, X. Gao, and A. Roychoudhury. Repairing Crashes in Android Apps. In Proceedings of the 40th International Conference on Software Engineering, pp. 408--419. ACM, 2018.
[29]
F-Droid, Free and Open Source Android App Repository - https://f-droid.org/
[30]
Dataset - Android-specific crash bugs. https://github.com/HiFromAjay/Android-specific-Crash-Bugs/blob/master/Dataset.pdf
[31]
C.B. Seaman. Qualitative methods in empirical studies of software engineering. IEEE Transactions on software engineering 4 (1999): 557--572.
[32]
M.B. Miles, A.M. Huberman, and J. Saldaña J. Qualitative Data Analysis: A Methods Sourcebook (3rd ed.). SAGE Publications, Inc. 2013.
[33]
Context -https://developer.android.com/reference/android/content/Context.html
[34]
A. K. Jha, and W. J. Lee. An empirical study of collaborative model and its security risk in Android. Journal of Systems and Software. 137C (2018) pp. 550--562
[35]
Resources Overview -https://developer.android.com/guide/topics/resources/overview.html.
[36]
A. K. Jha and W. J. Lee. Analysis of Permission-based Security in Android through Policy Expert, Developer, and End User Perspectives. J. UCS 22, no. 4 (2016): 459--474.
[37]
Requesting permissions at run time -https://developer.android.com/training/permissions/requesting.html
[38]
Navigation with Back and Up -https://developer.android.com/design/patterns/navigation.html
[39]
D. Amalfitano, A. R. Fasolino, P. Tramontana, S. D. Carmine, and A. M. Memon. Using GUI ripping for automated testing of Android applications. In Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering, pp. 258--261. ACM, 2012.
[40]
W. Yang, M. R. Prasad, and T. Xie. A Grey-Box Approach for Automated GUI-Model Generation of Mobile Applications. In FASE, vol. 13, pp. 250--265. 2013.
[41]
T. Azim, and I. Neamtiu. Targeted and depth-first exploration for systematic testing of android apps. In Acm Sigplan Notices, vol. 48, no. 10, pp. 641--660. ACM, 2013.
[42]
W. Choi, G. Necula, and K. Sen. Guided gui testing of android apps with minimal restart and approximate learning. In Acm Sigplan Notices, vol. 48, no. 10, pp. 623--640. ACM, 2013.
[43]
R. N. Zaeem, M. R. Prasad, and S. Khurshid. Automated generation of oracles for testing user-interaction features of mobile apps. In Proceedings of the Seventh International Conference on Software Testing, Verification and Validation (ICST), pp. 183--192. IEEE, 2014.
[44]
C. Q. Adamsen, G. Mezzetti, and A. Møller. Systematic execution of android test suites in adverse conditions. In Proceedings of the 2015 International Symposium on Software Testing and Analysis, pp. 83--93. ACM, 2015.
[45]
Z. Shan, T. Azim, and I. Neamtiu. Finding resume and restart errors in Android applications. In Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, pp. 864--880. ACM, 2016.
[46]
T. Su, G. Meng, Y. Chen, K. Wu, W. Yang, Y. Yao, G. Pu, Y. Liu, and Z. Su. Guided, stochastic model-based GUI testing of Android apps. In Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering, pp. 245--256. ACM, 2017.
[47]
M. D. Syer, B. Adams, Y. Zou, and A. E. Hassan. Exploring the development of micro-apps: A case study on the blackberry and android platforms. In 2011 11th IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM), pp. 55--64. IEEE, 2011.
[48]
M. D. Syer, M. Nagappan, A. E. Hassan, and B. Adams. Revisiting prior empirical findings for mobile apps: An empirical case study on the 15 most popular open-source android apps. In Proceedings of the 2013 Conference of the Center for Advanced Studies on Collaborative Research, pp. 283--297. IBM Corp., 2013.
[49]
T. McDonnell, B. Ray, and M. Kim. An empirical study of api stability and adoption in the android ecosystem. In 2013 29th IEEE International Conference on Software Maintenance (ICSM), pp. 70--79. IEEE, 2013.
[50]
M. Linares-Vásquez, G. Bavota, C. Bernal-Cárdenas, M. D. Penta, R. Oliveto, and D. Poshyvanyk. Api change and fault proneness: A threat to the success of android apps. In Proceedings of the 2013 9th joint meeting on foundations of software engineering, pp. 477--487. ACM, 2013.
[51]
L. Wei, Y. Liu, and S. Cheung. Taming android fragmentation:Characterizing and detecting compatibility issues for android apps. In Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering, pp. 226--237. ACM, 2016.
[52]
L. Li, T. F. Bissyandé, H. Wang, and J. Klein. CiD: automating the detection of API-related compatibility issues in Android apps. In Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis, pp. 153--163. ACM, 2018.
[53]
K. W. Y. Au, Y. F. Zhou, Z. Huang, and D. Lie. Pscout: analyzing the android permission specification. In Proceedings of the 2012 ACM conference on Computer and communications security, pp. 217--228. ACM, 2012.
[54]
A. P. Felt, E. Chin, S. Hanna, D. Song, and D. Wagner. Android permissions demystified. In Proceedings of the 18th ACM conference on Computer and communications security, pp. 627--638. ACM, 2011.
[55]
A. Bartel, J. Klein, M. Monperrus, and Y. L. Traon. Static analysis for extracting permission checks of a large scale framework: The challenges and solutions for analyzing android. IEEE Transactions on Software Engineering 40, no. 6 (2014): 617--632.
[56]
UI/Application Exerciser Monkey -https://developer.android.com/studio/test/monkey.html
[57]
A. K. Maji, F. A. Arshad, S. Bagchi, and J. S. Rellermeyer. An empirical study of the robustness of inter-component communication in Android. In 2012 42nd annual IEEE/IFIP international conference on Dependable systems and networks (DSN), pp. 1--12. IEEE, 2012.
[58]
D. Octeau, D. Luchaup, M. Dering, S. Jha, and P. McDaniel. Composite constant propagation: Application to android inter-component communication analysis. In Proceedings of the 37th International Conference on Software Engineering, pp. 77--88. IEEE Press, 2015.
[59]
L. Li, A. Bartel, T. F. Bissyandé, J. Klein, Y. L. Traon, S. Arzt, S. Rasthofer, E. Bodden, D. Octeau, and P. McDaniel. Iccta: Detecting inter-component privacy leaks in android apps. In Proceedings of the 37th International Conference on Software Engineering, pp. 280--291. IEEE Press, 2015.
[60]
A. K. Jha, S. Lee, and W. J. Lee. Modeling and test case generation of inter-component communication in Android. In Proceedings of the Second ACM International Conference on Mobile Software Engineering and Systems, pp. 113--116. IEEE Press, 2015.
[61]
R. Sasnauskas, and J. Regehr. Intent fuzzer: crafting intents of death. In Proceedings of the 2014 Joint International Workshop on Dynamic Analysis (WODA) and Software and System Performance Testing, Debugging, and Analytics (PERTEA), pp. 1--5. ACM, 2014.
[62]
P. Zhang, and S. Elbaum. Amplifying tests to validate exception handling code: An extended study in the mobile application domain. ACM Transactions on Software Engineering and Methodology (TOSEM) 23, no. 4 (2014): 32.
[63]
B. Meyer. Ending null pointer crashes. Communications of the ACM 60, no. 5 (2017): 8--9.
[64]
R. Coelho, L. Almeida, G. Gousios, and A. V. Deursen. Unveiling exception handling bug hazards in Android based on GitHub and Google code issues. In 2015 IEEE/ACM 12th Working Conference on Mining Software Repositories (MSR), pp. 134--145. IEEE, 2015.

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
MOBILESoft '19: Proceedings of the 6th International Conference on Mobile Software Engineering and Systems
May 2019
187 pages

Sponsors

Publisher

IEEE Press

Publication History

Published: 25 May 2019

Check for updates

Author Tags

  1. Android apps
  2. characterizing crash bugs
  3. crash bug analysis
  4. mining crash bugs

Qualifiers

  • Research-article

Conference

ICSE '19
Sponsor:

Upcoming Conference

ICSE 2025

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 88
    Total Downloads
  • Downloads (Last 12 months)7
  • Downloads (Last 6 weeks)0
Reflects downloads up to 23 Dec 2024

Other Metrics

Citations

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media