RV-Match: Practical Semantics-Based Program Analysis

  • Dwight GuthEmail author
  • Chris HathhornEmail author
  • Manasvi SaxenaEmail author
  • Grigore RoşuEmail author
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 9779)


We present RV-Match, a tool for checking C programs for undefined behavior and other common programmer mistakes. Our tool is extracted from the most complete formal semantics of the C11 language. Previous versions of this tool were used primarily for testing the correctness of the semantics, but we have improved it into a tool for doing practical analysis of real C programs. It beats many similar tools in its ability to catch a broad range of undesirable behaviors. We demonstrate this with comparisons based on a third-party benchmark.


C11 Programming language semantics Undefined behavior Static analysis Abstract interpretation 


  1. 1.
    Roşu, G., Şerbănuţă, T.F.: An overview of the K semantic framework. J. Log. Algebr. Program. 79(6), 397–434 (2010). doi: 10.1016/j.jlap.2010.03.012 MathSciNetCrossRefzbMATHGoogle Scholar
  2. 2.
    Beyer, D.: Reliableand reproducible competition results with BenchExec and witnesses. In: Chechik, M., Raskin, J.-F. (eds.) Tools and Algorithms for the Construction and Analysis of Systems: 22nd International Conference (TACAS 2016), (Report on SV-COMP 2016), pp. 887–904 (2016). ISBN: 978-3-662-49674-9, doi: 10.1007/978-3-662-49674-9_55
  3. 3.
    Campbell, B.: An executable semantics for CompCert C. In: Hawblitzel, C., Miller, D. (eds.) CPP 2012. LNCS, vol. 7679, pp. 60–75. Springer, Heidelberg (2012)CrossRefGoogle Scholar
  4. 4.
    Canet, G., Cuoq, P., Monate, B.: A value analysis for C programs. In: Conference Source Code Analysis and Manipulation (SCAM 2009), pp. 123–124. IEEE (2009). doi: 10.1109/SCAM.2009.22
  5. 5.
    Clang: Clang 3.9 documentation.
  6. 6.
    Ellison, C.: A formal semantics of C with applications. Ph.D. thesis, University of Illinois, July 2012.
  7. 7.
    Ellison, C., Roşu, G.: An executable formal semantics of C with applications. In: ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL 2012), pp. 533–544 (2012). doi: 10.1145/2103656.2103719
  8. 8.
  9. 9.
    Hathhorn, C., Ellison, C., Roşu, G.: Defining the undefinedness of C. In: 36th Conference on Programming Language Design and Implementation (PLDI 2015) (2015)Google Scholar
  10. 10.
    ISO/IEC JTC 1, SC 22, WG 14. ISO/IEC 9899:2011: Programming Language C Technical report International Organisation for Standardization (2012)Google Scholar
  11. 11.
  12. 12.
  13. 13.
    Nethercote, N., Seward, J.: Valgrind: a framework for heavy-weight dynamic binary instrumentation. In: ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2007), pp. 89–100. ACM (2007). doi: 10.1145/1250734.1250746
  14. 14.
    Shiraishi, S., Mohan, V., Marimuthu, H.: Test suites for benchmarks of static analysis tools. In: The 26th IEEE International Symposium on Software Reliability Engineering (ISSRE 2015), Industrial Track (2015)Google Scholar

Copyright information

© Springer International Publishing Switzerland 2016

Authors and Affiliations

  1. 1.Runtime Verification Inc.UrbanaUSA
  2. 2.University of Illinois at Urbana-ChampaignUrbanaUSA
  3. 3.University of MissouriColumbiaUSA

Personalised recommendations