{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:59:44Z","timestamp":1750309184838,"version":"3.41.0"},"reference-count":58,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2024,4,13]],"date-time":"2024-04-13T00:00:00Z","timestamp":1712966400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/501100001809","name":"National Natural Science Foundation of China","doi-asserted-by":"crossref","award":["62272440, 62332012, 62202266, and 62372166"],"award-info":[{"award-number":["62272440, 62332012, 62202266, and 62372166"]}],"id":[{"id":"10.13039\/501100001809","id-type":"DOI","asserted-by":"crossref"}]},{"DOI":"10.13039\/501100012166","name":"National Key R&D Program of China","doi-asserted-by":"crossref","award":["2022YFB4500703"],"award-info":[{"award-number":["2022YFB4500703"]}],"id":[{"id":"10.13039\/501100012166","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Sen. Netw."],"published-print":{"date-parts":[[2024,5,31]]},"abstract":"<jats:p>Android system has been widely deployed in energy-constrained IoT devices for many practical applications, such as smart phone, smart home, healthcare, fitness, and beacons. However, Android users oftentimes suffer from app crashes, which directly disrupt user experience and could lead to data loss. Till now, the community have limited understanding of their prevalence, characteristics, and root causes. In this article, we make an in-depth study of the crash events regarding ten very popular apps of different genres, based on fine-grained system-level traces crowd-sourced from 93 million Android devices. We find that app crashes occur prevalently on the various hardware models studied, and better hardware does not seem to essentially relieve the problem. Most importantly, we unravel multi-fold root causes of app crashes, and pinpoint that the most crashes stem from the subtle yet crucial inconsistency between app developers\u2019 supposed memory\/process management model and Android\u2019s actual implementations. We design practical approaches to addressing the inconsistency; after large-scale deployment, they reduce 40.4% of the app crashes with negligible system overhead. In addition, we summarize important lessons learned from this study, and have released our measurement code\/data to the community.<\/jats:p>","DOI":"10.1145\/3649895","type":"journal-article","created":{"date-parts":[[2024,2,29]],"date-time":"2024-02-29T12:28:35Z","timestamp":1709209715000},"page":"1-24","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":1,"title":["Who Should We Blame for Android App Crashes? An In-Depth Study at Scale and Practical Resolutions"],"prefix":"10.1145","volume":"20","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-9067-8733","authenticated-orcid":false,"given":"Liangyi","family":"Gong","sequence":"first","affiliation":[{"name":"CNIC, Chinese Academy of Sciences, Beijing, China and University of Chinese Academy of Sciences, Beijing, China"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-9990-5090","authenticated-orcid":false,"given":"Hao","family":"Lin","sequence":"additional","affiliation":[{"name":"School of Software, Tsinghua University, Beijing, China"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-8268-2951","authenticated-orcid":false,"given":"Daibo","family":"Liu","sequence":"additional","affiliation":[{"name":"School of Computer Science and Electronic Engineering, Hunan University, Changsha, China"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-6124-2458","authenticated-orcid":false,"given":"Lanqi","family":"Yang","sequence":"additional","affiliation":[{"name":"University of Chinese Academy of Sciences, Beijing, China"}]},{"ORCID":"https:\/\/orcid.org\/0009-0006-0034-0074","authenticated-orcid":false,"given":"Hongyi","family":"Wang","sequence":"additional","affiliation":[{"name":"School of Software, Tsinghua University, Beijing, China"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-0223-3994","authenticated-orcid":false,"given":"Jiaxing","family":"Qiu","sequence":"additional","affiliation":[{"name":"School of Software, Tsinghua University, Beijing, China"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-7286-122X","authenticated-orcid":false,"given":"Zhenhua","family":"Li","sequence":"additional","affiliation":[{"name":"School of Software, Tsinghua University, Beijing, China"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-8509-2650","authenticated-orcid":false,"given":"Feng","family":"Qian","sequence":"additional","affiliation":[{"name":"Ming Hsieh Department of ECE, University of Southern California, Los Angeles CA,  USA"}]}],"member":"320","published-online":{"date-parts":[[2024,4,13]]},"reference":[{"doi-asserted-by":"publisher","key":"e_1_3_2_2_2","DOI":"10.1145\/1868447.1868469"},{"doi-asserted-by":"publisher","key":"e_1_3_2_3_2","DOI":"10.1145\/2393596.2393666"},{"doi-asserted-by":"publisher","key":"e_1_3_2_4_2","DOI":"10.1145\/2666356.2594299"},{"doi-asserted-by":"publisher","key":"e_1_3_2_5_2","DOI":"10.1145\/2259051.2259056"},{"doi-asserted-by":"publisher","key":"e_1_3_2_6_2","DOI":"10.1145\/1646353.1646374"},{"key":"e_1_3_2_7_2","article-title":"Mobile App Download and Usage Statistics","year":"2021","unstructured":"Buildfire. 2021. Mobile App Download and Usage Statistics. Retrieved from https:\/\/buildfire.com\/app-statistics\/","journal-title":"R"},{"doi-asserted-by":"publisher","key":"e_1_3_2_8_2","DOI":"10.1145\/3293882.3330564"},{"doi-asserted-by":"publisher","key":"e_1_3_2_9_2","DOI":"10.1007\/978-3-319-17524-9_1"},{"doi-asserted-by":"publisher","key":"e_1_3_2_10_2","DOI":"10.1109\/ICECENG.2011.6057644"},{"key":"e_1_3_2_11_2","article-title":"A Cache with a Bad Policy is Another Name for a Memory Leak","author":"Chen Raymond","year":"2006","unstructured":"Raymond Chen. 2006. A Cache with a Bad Policy is Another Name for a Memory Leak. Retrieved from https:\/\/devblogs.microsoft.com\/oldnewthing\/20060502-07\/?p=31333","journal-title":"R"},{"doi-asserted-by":"publisher","key":"e_1_3_2_12_2","DOI":"10.1145\/2884781.2884844"},{"unstructured":"Android Developer. 2023. Android App-Not-Responding (ANR) Event. Retrieved from https:\/\/developer.android.com\/topic\/performance\/vitals\/anr","key":"e_1_3_2_13_2"},{"key":"e_1_3_2_14_2","article-title":"Android Crashes","author":"Developer Android","year":"2023","unstructured":"Android Developer. 2023. Android Crashes. Retrieved from https:\/\/developer.android.com\/topic\/performance\/vitals\/crash","journal-title":"R"},{"unstructured":"Android Developer. 2023. Android Vitals Performance Monitor. Retrieved from https:\/\/developer.android.com\/topic\/performance\/vitals","key":"e_1_3_2_15_2"},{"unstructured":"Android Developer. 2023. Bug Fixes in SurfaceTexture. Retrieved from https:\/\/android.googlesource.com\/platform\/frameworks\/base\/+\/19b6bcfd83eb7fb92ebd06d2fec89e308311f1d0%5E%21\/#F4","key":"e_1_3_2_16_2"},{"unstructured":"Android Developer. 2023. Inspect your app\u2019s memory usage with Memory Profiler. Retrieved from https:\/\/developer.android.com\/studio\/profile\/memory-profiler","key":"e_1_3_2_17_2"},{"unstructured":"Android Developer. 2023. Manage your app\u2019s memory. Retrieved from https:\/\/developer.android.com\/topic\/performance\/memory","key":"e_1_3_2_18_2"},{"unstructured":"Android Developer. 2023. SwitchingApps. Retrieved from https:\/\/developer.android.com\/topic\/performance\/memory-overview#SwitchingApps","key":"e_1_3_2_19_2"},{"unstructured":"Android Developer. 2023. The Slow Rendering of Android. Retrieved from https:\/\/developer.android.com\/topic\/performance\/vitals\/render","key":"e_1_3_2_20_2"},{"unstructured":"Android Developer. 2023. UI\/Application Exerciser Monkey. Retrieved from https:\/\/developer.android.com\/studio\/test\/monkey","key":"e_1_3_2_21_2"},{"doi-asserted-by":"publisher","key":"e_1_3_2_22_2","DOI":"10.1145\/3197231.3197255"},{"doi-asserted-by":"publisher","key":"e_1_3_2_23_2","DOI":"10.1145\/3180155.3180222"},{"doi-asserted-by":"publisher","key":"e_1_3_2_24_2","DOI":"10.1145\/3210240.3210327"},{"doi-asserted-by":"publisher","key":"e_1_3_2_25_2","DOI":"10.1109\/ASE.2015.81"},{"doi-asserted-by":"publisher","key":"e_1_3_2_26_2","DOI":"10.1109\/ISMSIT50672.2020.9254687"},{"doi-asserted-by":"publisher","key":"e_1_3_2_27_2","DOI":"10.1145\/2897073.2897088"},{"unstructured":"Google. 2023. Breakpad. Retrieved from https:\/\/github.com\/google\/breakpad","key":"e_1_3_2_28_2"},{"doi-asserted-by":"publisher","key":"e_1_3_2_29_2","DOI":"10.1145\/3340496.3342761"},{"doi-asserted-by":"publisher","key":"e_1_3_2_30_2","DOI":"10.1145\/1982595.1982612"},{"doi-asserted-by":"publisher","key":"e_1_3_2_31_2","DOI":"10.1145\/2592798.2592813"},{"doi-asserted-by":"publisher","key":"e_1_3_2_32_2","DOI":"10.1145\/2906388.2906419"},{"unstructured":"Infer. 2023. Infer Static Analyzer. Retrieved from https:\/\/fbinfer.com\/","key":"e_1_3_2_33_2"},{"unstructured":"jambit GmbH. 2023. ptrace. Retrieved from https:\/\/man7.org\/linux\/man-pages\/man2\/ptrace.2.html","key":"e_1_3_2_34_2"},{"unstructured":"jamesbriggs. 2022. Locality Sensitive Hashing (LSH): The Illustrated Guide. Retrieved from https:\/\/www.pinecone.io\/learn\/locality-sensitive-hashing\/","key":"e_1_3_2_35_2"},{"doi-asserted-by":"publisher","key":"e_1_3_2_36_2","DOI":"10.1109\/MS.2014.50"},{"doi-asserted-by":"publisher","key":"e_1_3_2_37_2","DOI":"10.1145\/3293882.3330572"},{"key":"e_1_3_2_38_2","article-title":"Locality Sensitive Hashing for MinHash","author":"Kvernadze Giorgi","year":"2020","unstructured":"Giorgi Kvernadze. 2020. Locality Sensitive Hashing for MinHash. Retrieved from https:\/\/giorgi.tech\/blog\/locality-sensitive-hashing\/","journal-title":"R"},{"unstructured":"Microsoft Learn. 2023. About Bitmaps. Retrieved from https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/gdi\/about-bitmaps","key":"e_1_3_2_39_2"},{"doi-asserted-by":"publisher","key":"e_1_3_2_40_2","DOI":"10.1145\/3372224.3380897"},{"doi-asserted-by":"publisher","key":"e_1_3_2_41_2","DOI":"10.1145\/3570361.3613259"},{"doi-asserted-by":"publisher","key":"e_1_3_2_42_2","DOI":"10.1145\/3106237.3106275"},{"doi-asserted-by":"publisher","key":"e_1_3_2_43_2","DOI":"10.1109\/ICSE-SEIP.2019.00039"},{"doi-asserted-by":"publisher","key":"e_1_3_2_44_2","DOI":"10.1109\/MobileSoft.2015.42"},{"doi-asserted-by":"publisher","key":"e_1_3_2_45_2","DOI":"10.1145\/2382756.2382798"},{"doi-asserted-by":"publisher","key":"e_1_3_2_46_2","DOI":"10.1109\/ICSE-C.2017.16"},{"doi-asserted-by":"publisher","key":"e_1_3_2_47_2","DOI":"10.1145\/2594368.2594377"},{"doi-asserted-by":"publisher","key":"e_1_3_2_48_2","DOI":"10.1145\/3395363.3397379"},{"doi-asserted-by":"publisher","key":"e_1_3_2_49_2","DOI":"10.1145\/2815675.2815713"},{"doi-asserted-by":"publisher","key":"e_1_3_2_50_2","DOI":"10.1145\/3188720"},{"doi-asserted-by":"publisher","key":"e_1_3_2_51_2","DOI":"10.1145\/3180155.3180243"},{"doi-asserted-by":"publisher","key":"e_1_3_2_52_2","DOI":"10.1145\/3377811.3380349"},{"unstructured":"Wikipedia. 2023. Garbage collection (computer science). Retrieved from https:\/\/en.wikipedia.org\/wiki\/Garbage_collection_(computer_science)","key":"e_1_3_2_53_2"},{"doi-asserted-by":"publisher","key":"e_1_3_2_54_2","DOI":"10.1145\/2970276.2970278"},{"doi-asserted-by":"publisher","key":"e_1_3_2_55_2","DOI":"10.1109\/TSE.2016.2547385"},{"key":"e_1_3_2_56_2","first-page":"87","volume-title":"Proceedings of the Annual IEEE\/ACM International Symposium on Code Generation and Optimization","author":"Yan Dacong","year":"2014","unstructured":"Dacong Yan, Guoqing Xu, Shengqian Yang, and Atanas Rountev. 2014. LeakChecker: Practical static memory leak detection for managed languages. In Proceedings of the Annual IEEE\/ACM International Symposium on Code Generation and Optimization. 87\u201397."},{"key":"e_1_3_2_57_2","first-page":"364","volume-title":"Proceedings of the IEEE\/ACM ICSE-Companion","author":"Yuan Weizhao","year":"2018","unstructured":"Weizhao Yuan, Hoang Huu Nguyen, Lingxiao Jiang, and Yuting Chen. 2018. Poster: LibraryGuru: API recommendation for android developers. In Proceedings of the IEEE\/ACM ICSE-Companion. 364\u2013365."},{"doi-asserted-by":"publisher","key":"e_1_3_2_58_2","DOI":"10.1145\/3532091"},{"doi-asserted-by":"publisher","key":"e_1_3_2_59_2","DOI":"10.1109\/CVPR42600.2020.00974"}],"container-title":["ACM Transactions on Sensor Networks"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3649895","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3649895","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T22:54:07Z","timestamp":1750287247000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3649895"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,4,13]]},"references-count":58,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2024,5,31]]}},"alternative-id":["10.1145\/3649895"],"URL":"https:\/\/doi.org\/10.1145\/3649895","relation":{},"ISSN":["1550-4859","1550-4867"],"issn-type":[{"type":"print","value":"1550-4859"},{"type":"electronic","value":"1550-4867"}],"subject":[],"published":{"date-parts":[[2024,4,13]]},"assertion":[{"value":"2023-06-08","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-02-20","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-04-13","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}