Abstract
We describe a novel approach for adapting an existing software model checker to perform precise runtime verification. The software under test is allowed to communicate with the wider environment (including the file system and network). The modifications to the model checker are small and self-contained, making this a viable strategy for re-using existing model checking tools in a new context.
Additionally, from the data that is gathered during a single execution in the runtime verification mode, we automatically re-construct a description of the execution environment which can then be used in the standard, full-blown model checker. This additional verification step can further improve coverage, especially in the case of parallel programs, without introducing substantial overhead into the process of runtime verification.
This work has been partially supported by the Czech Science Foundation grant No. 15-08772S and by Red Hat, Inc.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
In microkernel and other design schools, syscalls in the traditional sense only exist as an abstraction, and are implemented through some form of inter-process communication.
- 2.
The assume primitive is a counterpart to assert and has a similar interface. It is customary that a single boolean value is given as a parameter to the assume statement (function call), representing the assumed condition.
- 3.
- 4.
References
Barnat, J., Brim, L., Havel, V., Havlíček, J., Kriho, J., Lenco, M., Ročkai, P., Still, V., Weiser, J.: DiVinE 3.0 – an explicit-state model checker for multithreaded C & C++ programs. In: Sharygina, N., Veith, H. (eds.) CAV 2013. LNCS, vol. 8044. Springer, Heidelberg (2013). doi:10.1007/978-3-642-39799-8_60
Havelund, K.: Using runtime analysis to guide model checking of Java programs. In: Havelund, K., Penix, J., Visser, W. (eds.) SPIN 2000. LNCS, vol. 1885, pp. 245–264. Springer, Heidelberg (2000). doi:10.1007/10722468_15
Havelund, K., Rosu, G.: Efficient monitoring of safety properties. STTT 6(2), 158–173 (2004). doi:10.1007/s10009-003-0117-6
Havelund, K., Rosu, G.: An overview of the runtime verification tool Java PathExplorer. Formal Methods Syst. Des. 24(2), 189–215 (2004). doi:10.1023/B:FORM.0000017721.39909.4b
Jin, D., O’Neil Meredith, P., Lee, C., Roşu, G.: JavaMOP: efficient parametric runtime monitoring framework. In: International Conference on Software Engineering (ICSE), pp. 1427–1430. IEEE, June 2012. doi:10.1109/ICSE.2012.6227231
Kim, M., Viswanathan, M., Kannan, S., Lee, I., Sokolsky, O.: Java-MaC: a run-time assurance approach for java programs. Formal Methods Syst. Des. 24(2), 129–155 (2004). doi:10.1023/B:FORM.0000017719.43755.7c. ISSN:1572–8102
O’Neil Meredith, P., Jin, D., Griffith, D., Chen, F., Roşu, G.: An overview of the MOP runtime verification framework. Int. J. Softw. Tools Technol. Transfer 14(3), 249–289 (2012). doi:10.1007/s10009-011-0198-6. ISSN:1433–2787
Nethercote, N., Seward, J.: Valgrind: a framework for heavyweight dynamic binary instrumentation. In: PLDI (2007)
The LLVM Project. LLVM language reference manual (2016). http://llvm.org/docs/LangRef.html
Petr Roĉkai and JiřìBarnat. A simulator for LLVM bitcode. 2017. Preliminary version. https://arxiv.org/abs/1704.05551
Ročkai, P., Štill, V., Černà, I., Barnat, J.: DiVM: model checking with LLVM and graph memory (2017). Preliminary version. https://arxiv.org/abs/1703.05341
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2017 Springer International Publishing AG
About this paper
Cite this paper
Kejstová, K., Ročkai, P., Barnat, J. (2017). From Model Checking to Runtime Verification and Back. In: Lahiri, S., Reger, G. (eds) Runtime Verification. RV 2017. Lecture Notes in Computer Science(), vol 10548. Springer, Cham. https://doi.org/10.1007/978-3-319-67531-2_14
Download citation
DOI: https://doi.org/10.1007/978-3-319-67531-2_14
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-67530-5
Online ISBN: 978-3-319-67531-2
eBook Packages: Computer ScienceComputer Science (R0)