Skip to main content

A Path Sensitive Type System for Resource Usage Verification of C Like Languages

  • Conference paper

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 3780))

Abstract

In this paper, we present a path sensitive type system for resource usage verification. Path sensitivity is essential to model resource usage in C programs correctly and accurately. So far, most of methods to analyze this kind of property in the path sensitive way have been proposed as whole program analyses or unsound analyses. Our main contributions are as follows. First, we formalize a sound analysis for path sensitive resource usage properties in C like languages. To the best of our knowledge, it is the first sound and modular analysis for this problem. We provide the complete proof for the soundness of the type system and algorithm. Second, our analysis is modular, and we provide an inference algorithm to generate function summaries automatically. We believe that our approach suggests new insights into the design of modular analyses.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Aiken, A., Fähndrich, M., Levien, R.: Better Static Memory Management: Improving Region-Based Analysis of Higher-Order Languages. In: PLDI (1995)

    Google Scholar 

  2. Ball, T., Rajamani, S.: The SLAM Project: Debugging System Software via Static Analysis. In: POPL (2002)

    Google Scholar 

  3. Chaki, S., Clarke, E., Groce, A., Jha, S., Veith, H.: Modular Verification of Software Components in C. In: ICSE (2003)

    Google Scholar 

  4. Clarke, E., Kroening, D., Lerda, F.: A Tool for Checking ANSI-C Programs. In: Jensen, K., Podelski, A. (eds.) TACAS 2004. LNCS, vol. 2988, pp. 168–176. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  5. Das, M., Lerner, S., Seigle, M.: ESP: Path-Sensitive Program Verification in Polynomial Time. In: PLDI (2002)

    Google Scholar 

  6. DeLine, R., Fähndrich, M.: Enforcing High-Level Protocols in Low-Level Software. In: PLDI (2001)

    Google Scholar 

  7. Dor, N., Adams, S., Das, M., Yang, Z.: Software Validation via Scalable Path-Sensitive Value Flow Analysis. In: ISSTA (2004)

    Google Scholar 

  8. Engler, D., Chelf, B., Chou, A., Hallem, S.: Checking System Rules Using System-Specific, Programmer-Written Compiler Extensions. In: OSDI (2000)

    Google Scholar 

  9. Fähndrich, M., DeLine, R.: Typestates for Objects. In: Odersky, M. (ed.) ECOOP 2004. LNCS, vol. 3086, pp. 465–490. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  10. Field, J., Goyal, D., Ramalingam, G., Yahav, E.: Typestate Verification: Abstraction Techniques and Complexity Result. In: SAS (2003)

    Google Scholar 

  11. Flanagan, C., Abadi, M.: Object Types Against Races. In: CONCUR (1999)

    Google Scholar 

  12. Flanagan, C., Abadi, M.: Types for Safe Locking. In: Swierstra, S.D. (ed.) ESOP 1999. LNCS, vol. 1576, p. 91. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  13. Flanagan, C., Leino, K., Lillibridge, M., Nelson, G., Saxe, J., State, R.: Extended Static Checking for Java. In: PLDI (2002)

    Google Scholar 

  14. Foster, J., Terauhi, T., Aiken, A.: Flow-Sensitive Type Qualifiers. In: PLDI (2002)

    Google Scholar 

  15. Freund, S., Mitchell, J.: The Type System for Object Initialization in the Java Bytecode Language. TOPLAS 21(6), 1196–1250 (1999)

    Article  Google Scholar 

  16. Henzinger, T., Jhala, R., Majumdar, R., Sutre, G.: Software Verification with BLAST. In: 10th International SPIN Workshop (2003)

    Google Scholar 

  17. Igarashi, A., Kobayashi, N.: Resource Usage Analysis. In: POPL (2002)

    Google Scholar 

  18. Kang, H.-G., Kim, Y., Han, T., Han, H.: A Path Sensitive Type System for Resource Usage Verification of C like Languages (2005), http://pllab.kaist.ac.kr/~hgkang/pruv-tm.pdf

  19. Kobayashi, N.: Quasi-Linear Types. In: POPL (1999)

    Google Scholar 

  20. Kobayashi, N.: Time Regions and Effects for Resource Usage Analysis. In: TLDI (2003)

    Google Scholar 

  21. Laneve, C.: A Type System for JVM Threads. Theoretical Computer Science 290(1), 741–778 (2003)

    Article  MATH  MathSciNet  Google Scholar 

  22. Lee, O., Yang, H., Yi, K.: Inserting Safe Memory Reuse Commands into ML-like Programs. In: SAS (2003)

    Google Scholar 

  23. Moskewicz, M., Madigan, C., Zhao, Y., Zhang, L., Malik, S.: Chaff: Engineering an Efficient SAT Solver. In: DAC (2001)

    Google Scholar 

  24. Shapiro, M., Horwitz, S.: The Effects of the Precision of Pointer Analysis. In: SAS (1997)

    Google Scholar 

  25. Smith, G.: Polymorphic Type Inference for Languages with Overloading and Subtyping. PhD thesis, Cornell University (August 1991)

    Google Scholar 

  26. SPEC. SPEC Benchmarks Suite, http://www.spec.org/

  27. Strom, R., Yemini, S.: Typestate: A Programming Language Concept for Enhancing Software Reliability. IEEE Transactions on Software Engineering 12(1), 157–171 (1986)

    Google Scholar 

  28. Tan, G., Ou, X., Walker, D.: Enforcing Resource Usage Protocols via Scoped Methods. In: FOOL (2003)

    Google Scholar 

  29. Tofte, M., Birkedal, L.: A Region Inference Algorithm. TOPLAS 20(4), 734–767 (1998)

    Article  Google Scholar 

  30. Walker, D., Crary, K., Morriset, G.: Typed Memory Management via Static Capabilities. TOPLAS 22(4), 701–771 (2000)

    Article  Google Scholar 

  31. Xie, Y., Aiken, A.: Scalable Error Detection using Boolean Satisfiability. In: POPL, pp. 351–363 (2005)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2005 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Kang, HG., Kim, Y., Han, T., Han, H. (2005). A Path Sensitive Type System for Resource Usage Verification of C Like Languages. In: Yi, K. (eds) Programming Languages and Systems. APLAS 2005. Lecture Notes in Computer Science, vol 3780. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11575467_18

Download citation

  • DOI: https://doi.org/10.1007/11575467_18

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-29735-2

  • Online ISBN: 978-3-540-32247-4

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics