Systemizing Interprocedural Static Analysis of Large-scale Systems Code with Graspan
Systemizing Interprocedural Static Analysis of Large-scale Systems Code with Graspan
复制标题
使用 Graspan 系统化大型系统代码的过程间静态分析
DOI:
10.1145/3466820
复制
发表时间:
2021-07
期刊:
影响因子:
--
通讯作者:
Xu Guoqing Harry
中科院分区:
文献类型:
--
作者:
Zuo Zhiqiang;Wang Kai;Hussain Aftab;Sani Ardalan Amiri;Zhang Yiyu;Lu Shenming;Dou Wensheng;Wang Linzhang;Li Xu;ong;Wang Chenxi;Xu Guoqing Harry
There is more than a decade-long history of using static analysis to find bugs in systems such as Linux. Most of the existing static analyses developed for these systems are simple checkers that find bugs based on pattern matching. Despite the presence of many sophisticated interprocedural analyses, few of them have been employed to improve checkers for systems code due to their complex implementations and poor scalability. In this article, we revisit the scalability problem of interprocedural static analysis from a “Big Data” perspective. That is, we turn sophisticated code analysis into Big Data analytics and leverage novel data processing techniques to solve this traditional programming language problem. We propose Graspan, a disk-based parallel graph system that uses an edge-pair centric computation model to compute dynamic transitive closures on very large program graphs. We develop two backends for Graspan, namely, Graspan-C running on CPUs and Graspan-G on GPUs, and present their designs in the article. Graspan-C can analyze large-scale systems code on any commodity PC, while, if GPUs are available, Graspan-G can be readily used to achieve orders of magnitude speedup by harnessing a GPU’s massive parallelism. We have implemented fully context-sensitive pointer/alias and dataflow analyses on Graspan. An evaluation of these analyses on large codebases written in multiple languages such as Linux and Apache Hadoop demonstrates that their Graspan implementations are language-independent, scale to millions of lines of code, and are much simpler than their original implementations. Moreover, we show that these analyses can be used to uncover many real-world bugs in large-scale systems code.
登录
查看更多内容
DOI:
10.1145/2594291.2594320
发表时间:
2014-06
期刊:
Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation
影响因子:
--
作者:
Y. Smaragdakis;George Kastrinis;G. Balatsouras
通讯作者:
Y. Smaragdakis;George Kastrinis;G. Balatsouras
影响因子:
5.3
作者:
Jianlong Zhong;Bingsheng He
通讯作者:
Jianlong Zhong;Bingsheng He
DOI:
10.4230/lipics.ecoop.2016.26
发表时间:
2016
期刊:
--
影响因子:
--
作者:
Yue Zhao;Guoyang Chen;C. Liao;Xipeng Shen
通讯作者:
Yue Zhao;Guoyang Chen;C. Liao;Xipeng Shen
DOI:
10.1145/3192366.3192378
发表时间:
2018-06
期刊:
Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation
影响因子:
--
作者:
Cheng Cai;Qirun Zhang;Zhiqiang Zuo;Khanh Nguyen;G. Xu;Z. Su
通讯作者:
Cheng Cai;Qirun Zhang;Zhiqiang Zuo;Khanh Nguyen;G. Xu;Z. Su
DOI:
10.1145/1265530.1265564
发表时间:
2007-06
期刊:
Proceedings of the twenty-sixth ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systems
影响因子:
--
作者:
R. Alur
通讯作者:
R. Alur