一句话:提出基于任务后图的静态分析,精确计算事件驱动程序中任务间的 executes-before 关系,并用于提升数据竞态检测精度。
任务间的 executes-before 关系是事件驱动程序分析的基础,可用于竞态检测、冗余同步识别等下游任务。本文面向一类通用的事件驱动程序,提出一种可靠、高效且有效的静态分析技术来计算任务间的 executes-before 对。该分析基于一组小而完备的规则,在一种称为任务后图(task post graph)的新颖程序结构上进行求值。作者进一步展示如何利用 executes-before 信息识别程序中的互不相交块(disjoint-blocks),并借此提高数据竞态检测的精度。该分析已在 Flowdroid 框架中实现为工具 AndRacer,并在若干 Android 应用上进行了评估,结果体现了其可扩展性、召回率以及分析精度的提升。
The executes-before relation between tasks is fundamental in the analysis of Event Driven Programs with several downstream applications like race detection and identifying redundant synchronizations. We present a sound, efficient, and effective static analysis technique to compute executes-before pairs of tasks for a general class of event driven programs. The analysis is based on a small but comprehensive set of rules evaluated on a novel structure called the task post graph of a program. We show how to use the executes-before information to identify disjoint-blocks in event driven programs and further use them to improve the precision of data race detection for these programs. We have implemented our analysis in the Flowdroid framework in a tool called AndRacer and evaluated it on several Android apps, bringing out the scalability, recall, and improved precision of the analyses
@inproceedings{paperbot7000,
title = {Static executes-before analysis for event driven programs},
author = {Rekha Pai and Abhishek Uppar and Akshatha Shenoy and Pranshul Kushwaha and Deepak D'Souza},
booktitle = {FSE},
year = {2022},
doi = {10.1145/3540250.3549116}
}