Skip to main content

Runtime Verification at Work: A Tutorial

  • Conference paper
  • First Online:
Runtime Verification (RV 2016)

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

Included in the following conference series:

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.

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

Access this chapter

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 EPUB and 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

Institutional subscriptions

Notes

  1. 1.

    See https://runtimeverification.com/ for an overview of our tools and company.

  2. 2.

    See http://kframework.org for details.

  3. 3.

    Available at https://github.com/kframework/c-semantics.

  4. 4.

    See 2-buffer-overflow.c from the examples/demo directory of the c-semantics repository at https://github.com/kframework/c-semantics for examples of several varieties.

  5. 5.

    For a list of the errors and example programs demonstrating them, see https://github.com/kframework/c-semantics/blob/master/examples/error-codes.

  6. 6.

    See https://github.com/Toyota-ITC-SSD/Software-Analysis-Benchmark.

  7. 7.

    For tools and instructions on reproducing these results, see https://github.com/runtimeverification/evaluation/tree/master/toyota-itc-benchmark.

  8. 8.

    Detailed SV-COMP benchmark results are available at https://github.com/runtimeverification/evaluation/tree/master/svcomp-benchmark.

  9. 9.

    See https://goo.gl/L00hWt for a list of the bugs and http://tomcat.apache.org/tomcat-8.0-doc/changelog.html#Tomcat_8.0.27_(markt) for the Tomcat 8.0.27 changelog.

  10. 10.

    See https://github.com/runtimeverification/javamop/tree/master/examples.

  11. 11.

    For more information, please see https://github.com/runtimeverification/property- db.

References

  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. Ş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

    Chapter  Google Scholar 

  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

    Chapter  Google Scholar 

  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

    Chapter  Google Scholar 

  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. Clang: Clang 3.9 Documentation. http://clang.llvm.org/docs/index.html

  7. Daian, P.: RV-Monitor Documentation (2015). https://runtimeverification.com/monitor/1.3/docs/

  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. 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. GrammaTech: CodeSonar. http://grammatech.com/products/codesonar

  11. Guth, D.: RV-Match Documentation (2016). https://runtimeverification.com/match/1.0-SNAPSHOT/docs/

  12. Guth, D.: Using RV-Predict to track down race conditions (2015). https://runtimeverification.com/blog/?p=47

  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. 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. ISO, IEC JTC 1, SC 22, WG 14. ISO, IEC 9899: 2011: Prog. Lang.–C. Tech. rep. International Organization for Standardization, 2012

    Google Scholar 

  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. 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

    Chapter  Google Scholar 

  18. Li, Y.: Detecting popular data races in Java using RV-Predict (2015). https://runtimeverification.com/blog/?p=58

  19. Li, Y.: RV-Predict Documentation (2015). https://runtimeverification.com/predict/1.8.2/docs/

  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-5

    Google Scholar 

  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. MathWorks. Polyspace Bug Finder. http://www.mathworks.com/products/polyspace-bug-finder

  23. MathWorks. Polyspace Code Prover. http://www.mathworks.com/products/polyspace-code-prover

  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. 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. 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

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Chris Hathhorn .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2016 Springer International Publishing AG

About this paper

Cite this paper

Daian, P. et al. (2016). Runtime Verification at Work: A Tutorial. In: Falcone, Y., Sánchez, C. (eds) Runtime Verification. RV 2016. Lecture Notes in Computer Science(), vol 10012. Springer, Cham. https://doi.org/10.1007/978-3-319-46982-9_5

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-46982-9_5

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-46981-2

  • Online ISBN: 978-3-319-46982-9

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics