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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
See https://runtimeverification.com/ for an overview of our tools and company.
- 2.
See http://kframework.org for details.
- 3.
Available at https://github.com/kframework/c-semantics.
- 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.
For a list of the errors and example programs demonstrating them, see https://github.com/kframework/c-semantics/blob/master/examples/error-codes.
- 6.
- 7.
For tools and instructions on reproducing these results, see https://github.com/runtimeverification/evaluation/tree/master/toyota-itc-benchmark.
- 8.
Detailed SV-COMP benchmark results are available at https://github.com/runtimeverification/evaluation/tree/master/svcomp-benchmark.
- 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.
- 11.
For more information, please see https://github.com/runtimeverification/property- db.
References
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
Ş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
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
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
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
Clang: Clang 3.9 Documentation. http://clang.llvm.org/docs/index.html
Daian, P.: RV-Monitor Documentation (2015). https://runtimeverification.com/monitor/1.3/docs/
Ellison, C.: A formal semantics of C with applications. Ph.D. thesis. University of Illinois, July 2012. http://hdl.handle.net/2142/34297
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.
GrammaTech: CodeSonar. http://grammatech.com/products/codesonar
Guth, D.: RV-Match Documentation (2016). https://runtimeverification.com/match/1.0-SNAPSHOT/docs/
Guth, D.: Using RV-Predict to track down race conditions (2015). https://runtimeverification.com/blog/?p=47
Hathhorn, C., Ellison, C., Roşu, G.: Defining the undefinedness of C. In: 36th Conference on Programming Language Design and Implementation (PLDI 2015) (2015)
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
ISO, IEC JTC 1, SC 22, WG 14. ISO, IEC 9899: 2011: Prog. Lang.–C. Tech. rep. International Organization for Standardization, 2012
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
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
Li, Y.: Detecting popular data races in Java using RV-Predict (2015). https://runtimeverification.com/blog/?p=58
Li, Y.: RV-Predict Documentation (2015). https://runtimeverification.com/predict/1.8.2/docs/
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
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
MathWorks. Polyspace Bug Finder. http://www.mathworks.com/products/polyspace-bug-finder
MathWorks. Polyspace Code Prover. http://www.mathworks.com/products/polyspace-code-prover
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
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)
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
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights 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)