leveraging dtrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414...

64
Leveraging DTrace for runtime verification Carl Martin Rosenberg June 7th, 2016 Department of Informatics, University of Oslo

Upload: others

Post on 06-Aug-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Leveraging DTrace for runtime verification

Carl Martin RosenbergJune 7th, 2016

Department of Informatics, University of Oslo

Page 2: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Context: Runtime verification

Page 3: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

System“Buffers should never overflow”

“Every request gets an answer”

Desired properties

“Variables should never enter an inconsistent state”

1

Page 4: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

‘‘Runtime verification is the discipline of computer sciencethat deals with the study, development and application ofthose verification techniques that allow checking whether arun of a system under scrutiny […] satisfies or violates agiven correctness property.’’ [6, p. 36, emphasis mine]

2

Page 5: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

… … … … … … …

3

Page 6: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

… … … … … … …

4

Page 7: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

How to do runtime verification

1. Rigorously specify a correctness property (typically using formallogic).

2. Collect runtime data from the system.3. Find a way to automatically check if the collected data indicates

that the correctness property is violated or satisfied.

5

Page 8: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Key idea: Exploit formal connections betweenlogic and automata theory

5

Page 9: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

How to do runtime verification

1. There are ways of deriving automata from logical expressionsthat accept or reject their input based on whether the inputsatisfies or falsifies a logical formula.

2. This can be used to create monitors.

6

Page 10: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Monitors

A monitor is a program that consumes data from the system underscrutiny, interprets this data as a run of a system and reportswhether the specified property is

• satisfied by the data,• falsified by the data or• that the data is insufficient to derive a verdict [7, p. 294–295].

7

Page 11: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Monitor

Trace extractor

Systembeing

analyzed

Monitor generator

Specificationformula

ACCEPT REJECT INCONCLUSIVE

Trace

8

Page 12: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

ACCEPT REJECT INCONCLUSIVE

Specification formula in LTL3

graphviz2dtrace

Mapping

D script

Dtrace

System being analyzed

9

Page 13: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Specification formalism: LTL3

Page 14: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

LTL3 is a three-valued variety of LinearTemporal Logic (LTL): Same syntax, different

semantics.

9

Page 15: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

LTL: Linear Temporal Logic

• In the context of formal methods, Temporal Logic is used toreason about the evolution of some system over time.

• LTL is based on the notion of time as an infinite sequence oftime slices: Time is linear.

• The idea of using Linear Temporal Logic for program verificationoriginated with Pnueli [8].

10

Page 16: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Linear time

p,q r,s p,s …

11

Page 17: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

LTL Syntax

Syntactically, LTL extends the familiar Propositional Logic withtemporal operators. The temporal operators are:

• 2 (always),• 3 (eventually),• # (next),• U (until),• R (release),• W (weak until/waiting for).

12

Page 18: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

LTL Semantics

• LTL formulas are interpreted on sequences of states, where eachstate contains a set of atomic propositions that are true in thatstate.

• In the standard view, these sequences of states are consideredinfinite, and we call such sequences of states traces.

13

Page 19: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

LTL Semantics

p,q r,s p,s …

Some observations:

• σ |= p U s,• σ |= #s,• σ |= 3r,• σ ̸|= 2p and• σ |= p W s.

14

Page 20: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Key idea of LTL3: A reasonable way of dealingwith finite traces.

14

Page 21: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

LTL3 Semantics

• LTL3 is defined for finite traces, which makes it suitable forruntime verification: We can only observere finite runs.

15

Page 22: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Key idea of LTL3: Identify good and badprefixes [5].

15

Page 23: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Good prefix

• A trace fragment u is a good prefix with respect to someproperty ϕ if ϕ holds in all possible futures following u.

16

Page 24: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Bad prefix

• A trace fragment u is a bad prefix with respect to some propertyϕ if ϕ holds in no possible futures following u.

17

Page 25: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

LTL3 Semantics summarized

We can thus state the truth-value of an LTL3 formula ϕ with respectto a finite trace u as follows:

u|=3ϕ =

⊤ if u is a good prefix wrt. ϕ⊥ if u is a bad prefix wrt. ϕ? otherwise.

18

Page 26: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Foundational idea: For an LTL formula ϕ, acorresponding Büchi automaton [2] can be

derived.

18

Page 27: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

• Büchi Automata are defined on infinite traces and accept a traceif and only if the automaton visits some accepting stateinfinitely often.

19

Page 28: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

• Bauer et al. give an algorithm for creating LTL3-monitors [1,14:10-14:13]

• This algorithm is implemented in LamaConv [9], which we makeuse of in the thesis.

20

Page 29: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

21

Page 30: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Monitor

Trace extractor

Systembeing

analyzed

Monitor generator

Specificationformula

ACCEPT REJECT INCONCLUSIVE

Trace

22

Page 31: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Monitor

Trace extractor

Systembeing

analyzed

ACCEPT REJECT INCONCLUSIVE

Trace

Specification formula in LTL3

Monitor generator

23

Page 32: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

DTrace

Page 33: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

• DTrace is an operating system technology for monitoringrunning software systems.

• Originally written by Bryan Cantrill, Adam Leventhal and MikeShapiro for the Sun Solaris 10 operating system, DTrace is nowavailable for Mac OS X, FreeBSD and other systems [4]

• If a running system has DTrace installed, an administrative usercan log into the system, write a DTrace script and get insightsabout the system without having to reboot, stop or alter thesystem in any way.

24

Page 34: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

DTrace’s two most compelling features

1. DTrace gives a unified view of the whole system: Events withinthe kernel and in userland processes can be analyzedsimultaneously.

2. DTrace provides facilities for dynamic tracing: Instrumentationwhich does not rely on static artifacts in the source code.

25

Page 35: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Using DTrace: The D scripting language

• Users interact with the DTrace framework via a domain-specificAWK-like scripting language called D.

• D is an event-driven programming langauge, where users specifyactions that DTrace should take when an event of interestoccurs.

26

Page 36: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Using DTrace: The D scripting language

#!/usr/sbin/dtrace -qssyscall::read:entry/execname != "dtrace" /{

printf("%s\n", execname);}

27

Page 37: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Main components of D

• Probes (4-tuples)• Action blocks• Predicates• Probe clauses

28

Page 38: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

DTrace Probes

• DTrace provides the user with an enormous list of possibleinstrumentation points representing events of interest. Theseinstrumentation points are called probes.

• The available probes reflect aspects of the system that can bemonitored at the current point in time.

• Probes are identified by a four-tuple<provider:module:function:name>.

• When the event a probe represents occurs, one says that theprobe ‘‘fires’’).

29

Page 39: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Design and Implementation ofgraphviz2dtrace

Page 40: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Basic idea: Associate atomic propositions inLTL specifications with DTrace probe

specifications (with optional predicates).

29

Page 41: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

push → pid$target::push:entrypop → pid$target::pop:return

empty → pid$target::empty:return/arg1 == 1/

30

Page 42: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

graphviz2dtrace

Mapping

D script

31

Page 43: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

graphviz2dtrace

• In essence, graphviz2dtrace is a source-to-source compilerwhich takes LTL3-based automata and creates corresponding Dscripts.

• The resulting scripts have the automaton’s transition functionencoded in an array, and the automaton state stored in avariable.

• When an event occurs, the state of the automaton is updatedaccording to the transition function.

32

Page 44: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Anticipation

• graphviz2dtrace creates monitors that terminateimmediately upon finding a good or bad prefix: They areanticipatory.

• The scripts achieve this by understanding which state it is aboutto enter.

33

Page 45: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Anticipation

pid$target::empty:return/ (arg1 == 1) && (state == 1)/{

trace("REJECTED");HAS_VERDICT = 1;exit(0);

}

34

Page 46: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Implementation

• The essential implemenation concern is creating three types ofprobe clauses: rejecting, accepting and neutral clauses.

• Rejecting clauses are clauses dealing with situations where badprefixes are found.

• Accepting clauses are clauses dealing with situations wheregood prefixes are found.

• Neutral clauses simply update the state of the automaton.

35

Page 47: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

36

Page 48: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Implementation

• Since all clauses use predicates to reason about the automatonstates, and since probes are processed top to bottom, neutralclauses must be placed last in the script.

37

Page 49: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Key limitation: Race conditions occur if twoneutral probe clauses fire simultaneously.

37

Page 50: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Monitor

Trace extractor

Systembeing

analyzed

ACCEPT REJECT INCONCLUSIVE

Trace

Specification formula in LTL3

Monitor generator

38

Page 51: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

ACCEPT REJECT INCONCLUSIVE

Specification formula in LTL3

graphviz2dtrace

Mapping

D script

Dtrace

System being analyzed

39

Page 52: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Case study 1: The stack

Page 53: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Demo time!https://vimeo.com/169470067 (03:00)

39

Page 54: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Gregg’s dictum

Brendan Gregg [10]

• ‘‘Don’t worry too much about pid provider probe cost at < 1000events/sec.’’

• ‘‘At > 10,000 events/sec, pid provider probe cost will benoticeable.’’

• ‘‘At > 100,000 events/sec, pid provider probe cost may bepainful.’’ [3]

40

Page 55: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

104 105 106 107 108

10−2

10−1

100

101

102

0.003

0.067

0.6020.353 0.414

1.096

8.011

72.363

0.003

0.057

0.398

3.176

30.718

Iterations

Runn

ingtim

ein

seco

nds

Monitor overhead1

Uninstrumentedwith pid

with printf

1Averaged, measured with time, largest of real or user+sys

41

Page 56: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Case study 2: Node.js andPostgreSQL

Page 57: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Demo time!https://vimeo.com/169585739 (02:55)

41

Page 58: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

0 20 40 60 80 1001,200

1,400

1,600

1,800

2,000

N concurrent connections

Mea

nproc

esse

drequ

ests

Mean processed requests per second at various concurrency levels2

MonitoredUnmonitored

2Averaged, measured with ab

42

Page 59: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Conclusion and Evaluation

Page 60: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

Questions?

42

Page 61: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

References I

A. Bauer, M. Leucker, and C. Schallhart.Runtime verification for ltl and tltl.ACM Trans. Softw. Eng. Methodol., 20(4):14:1–14:64, Sept. 2011.

J. R. Büchi.On a decision method in restricted second order arithmetic.In Proc. Internat. Congr. Logic, Method. and Philos. Sci, pages1–12, 1960.B. Gregg.DTrace pid Provider Overhead.http://dtrace.org/blogs/brendan/2011/02/18/dtrace-pid-provider-overhead/, 2011.

Page 62: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

References II

B. Gregg and J. Mauro.DTrace: Dynamic Tracing in Oracle Solaris, Mac OS X, andFreeBSD.Prentice Hall Professional, 2011.O. Kupferman and M. Y. Vardi.Model checking of safety properties.Formal Methods in System Design, 19(3):291–314, 2001.

M. Leucker.Teaching runtime verification.In S. Khurshid and K. Sen, editors, Runtime Verification, volume7186 of Lecture Notes in Computer Science, pages 34–48.Springer Berlin Heidelberg, 2012.

Page 63: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

References III

M. Leucker and C. Schallhart.A brief account of runtime verification.The Journal of Logic and Algebraic Programming, 78(5):293 – 303,2009.The 1st Workshop on Formal Languages and Analysis ofContract-Oriented Software (FLACOS’07).

A. Pnueli.The temporal logic of programs.In Foundations of Computer Science, 1977., 18th AnnualSymposium on, pages 46–57. IEEE, 1977.

T. Scheffel and M. S. et al.Lamaconv—logics and automata converter library.http://www.isp.uni-luebeck.de/lamaconv.

Page 64: Leveraging DTrace for runtime verification · 10 2 10 1 100 101 102 0.003 0.067 0.602 0.353 0.414 1.096 8.011 72.363 0.003 0.057 0.398 3.176 30.718 onds Iterations Monitor overhead1

References IV

D. Straughan.Brendan Gregg speaking at ZFS Day, Oct 2, 2012, San Francisco.,2012.(Own work) [CC BY-SA 3.0], via Wikimedia Commons.