Affiliation:
1. Stanford University, Stanford, CA
Abstract
This article presents Saturn, a general framework for building precise and scalable static error detection systems. Saturn exploits recent advances in Boolean satisfiability (SAT) solvers and is path sensitive, precise down to the bit level, and models pointers and heap data. Our approach is also highly scalable, which we achieve using two techniques. First, for each program function, several optimizations compress the size of the Boolean formulas that model the control flow and data flow and the heap locations accessed by a function. Second, summaries in the spirit of type signatures are computed for each function, allowing interprocedural analysis without a dramatic increase in the size of the Boolean constraints to be solved.
We have experimentally validated our approach by conducting two case studies involving a Linux lock checker and a memory leak checker. Results from the experiments show that our system scales well, parallelizes well, and finds more errors with fewer false positives than previous static error detection systems.
Publisher
Association for Computing Machinery (ACM)
Cited by
75 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Decomposing Software Verification using Distributed Summary Synthesis;Proceedings of the ACM on Software Engineering;2024-07-12
2. LibAlchemy: A Two-Layer Persistent Summary Design for Taming Third-Party Libraries in Static Bug-Finding Systems;Proceedings of the IEEE/ACM 46th International Conference on Software Engineering;2024-04-12
3. Detecting Condition-Related Bugs with Control Flow Graph Neural Network;Proceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis;2023-07-12
4. Proving UNSAT in Zero Knowledge;Proceedings of the 2022 ACM SIGSAC Conference on Computer and Communications Security;2022-11-07
5. CirC: Compiler infrastructure for proof systems, software verification, and more;P IEEE S SECUR PRIV;2022