2 research outputs found
Mining Android Crash Fixes in the Absence of Issue- and Change-Tracking Systems
Android apps are prone to crash. This often arises from the misuse of Android framework APIs, making it harder to debug since official Android documentation does not discuss thoroughly potential exceptions.Recently, the program repair community has also started to investigate the possibility to fix crashes automatically. Current results, however, apply to limited example cases. In both scenarios of repair, the main issue is the need for more example data to drive the fix processes due to the high cost in time and effort needed to collect and identify fix examples. We propose in this work a scalable approach, CraftDroid, to mine crash fixes by leveraging a set of 28 thousand carefully reconstructed app lineages from app markets, without the need for the app source code or issue reports. We developed a replicative testing approach that locates fixes among app versions which output different runtime logs with the exact same test inputs. Overall, we have mined 104 relevant crash fixes, further abstracted 17 fine-grained fix templates that are demonstrated to be effective for patching crashed apks. Finally, we release ReCBench, a benchmark consisting of 200 crashed apks and the crash replication scripts, which the community can explore for evaluating generated crash-inducing bug patches
Anchor: Locating Android Framework-specific Crashing Faults
Android framework-specific app crashes are hard to debug. Indeed, the
callback-based event-driven mechanism of Android challenges crash localization
techniques that are developed for traditional Java programs. The key challenge
stems from the fact that the buggy code location may not even be listed within
the stack trace. For example, our empirical study on 500 framework-specific
crashes from an open benchmark has revealed that 37 percent of the crash types
are related to bugs that are outside the stack traces. Moreover, Android
programs are a mixture of code and extra-code artifacts such as the Manifest
file. The fact that any artifact can lead to failures in the app execution
creates the need to position the localization target beyond the code realm. In
this paper, we propose Anchor, a two-phase suspicious bug location suggestion
tool. Anchor specializes in finding crash-inducing bugs outside the stack
trace. Anchor is lightweight and source code independent since it only requires
the crash message and the apk file to locate the fault. Experimental results,
collected via cross-validation and in-the-wild dataset evaluation, show that
Anchor is effective in locating Android framework-specific crashing faults.Comment: 12 page