Runtime Verification at Work: A Tutorial

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.

[1]  Chucky Ellison,et al.  An executable formal semantics of C with applications , 2011, POPL '12.

[2]  Grigore Rosu,et al.  Maximal Causal Models for Sequentially Consistent Systems , 2012, RV.

[3]  Charles McEwen Ellison,et al.  A formal semantics of C with applications , 2012 .

[4]  Dirk Beyer,et al.  Reliable and Reproducible Competition Results with BenchExec and Witnesses (Report on SV-COMP 2016) , 2016, TACAS.

[5]  Benjamin Monate,et al.  A Value Analysis for C Programs , 2009, 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation.

[6]  Brian Campbell,et al.  An Executable Semantics for CompCert C , 2012, CPP.

[7]  Shinichi Shiraishi,et al.  Test suites for benchmarks of static analysis tools , 2015, 2015 IEEE International Symposium on Software Reliability Engineering Workshops (ISSREW).

[8]  Grigore Rosu,et al.  JavaMOP: Efficient parametric runtime monitoring framework , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[9]  Chucky Ellison,et al.  Defining the undefinedness of C , 2015, PLDI.

[10]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[11]  Barbara König,et al.  Tools and Algorithms for the Construction and Analysis of Systems , 2012, Lecture Notes in Computer Science.

[12]  Nicholas Nethercote,et al.  Valgrind: a framework for heavyweight dynamic binary instrumentation , 2007, PLDI '07.

[13]  Grigore Rosu,et al.  Maximal sound predictive race detection with control flow abstraction , 2014, PLDI.

[14]  Grigore Rosu,et al.  An overview of the K semantic framework , 2010, J. Log. Algebraic Methods Program..

[15]  Robert C. Seacord,et al.  The Cert Oracle Secure Coding Standard for Java , 2011 .

[16]  Yi Zhang,et al.  RV-Monitor: Efficient Parametric Runtime Verification with Simultaneous Properties , 2014, RV.