Historia: Refuting Callback Reachability with Message-History Logics (Extended Version)
Shawn Meier, Sergio Mover, Gowtham Kaki, Bor-Yuh Evan Chang

TL;DR
This paper introduces Historia, a static analysis tool that refines callback control flow reasoning in event-driven frameworks using message histories, enabling verification of callback-related assertions in Android apps.
Contribution
It presents message-history logics and a verification approach that decouples callback control flow specification from app analysis, improving precision and tractability.
Findings
Successfully verified absence of multi-callback bugs in real-world Android apps.
Developed a prototype verifier called Historia with practical effectiveness.
Introduced a novel logic-based framework for reasoning about callback control flow.
Abstract
This paper determines if a callback can be called by an event-driven framework in an unexpected state.Event-driven programming frameworks are pervasive for creating user-interactive apps on just about every modern platform.Control flow between callbacks is determined by the framework and largely opaque to the programmer.This opacity of the callback control flow not only causes difficulty for the programmer but is also difficult for those developing static analysis.Previous static analysis techniques address this opacity either by assuming an arbitrary framework implementation or attempting to eagerly specify all possible callback control flow, but this is either too coarse or too burdensome and tricky to get right.Instead, we present a middle way where the callback control flow can be gradually refined in a targeted manner to prove assertions of interest.The key insight to get this…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
