From Model Checking to Runtime Verification and Back

Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 10548)

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.

References

  1. 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 CrossRefGoogle Scholar
  2. 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 CrossRefGoogle Scholar
  3. 3.
    Havelund, K., Rosu, G.: Efficient monitoring of safety properties. STTT 6(2), 158–173 (2004). doi:10.1007/s10009-003-0117-6 CrossRefGoogle Scholar
  4. 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 CrossRefMATHGoogle Scholar
  5. 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. 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–8102CrossRefMATHGoogle Scholar
  7. 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–2787CrossRefGoogle Scholar
  8. 8.
    Nethercote, N., Seward, J.: Valgrind: a framework for heavyweight dynamic binary instrumentation. In: PLDI (2007)Google Scholar
  9. 9.
    The LLVM Project. LLVM language reference manual (2016). http://llvm.org/docs/LangRef.html
  10. 10.
    Petr Roĉkai and JiřìBarnat. A simulator for LLVM bitcode. 2017. Preliminary version. https://arxiv.org/abs/1704.05551
  11. 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

Copyright information

© Springer International Publishing AG 2017

Authors and Affiliations

  • Katarína Kejstová
    • 1
  • Petr Ročkai
    • 1
  • Jiří Barnat
    • 1
  1. 1.Faculty of InformaticsMasaryk UniversityBrnoCzech Republic

Personalised recommendations