[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/3368089.3409718acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article
Open access

Domain-independent interprocedural program analysis using block-abstraction memoization

Published: 08 November 2020 Publication History

Abstract

Whenever a new software-verification technique is developed, additional effort is necessary to extend the new program analysis to an interprocedural one, such that it supports recursive procedures. We would like to reduce that additional effort. Our contribution is an approach to extend an existing analysis in a modular and domain-independent way to an interprocedural analysis without large changes: We present interprocedural block-abstraction memoization (BAM), which is a technique for procedure summarization to analyze (recursive) procedures. For recursive programs, a fix-point algorithm terminates the recursion if every procedure is sufficiently unrolled and summarized to cover the abstract state space.
BAM Interprocedural works for data-flow analysis and for model checking, and is independent from the underlying abstract domain. To witness that our interprocedural analysis is generic and configurable, we defined and evaluated the approach for three completely different abstract domains: predicate abstraction, explicit values, and intervals. The interprocedural BAM-based analysis is implemented in the open-source verification framework CPAchecker. The evaluation shows that the overhead for modularity and domain-independence is not prohibitively large and the analysis is still competitive with other state-of-the-art software-verification tools.

Supplementary Material

Auxiliary Teaser Video (fse20main-p384-p-teaser.mp4)
We present interprocedural block-abstraction memoization (BAM Interprocedural), which a technique for procedure summarization to analyze (recursive) procedures. For recursive programs, a fix-point algorithm terminates the recursion if every procedure is sufficiently unrolled and summarized to cover the abstract state space. The analysis is implemented in the open-source verification framework CPAchecker. The evaluation shows that the overhead for modularity and domain-independence is not prohibitively large and the analysis is still competitive with other state-of-the-art software-verification tools.
Auxiliary Presentation Video (fse20main-p384-p-video.mp4)
We present interprocedural block-abstraction memoization (BAM Interprocedural), which a technique for procedure summarization to analyze (recursive) procedures. For recursive programs, a fix-point algorithm terminates the recursion if every procedure is sufficiently unrolled and summarized to cover the abstract state space. The analysis is implemented in the open-source verification framework CPAchecker. The evaluation shows that the overhead for modularity and domain-independence is not prohibitively large and the analysis is still competitive with other state-of-the-art software-verification tools.

References

[1]
A. Albarghouthi, A. Gurfinkel, and M. Chechik. 2012. Whale: An InterpolationBased Algorithm for Inter-procedural Verification. In Proc. VMCAI (LNCS 7148). Springer, 39-55. https://doi.org/10.1007/978-3-642-27940-9_4
[2]
T. Ball, B. Cook, V. Levin, and S. K. Rajamani. 2004. Slam and Static Driver Verifier: Technology Transfer of Formal Methods inside Microsoft. In Proc. IFM (LNCS 2999). Springer, 1-20. https://doi.org/10.1007/978-3-540-24756-2_1
[3]
T. Ball, V. Levin, and S. K. Rajamani. 2011. A Decade of Software Model Checking with Slam. Commun. ACM 54, 7 ( 2011 ), 68-76. https://doi.org/10.1145/1965724. 1965743
[4]
T. Ball and S. K. Rajamani. 2000. Bebop: A Symbolic Model Checker for Boolean Programs. In Proc. SPIN (LNCS 1885 ). Springer, 113-130. https://doi.org/10.1007/ 10722468_7
[5]
D. Beyer. 2020. Advances in Automatic Software Verification: SV-COMP 2020. In Proc. TACAS (2) (LNCS 12079). Springer, 347-367. https://doi.org/10.1007/978-3-030-45237-7_21
[6]
D. Beyer. 2020. Results of the 9th International Competition on Software Verification (SV-COMP 2020 ). Zenodo. https://doi.org/10.5281/zenodo.3630205
[7]
D. Beyer and M. Dangl. 2018. Strategy Selection for Software Verification Based on Boolean Features: A Simple but Efective Approach. In Proc. ISoLA (LNCS 11245). Springer, 144-159. https://doi.org/10.1007/978-3-030-03421-4_11
[8]
D. Beyer, M. Dangl, and P. Wendler. 2018. A Unifying View on SMT-Based Software Verification. J. Autom. Reasoning 60, 3 ( 2018 ), 299-335. https://doi.org/ 10.1007/s10817-017-9432-6
[9]
D. Beyer and K. Friedberger. 2018. Domain-Independent Multi-threaded Software Model Checking. In Proc. ASE. ACM, 634-644. https://doi.org/10.1145/3238147. 3238195
[10]
D. Beyer and K. Friedberger. 2018. In-Place vs. Copy-on-Write CEGAR Refinement for Block Summarization with Caching. In Proc. ISoLA (LNCS 11245). Springer, 197-215. https://doi.org/10.1007/978-3-030-03421-4_14
[11]
D. Beyer and K. Friedberger. 2020. Reproduction Package for Article 'DomainIndependent Interprocedural Program Analysis using Block-Abstraction Memoization' in Proc. ESEC/FSE 2020. Zenodo. https://doi.org/10.5281/zenodo.4024268
[12]
D. Beyer, S. Gulwani, and D. Schmidt. 2018. Combining Model Checking and Data-Flow Analysis. In Handbook of Model Checking. Springer, 493-540. https: //doi.org/10.1007/978-3-319-10575-8_16
[13]
D. Beyer, T. A. Henzinger, and G. Théoduloz. 2007. Configurable Software Verification: Concretizing the Convergence of Model Checking and Program Analysis. In Proc. CAV (LNCS 4590). Springer, 504-518. https://doi.org/10.1007/978-3-540-73368-3_51
[14]
D. Beyer, T. A. Henzinger, and G. Théoduloz. 2008. Program Analysis with Dynamic Precision Adjustment. In Proc. ASE. IEEE, 29-38. https://doi.org/10. 1109/ASE. 2008.13
[15]
D. Beyer and M. E. Keremoglu. 2011. CPAchecker: A Tool for Configurable Software Verification. In Proc. CAV (LNCS 6806). Springer, 184-190. https: //doi.org/10.1007/978-3-642-22110-1_16
[16]
D. Beyer, M. E. Keremoglu, and P. Wendler. 2010. Predicate Abstraction with Adjustable-Block Encoding. In Proc. FMCAD. FMCAD, 189-197. https://www.sosy-lab.org/research/pub/2010-FMCAD.Predicate_Abstraction_with_Adjustable-Block_Encoding.pdf
[17]
D. Beyer and S. Löwe. 2013. Explicit-State Software Model Checking Based on CEGAR and Interpolation. In Proc. FASE (LNCS 7793). Springer, 146-162. https://doi.org/10.1007/978-3-642-37057-1_11
[18]
D. Beyer, S. Löwe, and P. Wendler. 2019. Reliable Benchmarking: Requirements and Solutions. Int. J. Softw. Tools Technol. Transfer 21, 1 ( 2019 ), 1-29. https: //doi.org/10.1007/s10009-017-0469-y
[19]
D. Beyer and A. K. Petrenko. 2012. Linux Driver Verification. In Proc. ISoLA (LNCS 7610). Springer, 1-6. https://doi.org/10.1007/978-3-642-34032-1_1
[20]
R. Blanc, A. Gupta, L. Kovács, and B. Kragl. 2013. Tree Interpolation in Vampire. In Proc. LPAR (LNCS 8312). Springer, 173-181. https://doi.org/10.1007/978-3-642-45221-5_13
[21]
O. Burkart and B. Stefen. 1992. Model Checking for Context-Free Processes. In Proc. CONCUR (LNCS 630). Springer, 123-137. https://doi.org/10.1007/ BFb0084787
[22]
C. Calcagno, D. Distefano, J. Dubreil, D. Gabi, P. Hooimeijer, M. Luca, P. W. O'Hearn, I. Papakonstantinou, J. Purbrick, and D. Rodriguez. 2015. Moving Fast with Software Verification. In Proc. NFM (LNCS 9058). Springer, 3-11. https: //doi.org/10.1007/978-3-319-17524-9_1
[23]
C. Calcagno, D. Distefano, P. W. O'Hearn, and H. Yang. 2011. Compositional Shape Analysis by Means of Bi-Abduction. ACM 58, 6 ( 2011 ), 26 : 1-26 : 66. https: //doi.org/10.1145/2049697.2049700
[24]
M. Chalupa, J. Strejcek, and M. Vitovská. 2018. Joint Forces for Memory Safety Checking. In Proc. SPIN. Springer, 115-132. https://doi.org/10.1007/978-3-319-94111-0_7
[25]
M. Chalupa, M. Vitovská, M. Jonás, J. Slaby, and J. Strejcek. 2017. Symbiotic 4: Beyond Reachability (Competition Contribution). In Proc. TACAS (LNCS 10206). Springer, 385-389. https://doi.org/10.1007/978-3-662-54580-5_28
[26]
Y.-F. Chen, C. Hsieh, M.-H. Tsai, B.-Y. Wang, and F. Wang. 2014. Verifying Recursive Programs Using Intraprocedural Analyzers. In Proc. SAS (LNCS 8723). Springer, 118-133. https://doi.org/10.1007/978-3-319-10936-7_8
[27]
E. M. Clarke, O. Grumberg, S. Jha, Y. Lu, and H. Veith. 2003. Counterexampleguided abstraction refinement for symbolic model checking. J. ACM 50, 5 ( 2003 ), 752-794. https://doi.org/10.1145/876638.876643
[28]
E. M. Clarke, T. A. Henzinger, H. Veith, and R. Bloem. 2018. Handbook of Model Checking. Springer. ISBN: 978-3-319-10574-1 https://doi.org/10.1007/978-3-319-10575-8
[29]
E. M. Clarke, D. Kröning, and F. Lerda. 2004. A Tool for Checking ANSI-C Programs. In Proc. TACAS (LNCS 2988). Springer, 168-176. https://doi.org/10. 1007/978-3-540-24730-2_15
[30]
B. Cook. 2018. Formal Reasoning About the Security of Amazon Web Services. In Proc. CAV (2) (LNCS 10981). Springer, 38-47. https://doi.org/10.1007/978-3-319-96145-3_3
[31]
P. Cousot and R. Cousot. 1977. Static Determination of Dynamic Properties of Recursive Procedures. In Formal Description of Programming Concepts: Proc. of the IFIP Working Conference on Formal Description of Programming Concepts. North-Holland, 237-278.
[32]
P. Cousot and R. Cousot. 1979. Systematic design of program-analysis frameworks. In Proc. POPL. ACM, 269-282. https://doi.org/10.1145/567752.567778
[33]
W. Craig. 1957. Linear Reasoning. A New Form of the Herbrand-Gentzen Theorem. J. Symb. Log. 22, 3 ( 1957 ), 250-268. https://doi.org/10.2307/2963593
[34]
M. Czech, E. Hüllermeier, M.-C. Jakobs, and H. Wehrheim. 2017. Predicting Rankings of Software Verification Tools. In Proc. SWAN. ACM, 23-26. https: //doi.org/10.1145/3121257.3121262
[35]
M. Dangl, S. Löwe, and P. Wendler. 2015. CPAchecker with Support for Recursive Programs and Floating-Point Arithmetic ( Competition Contribution). In Proc. TACAS (LNCS 9035). Springer, 423-425. https://doi.org/10.1007/978-3-662-46681-0_34
[36]
M. R. Gadelha, F. R. Monteiro, J. Morse, L. C. Cordeiro, B. Fischer, and D. A. Nicole. 2018. ESBMC 5.0: An Industrial-Strength C Model Checker. In Proc. ASE. ACM, 888-891. https://doi.org/10.1145/3238147.3240481
[37]
M. Heizmann, D. Dietsch, J. Leike, B. Musa, and A. Podelski. 2015. Ultimate Automizer with Array Interpolation. In Proc. TACAS (LNCS 9035). Springer, 455-457. https://doi.org/10.1007/978-3-662-46681-0_43
[38]
M. Heizmann, J. Hoenicke, and A. Podelski. 2010. Nested interpolants. In Proc. POPL. ACM, 471-482. https://doi.org/10.1145/1706299.1706353
[39]
M. Heizmann, J. Hoenicke, and A. Podelski. 2013. Software Model Checking for People Who Love Automata. In Proc. CAV (LNCS 8044). Springer, 36-52. https://doi.org/10.1007/978-3-642-39799-8_2
[40]
A. V. Khoroshilov, V. S. Mutilin, A. K. Petrenko, and V. Zakharov. 2009. Establishing Linux Driver Verification Process. In Proc. Ershov Memorial Conference (LNCS 5947). Springer, 165-176. https://doi.org/10.1007/978-3-642-11486-1_14
[41]
J. Knoop, O. Rüthing, and B. Stefen. 1996. Towards a tool kit for the automatic generation of interprocedural data-flow analyses. J. Program. Lang. 4, 4 ( 1996 ), 211-246.
[42]
D. Kröning and M. Tautschnig. 2014. Cbmc: C Bounded Model Checker (Competition Contribution). In Proc. TACAS (LNCS 8413). Springer, 389-391. https: //doi.org/10.1007/978-3-642-54862-8_26
[43]
K. L. McMillan. 2003. Interpolation and SAT-Based Model Checking. In Proc. CAV (LNCS 2725). Springer, 1-13. https://doi.org/10.1007/978-3-540-45069-6_1
[44]
K. L. McMillan. 2006. Lazy Abstraction with Interpolants. In Proc. CAV (LNCS 4144). Springer, 123-136. https://doi.org/10.1007/11817963_14
[45]
J. Morse, M. Ramalho, L. C. Cordeiro, D. Nicole, and B. Fischer. 2014. Esbmc 1.22 (Competition Contribution). In Proc. TACAS (LNCS 8413). Springer, 405-407. https://doi.org/10.1007/978-3-642-54862-8_31
[46]
P. Müller and T. Vojnar. 2014. CPAlien: Shape Analyzer for CPAchecker (Competition Contribution). In Proc. TACAS (LNCS 8413). Springer, 395-397. https://doi.org/10.1007/978-3-642-54862-8_28
[47]
Z. Rakamarić and M. Emmi. 2014. SMACK: Decoupling Source Language Details from Verifier Implementations. In Proc. CAV (LNCS 8559). Springer, 106-113. https://doi.org/10.1007/978-3-319-08867-9_7
[48]
T. W. Reps, S. Horwitz, and M. Sagiv. 1995. Precise Interprocedural Data-Flow Analysis via Graph Reachability. In Proc. POPL. ACM, 49-61. https://doi.org/10. 1145/199448.199462
[49]
C. Richter and H. Wehrheim. 2019. PeSCo: Predicting Sequential Combinations of Verifiers (Competition Contribution). In Proc. TACAS (3) (LNCS 11429). Springer, 229-233. https://doi.org/10.1007/978-3-030-17502-3_19
[50]
N. Rinetzky, M. Sagiv, and E. Yahav. 2005. Interprocedural Shape Analysis for Cutpoint-Free Programs. In Proc. SAS (LNCS 3672). Springer, 284-302. https: //doi.org/10.1007/11547662_20
[51]
H. O. Rocha, R. Barreto, and L. C. Cordeiro. 2016. Hunting Memory Bugs in C Programs with Map2Check (Competition Contribution). In Proc. TACAS (LNCS 9636). Springer, 934-937. https://doi.org/10.1007/978-3-662-49674-9_64
[52]
H. O. Rocha, R. S. Barreto, and L. C. Cordeiro. 2015. Memory Management TestCase Generation of C Programs Using Bounded Model Checking. In Proc. SEFM (LNCS 9276). Springer, 251-267. https://doi.org/10.1007/978-3-319-22969-0_18
[53]
O. Sery, G. Fedyukovich, and N. Sharygina. 2011. Interpolation-Based Function Summaries in Bounded Model Checking. In Proc. HVC (LNCS 7261). Springer, 160-175. https://doi.org/10.1007/978-3-642-34188-5_15
[54]
O. Sery, G. Fedyukovich, and N. Sharygina. 2015. Function Summarization-Based Bounded Model Checking. In Validation of Evolving Software. Springer, 37-53. https://doi.org/10.1007/978-3-319-10623-6_5
[55]
M. Sharir and A. Pnueli. 1981. Two approaches to interprocedural data-flow analysis. In Program Flow Analysis: Theory and Applications. Prentice-Hall, 189-233. ISBN: 978-0-137-29681-1
[56]
D. Wonisch. 2012. Block Abstraction Memoization for CPAchecker (Competition Contribution). In Proc. TACAS (LNCS 7214). Springer, 531-533. https://doi.org/ 10.1007/978-3-642-28756-5_41
[57]
D. Wonisch and H. Wehrheim. 2012. Predicate Analysis with Block-Abstraction Memoization. In Proc. ICFEM (LNCS 7635). Springer, 332-347. https://doi.org/10. 1007/978-3-642-34281-3_24

Cited By

View all
  • (2024)Decomposing Software Verification using Distributed Summary SynthesisProceedings of the ACM on Software Engineering10.1145/36607661:FSE(1307-1329)Online publication date: 12-Jul-2024
  • (2024)Software Verification with CPAchecker 3.0: Tutorial and User GuideFormal Methods10.1007/978-3-031-71177-0_30(543-570)Online publication date: 9-Sep-2024
  • (2022)Efficient Modular SMT-Based Model Checking of Pointer ProgramsStatic Analysis10.1007/978-3-031-22308-2_11(227-246)Online publication date: 2-Dec-2022
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
ESEC/FSE 2020: Proceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering
November 2020
1703 pages
ISBN:9781450370431
DOI:10.1145/3368089
This work is licensed under a Creative Commons Attribution International 4.0 License.

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 08 November 2020

Permissions

Request permissions for this article.

Check for updates

Badges

Author Tags

  1. Block Abstraction
  2. Interprocedural Program Analysis
  3. Recursive C Programs
  4. Software Verification

Qualifiers

  • Research-article

Funding Sources

Conference

ESEC/FSE '20
Sponsor:

Acceptance Rates

Overall Acceptance Rate 112 of 543 submissions, 21%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)200
  • Downloads (Last 6 weeks)52
Reflects downloads up to 05 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Decomposing Software Verification using Distributed Summary SynthesisProceedings of the ACM on Software Engineering10.1145/36607661:FSE(1307-1329)Online publication date: 12-Jul-2024
  • (2024)Software Verification with CPAchecker 3.0: Tutorial and User GuideFormal Methods10.1007/978-3-031-71177-0_30(543-570)Online publication date: 9-Sep-2024
  • (2022)Efficient Modular SMT-Based Model Checking of Pointer ProgramsStatic Analysis10.1007/978-3-031-22308-2_11(227-246)Online publication date: 2-Dec-2022
  • (2021)Directed Model Checking for Fast Abstract Reachability AnalysisIEEE Access10.1109/ACCESS.2021.31305699(158738-158750)Online publication date: 2021

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media