skip to main content
10.1145/503272.503274acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
Article

The SLAM project: debugging system software via static analysis

Published:01 January 2002Publication History

ABSTRACT

The goal of the SLAM project is to check whether or not a program obeys "API usage rules" that specify what it means to be a good client of an API. The SLAM toolkit statically analyzes a C program to determine whether or not it violates given usage rules. The toolkit has two unique aspects: it does not require the programmer to annotate the source program (invariants are inferred); it minimizes noise (false error messages) through a process known as "counterexample-driven refinement". SLAM exploits and extends results from program analysis, model checking and automated deduction. We have successfully applied the SLAM toolkit to Windows XP device drivers, to both validate behavior and find defects in their usage of kernel APIs.

References

  1. 1.G. Ammons, R. Bodik, and J. R. Larus. Mining specifications. In POPL '02. ACM, January 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. 2.T. Ball, R. Majumdar, T. Millstein, and S. K. Rajamani. Automarie predicate abstraction of C programs. In PLD1 01: Programming Language Design Implementation, pages 203 213. ACM, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. 3.T. Ball, T. Millstein, and S. K. Rajamani. Polymorphic predicate abstraction. Technical Igeport MSIg-TI%-2001-10, Microsoft Igesearch, 2001.]]Google ScholarGoogle Scholar
  4. 4.T. Ball, A. Podelski, and S. K. Rajamani. Boolean and cartesian abstractions for model checking C programs. In TAUAS 01: Tools and Algorithms fur Construction and Analysis of System, s, LNCS 2031, pages 268 283. Springer-Verlag, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. 5.T. Ball, A. Podelski, and S. K. Rajamani. Oil the relative completeness of abstraction refinement. Technical Report MSR-TR- 2001-106, Microsott Research, 2001.]]Google ScholarGoogle Scholar
  6. 6.T. Ball and S. K. Rajamani. Bebop: A symbolic model checker tbr Boolean programs. In SPIN 00: SPIN Workshop, LNCS 1885, pages 113 130. Springer-Verlag, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. 7.T. Ball and S. K. Rajamani, Automatically validating temporal safety properties of interfaces. In SPIN 01:SPIN Workshop, LNCS 20557, pages 103 122. Springer-Verlag, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. 8.T. Ball and S. K. Rajamani. Bebop: A path-sensitive interprocedural dataflow engine. In PAb'TE 01: Workshop on Program Analysis for Software Tools and Engineering, pages 97 103. ACM, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. 9.T. Ball and S. K. Rajamani. SLIC: A specification language tbr interface checking. TechnicM Report MSR-TR-2001-21, Microsoft Research, 2001.]]Google ScholarGoogle Scholar
  10. 10.R. Bryant. Graph-based algorithms tbr boolean function manipulation. IEEE Transactions on Cow,parers, C-35(8):677 691, 1986.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. 11.J. Burch, 19. Clarke, K. McMillan, D. Dill, and L. tiwang. Symbolic model checking: 1020 states and beyond. Information and Computation, 98(2):142 170, 1992.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. 12.W. R. Bush, J. D. Pincus, and D. J. Sielaff. A static analyzer tbr finding dynamic programming errors, Software-Practice and Experience, 30(7):775 802, June 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. 13.P. Cousot and R. Cousot. Abstract interpretation: a unified lattice model for the static analysis of programs by construction or approximation of fixpoints. In POPL 77: Principles of Programing Languages, pages 238 252. ACM, 1977.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. 14.M. Das. Unification-based pointer analysis with directional assignInents. In PLD1 00: Programing Language Design and Implementation, pages 35 46. ACM, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. 15.S. Das and D. L. Dill. Successive approximation of abstract trailsition relations. In LIC'S 01: Symposium on Logic in Computer science, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. 16.D. L. Detlet, K. E. M. Leino, G. Nelson, and J. B. Saxe. Extended static checking. Technical Report Research Report 159, Compaq Systems Igesearch Center, December 1998.]]Google ScholarGoogle Scholar
  17. 17.M. Dwyer, J. tiatcliff, B. Joehanes, S. Laubach, C. Pasareanu, bobby, VV. Visser, and It. Zheng. Tool-supported program abstraction for finite-state verification. In 1USE 01: software Engineering, pages 177 187, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. 18.D. Engler, B. Chelf, A. Chou, and S. tiallem. Checking system rules using system-specific, programmer-written compiler extensions. In Oh'D1 00: Operating System Design and lmplementation. Usenix Association, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. 19.D. Evans. Static detection of dynamic memory errors. In PLD1 '96, pages 44 53. ACM, May 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. 20.S. Graf and It. Sa;fdi. Construction of abstract state graphs with PVS. In C'AV P7: Computer Aided Verification, LNCS 1254, pages 72 83. Springer-Verlag, 1997.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. 21.T. A. Hienzinger, R. Jhala, R. Majumdar, and G. Sutre. Lazy abstraction. In POPL '02. ACM, January 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. 22.G. Holzmann. Logic verification of ANSI-C code with Spin. In SP1N 00: SP1N Workshop, LNCS 1885, pages 131 147. Springer- Verlag, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. 23.R. Kurshan. Computer-eided Verification of Coordinating Processes. Princeton University Press, 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. 24.L. Lamport. Proving the correctness of multiprocess programs. 1EEE Transactions on software Engineering, S19-3(2):125 143, 1977.]]Google ScholarGoogle Scholar
  25. 25.G. Necula, S. McPeak, and VV. YVeinler. CCured: Type-safe retrofitting of legacy code. In POPL '02. ACM, January 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. 26.T. Reps, S. ttorwitz, and M. Sagiv. Precise interprocedural dataflow analysis via graph reachability. In POPL PS: Principles of Programming Languages, pages 49 61. ACM, 1995.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. 27.V. Rasu and R. Singerman. Oil proving safety properties by integrating static analysis, theorem proving and abstraction. In TAUAS PP: Toools and Algorithms for Construction and Analysis of System, s, LNCS 1579, pages 178 192. Springer-Verlag, 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. 28.It. Saidi and N. Shanhm Abstract and model check while you prove. In CAV PP: Computer-aided Verification, LNCS 1633, pages 443 454. Springer-Verlag, 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. 29.F. B. Schneider. Enforceable security policies. ACM :Transactions on lnformation and system security, 3(1):30 50, February 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. 30.M. Y. Vardi and P. Wolper. An automata theoretic apporach to automatic program verification. In L1US 86: Logic in Computer Science, pages 332 344. I191919 Computer Society Press, 1996.]]Google ScholarGoogle Scholar
  1. The SLAM project: debugging system software via static analysis

        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
        • Published in

          cover image ACM Conferences
          POPL '02: Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
          January 2002
          351 pages
          ISBN:1581134509
          DOI:10.1145/503272

          Copyright © 2002 ACM

          Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 1 January 2002

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • Article

          Acceptance Rates

          POPL '02 Paper Acceptance Rate28of128submissions,22%Overall Acceptance Rate824of4,130submissions,20%

          Upcoming Conference

          POPL '25

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader