Skip to main content

Formal Verification with Isabelle/HOL in Practice: Finding a Bug in the GCC Scheduler

  • Conference paper

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

Abstract

Software bugs can cause tremendous financial loss and are a serious threat to life or physical condition in safety-critical areas. Formal software verification with theorem provers aims at ensuring that no errors are present but is too expensive to be employed for full-scale systems. We show that these costs can be reduced significantly by reusing proofs and by the checker approach. We demonstrate the applicability of our approach by a case study checking the correctness of the scheduler of the popular GCC compiler for a VLIW processor where we indeed found an error.

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. Blech, J.O., Glesner, S., Leitner, J., Mülling, S.: Optimizing Code Generation from SSA Form: A Comparison Between Two Formal Correctness Proofs in Isabelle/HOL. In: Compiler Optimization meets Compiler Verification (COCV 2005). Elsevier ENTCS, pp. 1–18. Elsevier, Amsterdam (2005)

    Google Scholar 

  2. Blum, M., Kannan, S.: Designing programs that check their work. J. ACM 42(1), 269–291 (1995)

    Article  MATH  Google Scholar 

  3. Berghofer, S., Nipkow, T.: Executing higher order logic. In: Callaghan, P., Luo, Z., McKinna, J., Pollack, R. (eds.) TYPES 2000. LNCS, vol. 2277, pp. 24–40. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  4. Cytron, R., Ferrante, J., Rosen, B.K., Wegman, M.N., Zadeck, F.K.: Efficiently Computing Static Single Assignment Form and the Control Dependence Graph. ACM Trans. on Prog. Lang. and Systems 13(4) (1991)

    Google Scholar 

  5. Dold, A., von Henke, F.W., Goerigk, W.: A Completely Verified Realistic Bootstrap Compiler. Int. Journal of Foundations of Computer Science 14(4), 659–680 (2003)

    Article  MATH  MathSciNet  Google Scholar 

  6. Feng, X., Hu, A.J.: Automatic formal verification for scheduled VLIW code. In: Languages, Compilers and Tools for Embedded Systems (LCTES/SCOPES 2002), pp. 85–92. ACM Press, New York (2002)

    Chapter  Google Scholar 

  7. Goerigk, W., Dold, A., Gaul, T., Goos, G., Heberle, A., von Henke, F.W., Hoffmann, U., Langmaack, H., Pfeifer, H., Ruess, H., Zimmermann, W.: Compiler Correctness and Implementation Verification: The Verifix Approach. In: Gyimóthy, T. (ed.) CC 1996. LNCS, vol. 1060, Springer, Heidelberg (1996)

    Google Scholar 

  8. Glesner, S., Goos, G., Zimmermann, W.: Verifix: Konstruktion und Architektur verifizierender Übersetzer (Verifix: Construction and Architecture of Verifying Compilers). it - Information Technology 46, 265–276 (2004)

    Article  Google Scholar 

  9. Glesner, S.: Using Program Checking to Ensure the Correctness of Compiler Implementations. Journal of Universal Comp. Science 9(3), 191–222 (2003)

    Google Scholar 

  10. The GNU Project. GNU binutils version 2.17 (2006), http://www.gnu.org/software/binutils/

  11. Goldberg, B., Zuck, L., Barrett, C.: Into the Loops: Practical Issues in Translation Validation for Optimizing Compilers. In: Compiler Optimization meets Compiler Verification (COCV 2004). Elsevier ENTCS. Elsevier, Amsterdam (2004)

    Google Scholar 

  12. Intel Corporation. Intel Itanium architecture software developer’s manual: Volume 3: Instruction set reference. Revision 2.2 (January 2006)

    Google Scholar 

  13. Karfa, C., Mandal, C., Sarkar, D., Pentakota, S.R., Reade, C.: A formal verification method of scheduling in high-level synthesis. In: 7th Int. Symposium on Quality Electronic Design (ISQED 2006), pp. 71–78. IEEE, Los Alamitos (2006)

    Chapter  Google Scholar 

  14. Klein, G., Nipkow, T.: Verified Bytecode Verifiers. Theoretical Computer Science 298, 583–626 (2003)

    Article  MATH  MathSciNet  Google Scholar 

  15. Leroy, X.: Formal certification of a compiler back-end or: programming a compiler with a proof assistant. In: POPL 2006: Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pp. 42–54. ACM Press, New York (2006)

    Chapter  Google Scholar 

  16. Mehlhorn, K., Näher, S.: From algorithms to working programs: On the use of program checking in leda. In: MFCS, pp. 84–93 (1998)

    Google Scholar 

  17. Moore, J.S.: A Mechanically Verified Language Implementation. Journal of Automated Reasoning 5(4), 461–492 (1989)

    Google Scholar 

  18. Necula, G.C.: Proof-Carrying Code. In: 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL 1997) (1997)

    Google Scholar 

  19. Necula, G.C.: Translation Validation for an Optimizing Compiler. In: Programming Language Design and Implementation (PLDI 2000) (2000)

    Google Scholar 

  20. Nipkow, T.: Verified Lexical Analysis. In: Grundy, J., Newey, M. (eds.) TPHOLs 1998. LNCS, vol. 1479, pp. 1–15. Springer, Heidelberg (1998)

    Chapter  Google Scholar 

  21. Nipkow, T., Paulson, L.C., Wenzel, M.T.: Isabelle/HOL. LNCS, vol. 2283. Springer, Heidelberg (2002)

    MATH  Google Scholar 

  22. Nipkow, T., von Oheimb, D.: Java light is Type-Safe – Definitely. In: 25th ACM Symposium on the Principles of Programming Languages. ACM Press, New York (1998)

    Google Scholar 

  23. Ortmeier, F., Schellhorn, G., Thums, A., Reif, W., Hering, B., Trappschuh, H.: Safety Analysis of the Height Control System of the Elbtunnel. In: Anderson, S., Bologna, S., Felici, M. (eds.) SAFECOMP 2002. LNCS, vol. 2434, pp. 296–308. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  24. Pnueli, A., Siegel, M., Singerman, E.: Translation validation. In: Steffen, B. (ed.) ETAPS 1998 and TACAS 1998. LNCS, vol. 1384, pp. 151–166. Springer, Heidelberg (1998)

    Chapter  Google Scholar 

  25. Strecker, M.: Formal Verification of a Java Compiler in Isabelle. In: Voronkov, A. (ed.) CADE 2002. LNCS (LNAI), vol. 2392, pp. 63–77. Springer, Heidelberg (2002)

    Google Scholar 

  26. Wasserrab, D., Nipkow, T., Snelting, G., Tip, F.: An operational semantics and type safety proof for multiple inheritance in C++. In: OOPSLA, pp. 345–362 (2006)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Stefan Leue Pedro Merino

Rights and permissions

Reprints and permissions

Copyright information

© 2008 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Gesellensetter, L., Glesner, S., Salecker, E. (2008). Formal Verification with Isabelle/HOL in Practice: Finding a Bug in the GCC Scheduler. In: Leue, S., Merino, P. (eds) Formal Methods for Industrial Critical Systems. FMICS 2007. Lecture Notes in Computer Science, vol 4916. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-79707-4_8

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-79707-4_8

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-79706-7

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

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics