Advertisement

Runtime Verification Based on Register Automata

  • Radu Grigore
  • Dino Distefano
  • Rasmus Lerchedahl Petersen
  • Nikos Tzevelekos
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7795)

Abstract

We propose TOPL automata as a new method for runtime verification of systems with unbounded resource generation. Paradigmatic such systems are object-oriented programs which can dynamically generate an unbounded number of fresh object identities during their execution. Our formalism is based on register automata, a particularly successful approach in automata over infinite alphabets which administers a finite-state machine with boundedly many input-storing registers. We show that TOPL automata are equally expressive to register automata and yet suitable to express properties of programs. Compared to other runtime verification methods, our technique can handle a class of properties beyond the reach of current tools. We show in particular that properties which require value updates are not expressible with current techniques yet are naturally captured by TOPL machines. On the practical side, we present a tool for runtime verification of Java programs via TOPL properties, where the trade-off between the coverage and the overhead of the monitoring system is tunable by means of a number of parameters. We validate our technique by checking properties involving multiple objects and chaining of values on large open source projects.

Keywords

Java Program Unbounded Number Initial Store Property Violation Formal Correspondence 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Aktug, I., Naliuka, K.: ConSpec – a formal language for policy specification. ENTCS 197(1), 45–58 (2008)MathSciNetGoogle Scholar
  2. 2.
    Allan, C., Avgustinov, P., Christensen, A.S., Hendren, L.J., Kuzins, S., Lhoták, O., de Moor, O., Sereni, D., Sittampalam, G., Tibble, J.: Adding trace matching with free variables to AspectJ. In: OOPSLA, pp. 345–364 (2005)Google Scholar
  3. 3.
    Arnold, M., Vechev, M., Yahav, E.: QVM: an efficient runtime for detecting defects in deployed systems. In: OOPSLA, pp. 143–162 (2008)Google Scholar
  4. 4.
    Ball, T., Rajamani, S.K.: The SLAM Toolkit. In: Berry, G., Comon, H., Finkel, A. (eds.) CAV 2001. LNCS, vol. 2102, pp. 260–264. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  5. 5.
    Ball, T., Rajamani, S.K.: Slic: a specification language for interface checking (of C). Technical Report MSR-TR-2001-21, Microsoft Research (2002)Google Scholar
  6. 6.
    Barringer, H., Falcone, Y., Havelund, K., Reger, G., Rydeheard, D.: Quantified Event Automata: Towards Expressive and Efficient Runtime Monitors. In: Giannakopoulou, D., Méry, D. (eds.) FM 2012. LNCS, vol. 7436, pp. 68–84. Springer, Heidelberg (2012)CrossRefGoogle Scholar
  7. 7.
    Barringer, H., Groce, A., Havelund, K., Smith, M.: Formal Analysis of Log Files. Journal of Aerospace Computing, Information, and Communication 7(11) (2010)Google Scholar
  8. 8.
    Barringer, H., Havelund, K.: TraceContract: A Scala DSL for Trace Analysis. In: Butler, M., Schulte, W. (eds.) FM 2011. LNCS, vol. 6664, pp. 57–72. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  9. 9.
    Barringer, H., Rydeheard, D.E., Havelund, K.: Rule Systems for Run-time Monitoring: from Eagle to RuleR. J. Log. Comput. 20(3), 675–706 (2010)MathSciNetMATHCrossRefGoogle Scholar
  10. 10.
    Bierhoff, K., Aldrich, J.: Lightweight object specification with typestates. In: ESEC/ SIGSOFT FSE, pp. 217–226 (2005)Google Scholar
  11. 11.
    Bierhoff, K., Aldrich, J.: Modular typestate checking of aliased objects. In: OOPSLA, pp. 301–320 (2007)Google Scholar
  12. 12.
    Björklund, H., Schwentick, T.: On notions of regularity for data languages. Theor. Comput. Sci. 411(4-5), 702–715 (2010)MATHCrossRefGoogle Scholar
  13. 13.
    Blackburn, S.M., Garner, R., Hoffmann, C., Khan, A.M., McKinley, K.S., Bentzur, R., Diwan, A., Feinberg, D., Frampton, D., Guyer, S.Z., Hirzel, M., Hosking, A.L., Jump, M., Lee, H.B., Moss, J.E.B., Phansalkar, A., Stefanovic, D., VanDrunen, T., von Dincklage, D., Wiedermann, B.: The DaCapo benchmarks: Java benchmarking development and analysis. In: OOPSLA, pp. 169–190 (2006)Google Scholar
  14. 14.
    Bojanczyk, M., Muscholl, A., Schwentick, T., Segoufin, L., David, C.: Two-Variable Logic on Words with Data. In: LICS, pp. 7–16 (2006)Google Scholar
  15. 15.
    DeLine, R., Fähndrich, M.: Typestates for Objects. In: Odersky, M. (ed.) ECOOP 2004. LNCS, vol. 3086, pp. 465–490. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  16. 16.
    Disney, T., Flanagan, C., McCarthy, J.: Temporal higher-order contracts. In: ICFP, pp. 176–188 (2011)Google Scholar
  17. 17.
    Fink, S.J., Yahav, E., Dor, N., Ramalingam, G., Geay, E.: Effective typestate verification in the presence of aliasing. In: ISSTA, pp. 133–144 (2006)Google Scholar
  18. 18.
    Grigore, R., Petersen, R.L., Distefano, D.: TOPL: A language for specifying safety temporal properties of object-oriented programs. In: FOOL (2011)Google Scholar
  19. 19.
    Havelund, K., Rosu, G.: Monitoring Programs Using Rewriting. In: ASE, pp. 135–143 (2001)Google Scholar
  20. 20.
    Jin, D., Meredith, P., Lee, C., Rosu, G.: JavaMOP: Efficient parametric runtime monitoring framework. In: ICSE, pp. 1427–1430 (2012)Google Scholar
  21. 21.
    Kaminski, M., Francez, N.: Finite-memory automata. Theor. Comput. Sci. 134(2) (1994)Google Scholar
  22. 22.
    Leucker, M., Schallhart, C.: A brief account of runtime verification. J. Log. Algebr. Program. 78(5), 293–303 (2009)MATHCrossRefGoogle Scholar
  23. 23.
    Meredith, P.O., Jin, D., Griffith, D., Chen, F., Rosu, G.: An overview of the MOP runtime verification framework. STTT 14(3), 249–289 (2012)CrossRefGoogle Scholar
  24. 24.
    Neven, F., Schwentick, T., Vianu, V.: Finite state machines for strings over infinite alphabets. ACM Trans. Comput. Logic 5(3), 403–435 (2004)MathSciNetCrossRefGoogle Scholar
  25. 25.
    Newsome, J., Song, D.X.: Dynamic Taint Analysis for automatic detection, analysis, and signature generation of exploits on commodity software. In: NDSS (2005)Google Scholar
  26. 26.
    Rosu, G., Chen, F.: Semantics and algorithms for parametric monitoring. LMCS 8(1) (2012)Google Scholar
  27. 27.
    Sakamoto, H., Ikeda, D.: Intractability of decision problems for finite-memory automata. Theor. Comput. Sci. 231(2), 297–308 (2000)MathSciNetMATHCrossRefGoogle Scholar
  28. 28.
    Segoufin, L.: Automata and Logics for Words and Trees over an Infinite Alphabet. In: Ésik, Z. (ed.) CSL 2006. LNCS, vol. 4207, pp. 41–57. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  29. 29.
    Strom, R.E., Yemini, S.: Typestate: A programming language concept for enhancing software reliability. IEEE Trans. Software Eng. 12(1), 157–171 (1986)MATHCrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2013

Authors and Affiliations

  • Radu Grigore
    • 1
  • Dino Distefano
    • 1
  • Rasmus Lerchedahl Petersen
    • 2
  • Nikos Tzevelekos
    • 1
  1. 1.Queen Mary University of LondonUK
  2. 2.Microsoft ResearchUK

Personalised recommendations