Skip to main content

Verifying Heap-Manipulating Programs with Unknown Procedure Calls

  • Conference paper

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

Abstract

Verification of programs with invocations to unknown procedures is a practical problem, because in many scenarios not all codes of programs to be verified are available. Those unknown calls also pose a challenge for their verification. This paper addresses this problem with an attempt to verify the full functional correctness of such programs using pointer-based data structures. Provided with a Hoare-style specification {Φ pr } prog po } where program prog contains calls to some unknown procedure unknown, we infer a specification mspec u for unknown from the calling contexts, such that the problem of verifying prog can be safely reduced to the problem of proving that the procedure unknown (once its code is available) meets the derived specification mspec u . The expected specification mspec u for the unknown procedure unknown is automatically calculated using an abduction-based shape analysis specifically designed for a combined abstract domain. We have also done some experiments to validate the viability of our approach.

Keywords

  • Symbolic Execution
  • Code Fragment
  • Data Node
  • Separation Logic
  • Pure Property

These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

This is a preview of subscription content, access via your institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • DOI: 10.1007/978-3-642-16901-4_13
  • Chapter length: 17 pages
  • Instant PDF download
  • Readable on all devices
  • Own it forever
  • Exclusive offer for individuals only
  • Tax calculation will be finalised during checkout
eBook
USD   129.00
Price excludes VAT (USA)
  • ISBN: 978-3-642-16901-4
  • Instant PDF download
  • Readable on all devices
  • Own it forever
  • Exclusive offer for individuals only
  • Tax calculation will be finalised during checkout

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Ammons, G., Bodik, R., Larus, J.R.: Mining specifications. In: POPL (2002)

    Google Scholar 

  2. Beizer, B., Wiley, J.: Black-box testing: techniques for functional testing of software and systems. IEEE Software 13(5) (September 1996)

    Google Scholar 

  3. Calcagno, C., Distefano, D., O’Hearn, P., Yang, H.: Compositional shape analysis by means of bi-abduction. In: 36th POPL (January 2009)

    Google Scholar 

  4. Emami, M., Ghiya, R., Hendren, L.J.: Context-sensitive interprocedural points-to analysis in the presence of function pointers. In: PLDI (1994)

    Google Scholar 

  5. Giacobazzi, R.: Abductive analysis of modular logic programs. In: ILPS (1994)

    Google Scholar 

  6. Gopan, D., Reps, T.: Low-level library analysis and summarization. In: Damm, W., Hermanns, H. (eds.) CAV 2007. LNCS, vol. 4590, pp. 68–81. Springer, Heidelberg (2007)

    CrossRef  Google Scholar 

  7. Kozaczynski, W., Booch, G.: Component-based software engineering. IEEE Software 15(5), 34–36 (1998)

    CrossRef  Google Scholar 

  8. Luo, C., Craciun, F., Qin, S., He, G., Chin, W.-N.: Verifying pointer safety for programs with unknown calls. Journal of Symbolic Computation (to appear)

    Google Scholar 

  9. Qin, S., Luo, C., He, G., Craciun, F., Chin, W.-N.: Verifying heap-manipulating programs with unknown calls. Research report, Teesside University (2010), http://www.scm.tees.ac.uk/s.qin/papers/unknown.pdf

  10. Magill, S., Tsai, M.-H., Lee, P., Tsay, Y.-K.: Thor: A tool for reasoning about shape and arithmetic. In: Gupta, A., Malik, S. (eds.) CAV 2008. LNCS, vol. 5123, pp. 428–432. Springer, Heidelberg (2008)

    CrossRef  Google Scholar 

  11. Nguyen, H.H., David, C., Qin, S., Chin, W.-N.: Automated verification of shape and size properties via separation logic. In: Cook, B., Podelski, A. (eds.) VMCAI 2007. LNCS, vol. 4349, pp. 251–266. Springer, Heidelberg (2007)

    CrossRef  Google Scholar 

  12. O’Hearn, P.W., Yang, H., Reynolds, J.C.: Separation and information hiding. In: 31st POPL (January 2004)

    Google Scholar 

  13. Reynolds, J.C.: Separation logic: a logic for shared mutable data structures. In: 17th LICS (2002)

    Google Scholar 

  14. Sessions, R.: COM and DCOM: Microsoft’s vision for distributed objects. John Wiley & Sons, Inc., New York (1998)

    Google Scholar 

  15. Szyperski, C.: Component technology: what, where, and how? In: ICSE (2003)

    Google Scholar 

  16. Woodcock, J.: Verified software grand challenge. In: Misra, J., Nipkow, T., Sekerinski, E. (eds.) FM 2006. LNCS, vol. 4085, pp. 617–617. Springer, Heidelberg (2006)

    CrossRef  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and Permissions

Copyright information

© 2010 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Qin, S., Luo, C., He, G., Craciun, F., Chin, WN. (2010). Verifying Heap-Manipulating Programs with Unknown Procedure Calls. In: Dong, J.S., Zhu, H. (eds) Formal Methods and Software Engineering. ICFEM 2010. Lecture Notes in Computer Science, vol 6447. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-16901-4_13

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-16901-4_13

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-16900-7

  • Online ISBN: 978-3-642-16901-4

  • eBook Packages: Computer ScienceComputer Science (R0)