TY - GEN
T1 - Improving the quality of APIs through the analysis of software crash reports
AU - Kechagia, Maria
AU - Mitropoulos, Dimitris
AU - Spinellis, Diomidis
PY - 2013/1/1
Y1 - 2013/1/1
N2 - Modern programs depend on apis to implement a significant part of their functionality. Apart from the way developers use apis to build their software, the stability of these programs relies on the apis design and implementation. In this work, we evaluate the reliability of apis, by examining software telemetry data, in the form of stack traces, coming from Android application crashes. We got 4.9 GB worth of crash data that thousands of applications send to a centralized crash report management service. We processed that data to extract approximately a million stack traces, stitching together parts of chained exceptions, and established heuristic rules to draw the border between applications and api calls. We examined 80% of the stack traces to map the space of the most common application failure reasons. Our findings show that the top ones can be attributed to memory exhaustion, race conditions or deadlocks, and missing or corrupt resources. At the same time, a significant number of our stack traces (over 10%) remains unclassified due to generic unchecked exceptions, which do not highlight the problems that lead to crashes. Finally, given the classes of crash causes we found, we argue that api design and implementation improvements, such as specific exceptions, non-blocking algorithms, and default resources, can eliminate common failures.
AB - Modern programs depend on apis to implement a significant part of their functionality. Apart from the way developers use apis to build their software, the stability of these programs relies on the apis design and implementation. In this work, we evaluate the reliability of apis, by examining software telemetry data, in the form of stack traces, coming from Android application crashes. We got 4.9 GB worth of crash data that thousands of applications send to a centralized crash report management service. We processed that data to extract approximately a million stack traces, stitching together parts of chained exceptions, and established heuristic rules to draw the border between applications and api calls. We examined 80% of the stack traces to map the space of the most common application failure reasons. Our findings show that the top ones can be attributed to memory exhaustion, race conditions or deadlocks, and missing or corrupt resources. At the same time, a significant number of our stack traces (over 10%) remains unclassified due to generic unchecked exceptions, which do not highlight the problems that lead to crashes. Finally, given the classes of crash causes we found, we argue that api design and implementation improvements, such as specific exceptions, non-blocking algorithms, and default resources, can eliminate common failures.
KW - Application programming interfaces
KW - Crash reports
KW - Mobile applications
KW - Stack traces
UR - http://www.scopus.com/inward/record.url?scp=84905862744&partnerID=8YFLogxK
U2 - 10.4230/OASIcs.ICCSW.2013.57
DO - 10.4230/OASIcs.ICCSW.2013.57
M3 - Conference contribution
AN - SCOPUS:84905862744
SN - 9783939897637
T3 - OpenAccess Series in Informatics
SP - 57
EP - 64
BT - 2013 Imperial College Computing Student Workshop, ICCSW 2013
PB - Schloss Dagstuhl- Leibniz-Zentrum fur Informatik GmbH, Dagstuhl Publishing
T2 - 3rd Imperial College Computing Student Workshop, ICCSW 2013
Y2 - 26 September 2013 through 27 September 2013
ER -