Runtime Monitoring for Concurrent Systems

Most existing specification languages for runtime verification describe the properties of the entire system in a top-down manner, and lack constructs to describe concurrency in the specification directly. \( CSP _E\) is a runtime-monitoring framework based on Hoare’s Communicating Sequential Processes (CSP) that captures concurrency in the specification directly. In this paper, we define the syntax of \( CSP _E\) and its formal semantics. In comparison to quantified event automata (QEA), as an example, \( CSP _E\) describes a specification for a concurrent system in a bottom-up manner, whereas QEA lends itself to a top-down manner. We also present an implementation of \( CSP _E\), which supports full \( CSP _E\) without optimization. When comparing its performance to that of QEA, our implementation of \( CSP _E\) requires slightly more than twice the time required by QEA; we consider this overhead to be acceptable. Finally, we introduce a tool named stracematch, which is developed using \( CSP _E\). It monitors system calls in (Mac) OS X and verifies the usage of file descriptors by a monitored process.

[1]  Adrian Francalanza,et al.  Synthesising correct concurrent runtime monitors , 2015, Formal Methods Syst. Des..

[2]  Radu Mateescu,et al.  SEQ.OPEN: A Tool for Efficient Trace-Based Verification , 2004, SPIN.

[3]  Volker Stolz,et al.  Temporal Assertions using AspectJ , 2006, Electron. Notes Theor. Comput. Sci..

[4]  Yliès Falcone,et al.  Decentralised LTL monitoring , 2011, Formal Methods in System Design.

[5]  Jun Sun,et al.  PAT: Towards Flexible Verification under Fairness , 2009, CAV.

[6]  Klaus Havelund,et al.  Runtime Verification of C Programs , 2008, TestCom/FATES.

[7]  Howard Barringer,et al.  TraceContract: A Scala DSL for Trace Analysis , 2011, FM.

[8]  Volker Stolz,et al.  Runtime Verification of Concurrent Haskell Programs , 2005, RV@ETAPS.

[9]  Gordon J. Pace,et al.  LARVA --- Safer Monitoring of Real-Time Java Programs (Tool Paper) , 2009, 2009 Seventh IEEE International Conference on Software Engineering and Formal Methods.

[10]  Andrew William Roscoe,et al.  The Theory and Practice of Concurrency , 1997 .

[11]  Grigore Rosu,et al.  An overview of the MOP runtime verification framework , 2012, International Journal on Software Tools for Technology Transfer.

[12]  Doron Drusinsky,et al.  Modeling and verification using UML statecharts - a working guide to reactive system design, runtime monitoring and execution-based model checking , 2006 .

[13]  Radu Mateescu,et al.  CADP 2011: a toolbox for the construction and analysis of distributed processes , 2012, International Journal on Software Tools for Technology Transfer.

[14]  Giles Reger,et al.  Automata based monitoring and mining of execution traces , 2014 .

[15]  Yliès Falcone,et al.  Runtime Verification of Safety-Progress Properties , 2009, RV.

[16]  Roger Villemaire,et al.  Runtime Enforcement of Web Service Message Contracts with Data , 2012, IEEE Transactions on Services Computing.

[17]  Klaus Havelund,et al.  Rule-based runtime verification revisited , 2015, International Journal on Software Tools for Technology Transfer.

[18]  Bhim P. Upadhyaya,et al.  Programming with Scala , 2017, Undergraduate Topics in Computer Science.

[19]  Mahesh Viswanathan,et al.  Runtime Assurance Based On Formal Specifications , 1999, PDPTA.

[20]  Koushik Sen,et al.  Rule-Based Runtime Verification , 2004, VMCAI.

[21]  Gordon J. Pace,et al.  Dynamic Event-Based Runtime Monitoring of Real-Time and Contextual Properties , 2009, FMICS.

[22]  Jean Goubault-Larrecq,et al.  A Smell of Orchids , 2008, RV.

[23]  Serdar Tasiran,et al.  Runtime verification of concurrency-specific correctness criteria , 2011, International Journal on Software Tools for Technology Transfer.

[24]  Volker Stolz Temporal Assertions with Parametrized Propositions , 2010, J. Log. Comput..

[25]  Klaus Havelund,et al.  Specification of Parametric Monitors Quantified Event Automata versus Rule Systems , 2015 .

[26]  Cyrille Artho,et al.  Domain-Specific Languages with Scala , 2015, ICFEM.

[27]  Gordon J. Pace,et al.  polyLarva: Runtime Verification with Configurable Resource-Aware Monitoring Boundaries , 2012, SEFM.

[28]  Ondrej Lhoták,et al.  Adding trace matching with free variables to AspectJ , 2005, OOPSLA '05.

[29]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[30]  Martin Leucker,et al.  Monitoring modulo theories , 2016, International Journal on Software Tools for Technology Transfer.

[31]  Pascal Lafourcade,et al.  Monitoring Electronic Exams , 2015, RV.

[32]  Howard Barringer,et al.  Rule Systems for Run-time Monitoring: from Eagle to RuleR , 2010, J. Log. Comput..

[33]  Klaus Havelund,et al.  Specification of Parametric Monitors , 2015, SyDe Summer School.

[34]  Marcelo d'Amorim,et al.  Event-based runtime verification of java programs , 2005, ACM SIGSOFT Softw. Eng. Notes.

[35]  Bryan Cantrill,et al.  Dynamic Instrumentation of Production Systems , 2004, USENIX Annual Technical Conference, General Track.

[36]  Grigore Rosu,et al.  Parametric Trace Slicing and Monitoring , 2009, TACAS.

[37]  Felix Klaedtke,et al.  Policy Monitoring in First-Order Temporal Logic , 2010, CAV.

[38]  Grigore Rosu,et al.  Monitoring programs using rewriting , 2001, Proceedings 16th Annual International Conference on Automated Software Engineering (ASE 2001).

[39]  Jan-Christoph Küster,et al.  From Propositional to First-Order Monitoring , 2013, RV.

[40]  David E. Rydeheard,et al.  MarQ: Monitoring at Runtime with QEA , 2015, TACAS.

[41]  Howard Barringer,et al.  Quantified Event Automata: Towards Expressive and Efficient Runtime Monitors , 2012, FM.