Skip to main content

From Model Checking to Runtime Verification and Back

  • Conference paper
  • First Online:
Book cover Runtime Verification (RV 2017)

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

Included in the following conference series:

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.

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.

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

    https://divine.fi.muni.cz/2017/passthrough/.

  4. 4.

    https://divine.fi.muni.cz/2017/passthrough/.

References

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

    Chapter  Google Scholar 

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

    Chapter  Google Scholar 

  3. Havelund, K., Rosu, G.: Efficient monitoring of safety properties. STTT 6(2), 158–173 (2004). doi:10.1007/s10009-003-0117-6

    Article  Google Scholar 

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

    Article  MATH  Google Scholar 

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

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

    Article  MATH  Google Scholar 

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

    Article  Google Scholar 

  8. Nethercote, N., Seward, J.: Valgrind: a framework for heavyweight dynamic binary instrumentation. In: PLDI (2007)

    Google Scholar 

  9. The LLVM Project. LLVM language reference manual (2016). http://llvm.org/docs/LangRef.html

  10. Petr Roĉkai and JiřìBarnat. A simulator for LLVM bitcode. 2017. Preliminary version. https://arxiv.org/abs/1704.05551

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

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Petr Ročkai .

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics