Runtime Verification at Work: A Tutorial

  • Philip Daian
  • Dwight Guth
  • Chris Hathhorn
  • Yilong Li
  • Edgar Pek
  • Manasvi Saxena
  • Traian Florin Şerbănuţă
  • Grigore Roşu
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 10012)

Abstract

We present a suite of runtime verification tools developed by Runtime Verification Inc.: RV-Match, RV-Predict, and RV-Monitor. RV-Match is a tool for checking C programs for undefined behavior and other common programmer mistakes. It is extracted from the most complete formal semantics of the C11 language and beats many similar tools in its ability to catch a broad range of undesirable behaviors. RV-Predict is a dynamic data race detector for Java and C/C++ programs. It is perhaps the only tool that is both sound and maximal: it only reports real races and it can find all races that can be found by any other sound data race detector analyzing the same execution trace. RV-Monitor is a runtime monitoring tool that checks and enforces safety and security properties during program execution. Our tools focus on reporting no false positives and are free for non-commercial use.

References

  1. 1.
    Roşu, G., Şerbănuţă, T.F.: An overview of the K semantic framework. In: 79.6, pp. 397–434 (2010). doi:10.1016/j.jlap.03.012
  2. 2.
    Şerbănuţă, T.F., Chen, F., Roşu, G.: Maximal causal models for sequentially consistent systems. In: Qadeer, S., Tasiran, S. (eds.) RV 2012. LNCS, vol. 7687, pp. 136–150. Springer, Heidelberg (2013). doi:10.1007/978-3-642-35632-2_16 CrossRefGoogle Scholar
  3. 3.
    Beyer, D.: Reliable and reproducible competition results with BenchExec and witnesses (Report on SV-COMP 2016). In: Chechik, M., Raskin, J.-F. (eds.) TACAS 2016. LNCS, vol. 9636, pp. 887–904. Springer, Heidelberg (2016). doi:10.1007/978-3-662-49674-9_55 CrossRefGoogle Scholar
  4. 4.
    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). doi:10.1007/978-3-642-35308-6_8 CrossRefGoogle Scholar
  5. 5.
    Canet, G., Cuoq, P., Monate, B.: A value analysis for C programs. In: Conference on Source Code Analysis and Manipulation (SCAM 2009), pp. 123–124. IEEE (2009). doi:10.1109/SCAM.2009.22
  6. 6.
    Clang: Clang 3.9 Documentation. http://clang.llvm.org/docs/index.html
  7. 7.
    Daian, P.: RV-Monitor Documentation (2015). https://runtimeverification.com/monitor/1.3/docs/
  8. 8.
    Ellison, C.: A formal semantics of C with applications. Ph.D. thesis. University of Illinois, July 2012. http://hdl.handle.net/2142/34297
  9. 9.
    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.
  10. 10.
  11. 11.
    Guth, D.: RV-Match Documentation (2016). https://runtimeverification.com/match/1.0-SNAPSHOT/docs/
  12. 12.
    Guth, D.: Using RV-Predict to track down race conditions (2015). https://runtimeverification.com/blog/?p=47
  13. 13.
    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
  14. 14.
    Huang, J., Meredith, Patrick O’Neil Roşu, G.: Maximal sound predictive race detection with control flow abstraction. In: PLDI 2015. doi:10.1145/2594291.2594315
  15. 15.
    ISO, IEC JTC 1, SC 22, WG 14. ISO, IEC 9899: 2011: Prog. Lang.–C. Tech. rep. International Organization for Standardization, 2012Google Scholar
  16. 16.
    Jin, D., et al.: JavaMOP: efficient parametric runtime monitoring framework. In: ICSE 2012, pp. 1427–1430. IEEE, June 2012. http://dx.doi.org/10.1109/ICSE.2012.6227231
  17. 17.
    Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An overview of AspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–354. Springer, Heidelberg (2001). doi:10.1007/3-540-45337-7_18 CrossRefGoogle Scholar
  18. 18.
    Li, Y.: Detecting popular data races in Java using RV-Predict (2015). https://runtimeverification.com/blog/?p=58
  19. 19.
    Li, Y.: RV-Predict Documentation (2015). https://runtimeverification.com/predict/1.8.2/docs/
  20. 20.
    Long, F., et al.: The CERT Oracle Secure Coding Standard for Java. The SEI Series in Software Engineering. Addison-Wesley, Upper Saddle River (2012). ISBN: 978-0-321-80395-5Google Scholar
  21. 21.
    Luo, Q., Zhang, Y., Lee, C., Jin, D., Meredith, P.O.N., Şerbănuţă, T.F., Roşu, G.: RV-Monitor: efficient parametric runtime verification with simultaneous properties. In: Bonakdarpour, B., Smolka, S.A. (eds.) RV 2014. LNCS, vol. 8734, pp. 285–300. Springer, Heidelberg (2014). doi:10.1007/978-3-319-11164-3_24 Google Scholar
  22. 22.
  23. 23.
  24. 24.
    Nethercote, N., Seward, J.: Valgrind: a framework for heavyweight 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
  25. 25.
    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), vol. Industrial Track (2015)Google Scholar
  26. 26.
    Why does this Java program terminate despite that apparently it shouldn’t (and didn’t)? (2013) http://stackoverflow.com/questions/16159203/whydoes-this-java-program-terminate-despite-that-apparently-itshouldnt-and-d

Copyright information

© Springer International Publishing AG 2016

Authors and Affiliations

  • Philip Daian
    • 1
  • Dwight Guth
    • 1
  • Chris Hathhorn
    • 1
  • Yilong Li
    • 1
  • Edgar Pek
    • 1
  • Manasvi Saxena
    • 1
  • Traian Florin Şerbănuţă
    • 1
  • Grigore Roşu
    • 1
  1. 1.Runtime Verification Inc.University of Illinois at Urbana-ChampaignChampaignUSA

Personalised recommendations