  Resource leak bugs in Android apps are pervasive and can cause serious
performance degradation and system crashes. In recent years, several resource
leak detection techniques have been proposed to assist Android developers in
correctly managing system resources. Yet, there exist no common bug benchmarks
for effectively and reliably comparing such techniques and quantitatively
evaluating their strengths and weaknesses. This paper describes our initial
contribution towards constructing such a benchmark. To locate real resource
leak bugs, we mined 124,215 code revisions of 34 large-scale open-source
Android apps. We successfully found 298 fixed resource leaks, which cover a
diverse set of resource classes, from 32 out of the 34 apps. To understand the
characteristics of these bugs, we conducted an empirical study, which revealed
the root causes of frequent resource leaks in Android apps and common patterns
of faults made by developers. With our findings, we further implemented a
static checker to detect a common pattern of resource leaks in Android apps.
Experiments showed that the checker can effectively locate real resource leaks
in popular Android apps, confirming the usefulness of our work.
