skip to main content
research-article

Scaling abstraction refinement via pruning

Published:04 June 2011Publication History
Skip Abstract Section

Abstract

Many static analyses do not scale as they are made more precise. For example, increasing the amount of context sensitivity in a k-limited pointer analysis causes the number of contexts to grow exponentially with k. Iterative refinement techniques can mitigate this growth by starting with a coarse abstraction and only refining parts of the abstraction that are deemed relevant with respect to a given client.

In this paper, we introduce a new technique called pruning that uses client feedback in a different way. The basic idea is to use coarse abstractions to prune away parts of the program analysis deemed irrelevant for proving a client query, and then using finer abstractions on the sliced program analysis. For a k-limited pointer analysis, this approach amounts to adaptively refining and pruning a set of prefix patterns representing the contexts relevant for the client. By pruning, we are able to scale up to much more expensive abstractions than before. We also prove that the pruned analysis is both sound and complete, that is, it yields the same results as an analysis that uses a more expensive abstraction directly without pruning.

References

  1. T. Ball, R. Majumdar, T. Millstein, and S. Rajamani. Automatic predicate abstraction of C programs. In PLDI, pages 203--213, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. M. Bravenboer and Y. Smaragdakis. Strictly declarative specification of sophisticated points-to analyses. In OOPSLA, pages 243--262, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. S. Graf and H. Saidi. Construction of abstract state graphs with PVS. Computer Aided Verification, 1254: 72--83, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. S. Guyer and C. Lin. Client-driven pointer analysis. In SAS, pages 214--236, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. N. Heintze and O. Tardieu. Demand-driven pointer analysis. In PLDI, pages 24--34, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. T. A. Henzinger, R. Jhala, R. Majumdar, and G. Sutre. Lazy abstraction. In POPL, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. O. Lhoták and L. Hendren. Context-sensitive points-to analysis: is it worth it? In CC, pages 47--64, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. O. Lhoták and L. Hendren. Evaluating the benefits of context-sensitive points-to analysis using a BDD-based implementation. ACM Transactions on Software Engineering and Methodology, 18 (1): 1--53, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. P. Liang, O. Tripp, M. Naik, and M. Sagiv. A dynamic evaluation of static heap abstractions. In OOPSLA, pages 411--427, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. P. Liang, O. Tripp, and M. Naik. Learning minimal abstractions. In POPL, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. K. McMillan. Lazy abstraction with interpolants. In CAV, pages 123--136, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. A. Milanova, A. Rountev, and B. Ryder. Parameterized object sensitivity for points-to and side-effect analyses for Java. In ISSTA, pages 1--11, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. A. Milanova, A. Rountev, and B. Ryder. Parameterized object sensitivity for points-to analysis for Java. ACM Transactions on Software Engineering and Methodology, 14 (1): 1--41, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. M. Naik, A. Aiken, and J. Whaley. Effective static race detection for Java. In PLDI, pages 308--319, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. J. Plevyak and A. Chien. Precise concrete type inference for object-oriented languages. In OOPSLA, pages 324--340. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. O. Shivers. Control-flow analysis in Scheme. In PLDI, pages 164--174, 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Y. Smaragdakis, M. Bravenboer, and O. Lhotak. Pick your contexts well: Understanding object-sensitivity. In POPL, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. S. A. Spoon and O. Shivers. Demand-driven type inference with subgoal pruning: Trading precision for scalability. In ECOOP, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  19. M. Sridharan and R. Bodík. Refinement-based context-sensitive points-to analysis for Java. In PLDI, pages 387--400, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. V. Vipindeep and P. Jalote. Efficient static analysis with path pruning using coverage data. In International Workshop on Dynamic Analysis (WODA), 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. J. Whaley. Context-Sensitive Pointer Analysis using Binary Decision Diagrams. PhD thesis, Stanford University, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. J. Whaley and M. Lam. Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In PLDI, pages 131--144, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. X. Zheng and R. Rugina. Demand-driven alias analysis for C. In POPL, pages 197--208, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Scaling abstraction refinement via pruning

            Recommendations

            Comments

            Login options

            Check if you have access through your login credentials or your institution to get full access on this article.

            Sign in

            Full Access

            • Published in

              cover image ACM SIGPLAN Notices
              ACM SIGPLAN Notices  Volume 46, Issue 6
              PLDI '11
              June 2011
              652 pages
              ISSN:0362-1340
              EISSN:1558-1160
              DOI:10.1145/1993316
              Issue’s Table of Contents
              • cover image ACM Conferences
                PLDI '11: Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation
                June 2011
                668 pages
                ISBN:9781450306638
                DOI:10.1145/1993498
                • General Chair:
                • Mary Hall,
                • Program Chair:
                • David Padua

              Copyright © 2011 ACM

              Publisher

              Association for Computing Machinery

              New York, NY, United States

              Publication History

              • Published: 4 June 2011

              Check for updates

              Qualifiers

              • research-article

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader
            About Cookies On This Site

            We use cookies to ensure that we give you the best experience on our website.

            Learn more

            Got it!