rithm: a tool for enabling time-triggered runtime verification...

6
RiTHM: A Tool for Enabling Time-triggered Runtime Verification for C Programs * Samaneh Navabpour, Yogi Joshi, Wallace Wu, Shay Berkovich, Ramy Medhat, Borzoo Bonakdarpour, and Sebastian Fischmeister University of Waterloo 200 University Ave West Waterloo, ON,N2L 3G1, Canada {snavabpo, y2joshi, cwwwu, sberkovi, rmedhat, sfischme}@uwaterloo.ca [email protected] ABSTRACT We introduce the tool RiTHM (Runtime Time-triggered Het- erogeneous Monitoring). RiTHM takes a C program under inspection and a set of LTL properties as input and generates an instrumented C program that is verified at run time by a time-triggered monitor. RiTHM provides two techniques based on static analysis and control theory to minimize in- strumentation of the input C program and monitoring in- tervention. The monitor’s verification decision procedure is sound and complete and exploits the GPU many-core tech- nology to speedup and encapsulate monitoring tasks. Categories and Subject Descriptors D.2.5 [Software Engineering]: Testing and Debugging— Monitors ; D.4.7 [Operating Systems]: Organization and Design—Real-time and embedded systems General Terms Algorithms, Performance, Verification Keywords Embedded systems, Overhead predictability and contain- ment, Real-time systems, Runtime monitoring. 1. INTRODUCTION Runtime verification (RV) is a complementary approach to exhaustive verification and testing, where a monitor in- spects the program’s execution at run time to evaluate a set of correctness properties. Most approaches in the liter- ature are event-triggered RV (ETRV), where the monitor is invoked with each occurrence of events that can change the * This is an extended version of the paper appeared in FSE’13. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. ESEC/FSE ’13, August 18-26, 2013, Saint Petersburg, Russia Copyright 2013 ACM 978-1-4503-2237-9/13/08 ...$15.00. valuation of a property. Such techniques exhibit nonuniform and unpredictable monitoring overhead, which can cause un- desirable program behavior and, hence, catastrophic con- sequences in real-time systems. To overcome this defect, in [4], we introduced the notion of time-triggered runtime verification (TTRV), where the monitor stops the program execution within time periods, polls the state of the pro- gram, evaluates properties, and resumes the program’s nor- mal execution. A time-triggered monitor (TTM) ensures predictable and evenly distributed monitoring overhead and invocations throughout the program run. Such monitoring can control resource usage and predictability of the monitor invocations which are among the indicators of the quality of a monitoring solution, especially in the context of real-time systems. The main challenge in implementing TTRV is that if val- uation of a property changes more than once between two monitoring points, a TTM may overlook a property viola- tion. To deal with this issue, we have introduced several techniques, such as (1) employing history variables for the case where the TTM is an external thread [3, 9], (2) inlin- ing TTM’s monitoring instructions in the program code [5] (called self-monitoring), (3) path prediction using symbolic execution [8], and control-theoretic monitoring [7]. Despite the long history of runtime monitoring, we know of no tools that enable runtime monitoring of real-time sys- tems. In this paper, we introduce the tool RiTHM (Runtime Time-triggered Heterogeneous Monitoring) that realizes a subset of the aforementioned techniques for TTRV. RiTHM takes a C program under inspection and a set of LTL prop- erties as input and generates an instrumented C program that is verified at run time by a TTM. The current imple- mentation of RiTHM supports two TTM and instrumenta- tion techniques: (1) TTM with optimized fixed polling pe- riod using static analysis, and (2) TTM with least variation in dynamic polling period using PID and fuzzy controllers. TTM’s verification decision procedure for 3-valued seman- tics of LTL [1] is sound and complete [4], and takes advan- tage of the GPU many-core technology to speedup monitor- ing and isolating the monitoring tasks [2]. The tool has been used in several real-world case studies such as the Apache web server, a UAV autopilot software, and a laserbeam stabilizer for eye surgery. 2. TOOL OVERVIEW Figure 1 shows modules and detailed data flow of RiTHM. 1

Upload: others

Post on 08-Jul-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: RiTHM: A Tool for Enabling Time-triggered Runtime Verification …web.cs.iastate.edu/~borzoo/Publications/13/FSE/FSE13.pdf · Critical Vertex Non-critical Vertex 1 (c) Critical CFG

RiTHM: A Tool for Enabling Time-triggered RuntimeVerification for C Programs∗

Samaneh Navabpour, Yogi Joshi, Wallace Wu, Shay Berkovich, Ramy Medhat,Borzoo Bonakdarpour, and Sebastian Fischmeister

University of Waterloo200 University Ave West

Waterloo, ON,N2L 3G1, Canada{snavabpo, y2joshi, cwwwu, sberkovi, rmedhat, sfischme}@uwaterloo.ca

[email protected]

ABSTRACTWe introduce the tool RiTHM (Runtime Time-triggered Het-erogeneous Monitoring). RiTHM takes a C program underinspection and a set of LTL properties as input and generatesan instrumented C program that is verified at run time bya time-triggered monitor. RiTHM provides two techniquesbased on static analysis and control theory to minimize in-strumentation of the input C program and monitoring in-tervention. The monitor’s verification decision procedure issound and complete and exploits the GPU many-core tech-nology to speedup and encapsulate monitoring tasks.

Categories and Subject DescriptorsD.2.5 [Software Engineering]: Testing and Debugging—Monitors; D.4.7 [Operating Systems]: Organization andDesign—Real-time and embedded systems

General TermsAlgorithms, Performance, Verification

KeywordsEmbedded systems, Overhead predictability and contain-ment, Real-time systems, Runtime monitoring.

1. INTRODUCTIONRuntime verification (RV) is a complementary approach

to exhaustive verification and testing, where a monitor in-spects the program’s execution at run time to evaluate aset of correctness properties. Most approaches in the liter-ature are event-triggered RV (ETRV), where the monitor isinvoked with each occurrence of events that can change the

∗This is an extended version of the paper appeared inFSE’13.

Permission to make digital or hard copies of all or part of this work forpersonal or classroom use is granted without fee provided that copies arenot made or distributed for profit or commercial advantage and that copiesbear this notice and the full citation on the first page. To copy otherwise, torepublish, to post on servers or to redistribute to lists, requires prior specificpermission and/or a fee.ESEC/FSE ’13, August 18-26, 2013, Saint Petersburg, RussiaCopyright 2013 ACM 978-1-4503-2237-9/13/08 ...$15.00.

valuation of a property. Such techniques exhibit nonuniformand unpredictable monitoring overhead, which can cause un-desirable program behavior and, hence, catastrophic con-sequences in real-time systems. To overcome this defect,in [4], we introduced the notion of time-triggered runtimeverification (TTRV), where the monitor stops the programexecution within time periods, polls the state of the pro-gram, evaluates properties, and resumes the program’s nor-mal execution. A time-triggered monitor (TTM) ensurespredictable and evenly distributed monitoring overhead andinvocations throughout the program run. Such monitoringcan control resource usage and predictability of the monitorinvocations which are among the indicators of the quality ofa monitoring solution, especially in the context of real-timesystems.

The main challenge in implementing TTRV is that if val-uation of a property changes more than once between twomonitoring points, a TTM may overlook a property viola-tion. To deal with this issue, we have introduced severaltechniques, such as (1) employing history variables for thecase where the TTM is an external thread [3, 9], (2) inlin-ing TTM’s monitoring instructions in the program code [5](called self-monitoring), (3) path prediction using symbolicexecution [8], and control-theoretic monitoring [7].

Despite the long history of runtime monitoring, we knowof no tools that enable runtime monitoring of real-time sys-tems. In this paper, we introduce the tool RiTHM (RuntimeTime-triggered Heterogeneous Monitoring) that realizes asubset of the aforementioned techniques for TTRV. RiTHMtakes a C program under inspection and a set of LTL prop-erties as input and generates an instrumented C programthat is verified at run time by a TTM. The current imple-mentation of RiTHM supports two TTM and instrumenta-tion techniques: (1) TTM with optimized fixed polling pe-riod using static analysis, and (2) TTM with least variationin dynamic polling period using PID and fuzzy controllers.TTM’s verification decision procedure for 3-valued seman-tics of LTL [1] is sound and complete [4], and takes advan-tage of the GPU many-core technology to speedup monitor-ing and isolating the monitoring tasks [2]. The tool has beenused in several real-world case studies such as the Apache webserver, a UAV autopilot software, and a laserbeam stabilizerfor eye surgery.

2. TOOL OVERVIEWFigure 1 shows modules and detailed data flow of RiTHM.

1

Page 2: RiTHM: A Tool for Enabling Time-triggered Runtime Verification …web.cs.iastate.edu/~borzoo/Publications/13/FSE/FSE13.pdf · Critical Vertex Non-critical Vertex 1 (c) Critical CFG

Instrumented

(TTM with Dynamic

C Program

Period)Polling

PeriodPolling

CFG

Instruction Lines

SetInstruction

Generator 1

Generator 2

Instrumented

C Program

Period)Polling

(TTM with FixedMonitor

Thread Code

Min/Max

Type

MemoryConstraints

Controller

C Program

LTLProperties

PeriodPolling

ProgramC

for LTL3 Monitors

CFGBuilder

2

3

8

Tree Genertor

Abstract Syntax

12

CodeController

Instrumentor 19

AST

Instrumentor 210

Instrumented

C Program

LTL3 MonitorGenerator

Kernel Code for GPU/Multi−core

Glue Code

Glue Code

11

13

1 4 6Critical Solver

Greedy heuristic

VC heuristic

Identifier

CriticalInstructionGlobalizer

Variables

Critical

Builder

5

CFG

ILP

Generator

LLVM

LLVM

lp_solve 7

LLVM Clang

LLVM Clang

OpenCL Library

Generator

Controller

Timer Observer

High Resolution

Figure 1: Building blocks and data flow in RiTHM.

(a) Configuration of TTM with fixedpolling period

(b) Controller-based TTM configurationfor dynamic polling period

(c) Real-time resource utilization plot

Figure 2: Selected RiTHM screen shots.

The tool takes a C program and a set of LTL propertiesas input and generates an instrumented C program as out-put. The specification language for expressing properties isthe 3-valued LTL designed particularly for runtime verifica-tion [1]. Each given LTL property is specified in terms ofvariables of the input C program. For instance, G(x >= 10

and foo_y = z) is one such property, where x and z are twoglobal variables and y is local to function foo. Evaluationof Ltl properties at run time is handled by a GPU-basedverification engine (module 3). If a machine is not equippedwith the GPU, the verification is automatically shipped to amulti-core CPU. Custom code can be included in the mon-itor thread of the tool. For example, one can customizethe verification engine to verify only a subset of properties.

The verification engine is invoked by the TTM thread thatRiTHM generates using Unix high resolution timers (module7 in Figure 1). The monitor stops the C program’s execu-tion with a fixed/dynamic polling period, reads the programstate, sends the extracted data to the verification engine,and resumes the program thread. The monitor evaluatesproperties in parallel with the program execution.

Module 1 (in Figure 1) is Globalizer (implemented overLLVM Clang [6]) that takes the C program and Ltl proper-ties as input and generates a C program, where all the vari-ables participating in the Ltl properties are changed intoglobal variables. Globalizer generates the list of the glob-alized variables and passes it to Ltl3 Monitor Generator(module 3) and Critical Instruction Identifier (module 4)

2

Page 3: RiTHM: A Tool for Enabling Time-triggered Runtime Verification …web.cs.iastate.edu/~borzoo/Publications/13/FSE/FSE13.pdf · Critical Vertex Non-critical Vertex 1 (c) Critical CFG

1. fib(int n) {! 2.! int i, Fnew, Fold, temp,ans;! 3.! Fnew = 1; Fold = 0;! 4.! i = 2;! 5.! while( i <= n ) {! 6.! ! ! !temp = Fnew;! 7.*! ! ! !Fnew = Fnew + Fold;! 8.*! ! ! !Fold = temp;! 9.! ! !i++; }! 10.* ! ans = Fnew;! 11.! ! return ans;}!

(a) Fibonacci function in C

D 5

C 6..9

B 10-11

1 1 4

A 2..4

4

(b) CFG

C1 6

1 1

A 2..4

4

D 5

C2 7

1

C3 8

C4 9

1

1

B1 10

B2 11

1

Critical Vertex

Non-critical Vertex

1

(c) Critical CFG

Figure 3: Example of a program and CFG.

that identifies and annotates the set of the C program’s in-structions which may change the valuation of the propertiesat run time. From this point RiTHM gives two options forgenerating a TTM, as described in Subsections 2.1 and 2.2.

2.1 Instrumentation for TTM with FixedPolling Period

Figure 2(a) shows the screen shot of configuring RiTHMto generate this type of TTM. Globalizer sends the modifiedC program to CFG Builder (module 2) that generates thecontrol-flow graph (CFG) of the program. This module isimplemented over LLVM. Figure 3(b) shows the CFG of theprogram in Figure 3(a) (Fibonacci function). The weight ofeach arc is the best-case execution time of the instructionsin the originating vertex. For simplicity, in this example, weassume that each instruction takes one time unit.

Next, RiTHM constructs a critical CFG, where each crit-ical instruction resides in one and only one vertex (module5). Figure 3(c) shows the critical CFG of Figure 3(a), wherevariables Fnew, Fold, and ans appear in (some) associatedLtl properties. Notice that in order to ensure soundness,the polling period should be not be greater than the short-est time between the execution time of two critical instruc-tions (called the longest polling period, LPP). If the inputpolling period is greater than LPP, then some critical in-structions must be instrumented, so that their results aretemporarily stored in a history buffer until the monitor’snext poll. In terms of a CFG, instrumenting a critical in-struction involves deleting its corresponding vertex in thecritical CFG and merging outgoing and incoming arcs ofthe vertex by summing up their pairwise weights. We re-quire that the number of instrumentations is minimum andhave shown that the corresponding optimization problem isNP-complete [4].

RiTHM uses the following approaches to solve the opti-mization problem (module 6): (1) integer linear program-ming (ILP) [4], (2) a greedy heuristic [9], and (3) a heuristicbased on finding the minimum vertex cover [9]. The outputof either technique is a set of instructions in the C pro-gram that need to be instrumented. For the program inFigure 3(a), to apply a polling period of 2 time units, theILP solution for the critical CFG in Figure 3(c) instrumentsvertices C2 (Line 7) and B1 (Line 10). The lines of codecorresponding to these instructions are located using theabstract syntax tree generator (module 8) of LLVM Clang,and instrumented by Instrumentor 1 (module 9). Finally,Glue Code Generator 1 (module 13) augments the instru-mented code with function calls to the verification enginefor verifying properties at run time.

2.2 Instrumentation for TTM with DynamicPolling Period

Since in reactive systems, environment events play an im-portant role in determining the polling period, techniquesbased on static analysis are not expected to be effective.To deal with reactive systems, RiTHM can also generateTTMs augmented with PID and fuzzy controllers (module12) that can dynamically change the polling period based onthe environment behavior. Specifically, given the range of al-lowed polling periods and constraints on the static/dynamichistory buffer size, the controllers target minimizing varia-tions in adjustments to the dynamic polling period as wellas maximizing history buffer utilization. Figure 2(b) showsthe screen shot for configuring controller-based TTMs. In-strumentation and controller-based TTMs generation areachieved through modules 10 and 11, respectively. RiTHMprovides a real-time plot of the current polling period andthe utilization of the available buffer as seen in Figure 2(c).

3. SELECTED EXPERIMENTSFigure 4(a) [4] shows that the absolute overhead incurred

by a TTM (with and without history) is bounded and uni-form and, hence, predictable, as opposed to an ETM. TheETM is implemented by a function that is invoked by eachevent that has to be monitored. Notice that the choice ofETM is irrelevant. Figure 4(b) shows that the executiontime of different programs in the MiBench benchmark suitemonitored by TTRV without using history, is larger than theexecution time of the program monitored by ETRV. Thisexcessive overhead is due to the fact that a TTM gets in-voked more often than an ETM. However, by extending thepolling period (e.g., by a factor of 100), TTRV performsbetter than ETRV in all programs. Figure 4(c) shows theexecution time and memory usage of the program blowfish

when instrumented by ILP and the other RiTHM instru-mentation heuristics for the polling period of 40 × LPP .

Figure 4(d) shows the coefficient of variation (CV) ofpolling period and memory utilization (in terms of the num-ber of empty locations in the history buffer, where positive isexcessive dynamic allocation and negative denotes an underutilized buffer) for the Apache web server using a controller-based TTM. As can be seen, the monitor that is controlledby two fuzzy controllers for stabilizing the polling periodand buffer size (i.e., BSC+PPC:F2) shows a significantlylow CV and well-utilized history buffer. The data set of thisexperiment is from the 1998 FIFA World Cup web server.

Figure 5(a) shows that our GPU-based algorithms for ver-

3

Page 4: RiTHM: A Tool for Enabling Time-triggered Runtime Verification …web.cs.iastate.edu/~borzoo/Publications/13/FSE/FSE13.pdf · Critical Vertex Non-critical Vertex 1 (c) Critical CFG

ifying Ltl3 properties are clearly scalable with respect to thenumber of cores. The error bars represent a 95% confidenceinterval. This graph also shows that the mean through-put increases with the number of cores engaged in monitor-ing. At some point, the parallel verification algorithms reachthe optimum, where all the cores are utilized. Figure 5(b)shows that the CPU utilization of the autopilot process ofan unmanned aerial vehicle (UAV) application monitoredusing our GPU-based algorithms is almost identical to theCPU utilization of the unmonitored process. Notice that thesame program monitored by a CPU-based monitor is almost100% utilized. This result holds when the CPU frequencyis reduced to half of the normal frequency. An interestingside-effect of this result is that GPU-based monitoring isconsiderably more power-efficient.

4. AVAILABILITYRiTHM is an open source tool. To access the tool, re-

lated publications, screencasts, more detailed experimentalresults, user guide, and other resources, please visithttp://uwaterloo.ca/embedded-software-group/projects/rithm.

5. SUMMARYIn this paper, we introduced the tool RiTHM that aug-

ments C programs with monitors that ensure time predictabil-ity and optimal memory utilization for sound and completeverification of LTL properties at run time. This type ofmonitoring is especially useful in the context of real-timesystems. RiTHM applies two methods: (1) fixed monitorpolling using static code analysis, and (2) dynamic pollingusing controllers that response to environment actions.RiTHM has been tested using large software applicationssuch as the Apache web server, a UAV autopilot, and a laser-beam stabilizer for eye surgery.

In future releases, RiTHM will include our optimizationtechniques using symbolic execution, inlined monitors, com-bined static and dynamic analysis methods, optimizationson GPU-based verification, and tool portability features.

6. ACKNOWLEDGEMENTSThis research was supported in part by NSERC Discovery

Grant 418396-2012, NSERC Strategic Grant 430575-2012,NSERC DG 357121-2008, ORF-RE03-045, ORF-RE04-036,ORF-RE04-039, CFI 20314, CMC, and the industrial part-ners associated with these projects.

7. REFERENCES[1] A. Bauer, M. Leucker, and C. Schallhart. Runtime

Verification for LTL and TLTL. ACM Transactions onSoftware Engineering and Methodology (TOSEM),20(4):14, 2011.

[2] S. Berkovich, B. Bonakdarpour, and S. Fischmeister.GPU-based runtime verification. In IEEE InternationalParallel and Distributed Processing Symposium(IPDPS), 2013. To appear.

[3] B. Bonakdarpour, S. Navabpour, and S. Fischmeister.Sampling-based runtime verification. In FormalMethods (FM), pages 88–102, 2011.

[4] B. Bonakdarpour, S. Navabpour, and S. Fischmeister.Time-triggered runtime verification. Formal Methods inSystem Design (FMSD), 2013. To appear.

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5

Ove

rhea

d (M

Sec)

Execution Time (Sec)TTRV with no history

event-triggered RVTTRV with 50xLPP

TTRV with 100xLPP

(a) TTRV of blowfish.

0 50

100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 950

1000

bs crc fft1 fibcallinsersort

qsort-exam

qurtsqrt

Exec

utio

n Ti

me

[10n

s]

EventLPP

50xLPP100xLPP

(b) TTRV of SNU programs.

0

1

2

3

4

5

6

7

No history (LPP)

ILP (LPPx40)

Greedy Heu. (LPPx40)

VC Heu. (LPPx40)

10

12

14

16

18

20

22

24

26

Exec

utio

n Ti

me

[Sec

]

Virtu

al M

emor

y U

sage

[MB]

Polling Type

ExecutionMemory

(c) Memory vs. execution time.

-10

-5

0

5

10

15

20

25

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

BTM PPC:F1 BSC+PPC:F1 PPC:F2 BSC+PPC:F2

E̅ B

CV

CV: Static Buff Size 20 CV: Static Buff Size 40EB: Static Buff Size 20 EB: Static Buff Size 40

(d) Controller-based TTM.

Figure 4: Selected experiments.

[5] B. Bonakdarpour, J. J. Thomas, and S. Fischmeister.Time-triggered program self-monitoring. In IEEEInternational Conference on Embedded and Real-TimeComputing Systems and Applications (RTCSA), pages260–269, 2012.

[6] C. Lattner and V. Adve. LLVM: A compilationframework for lifelong program analysis andtransformation. In International Symposium on CodeGeneration and Optimization: Feedback Directed and

4

Page 5: RiTHM: A Tool for Enabling Time-triggered Runtime Verification …web.cs.iastate.edu/~borzoo/Publications/13/FSE/FSE13.pdf · Critical Vertex Non-critical Vertex 1 (c) Critical CFG

0.1

0.2

0.3

●●●●●●●●●●●●

●●

●●

●●

●●

●●

●●

●●

●●

Alg 1, 10 properties

Alg 1, 1 property

Alg 2, 10 properties

Alg 2, 1 property

0 5000 10000 15000

Number of work items

Mea

n th

roug

hput

[GB

/s]

(a) Scalability.

LIDAR, 1.6 GHz DVS LIDAR, 800 MHz

40

50

60

70

80

90

100

●●●

●●

●●

●●

●●●

●●●●

●●●●

●●

●●

●●

●●

●●

●●●

●●

●●

●●●●●

●●●

●●

●●

●●●● ●

● ●●●●●●●●●●●●

Base

CP

U

GP

U (A

lg 1)

GP

U (A

lg 2)

Base

GP

U (A

lg 1)

GP

U (A

lg 2)

Sys

tem

util

izat

ion

[%]

(b) CPU utilization.

Figure 5: Selected GPU-based verification experi-ments.

Runtime Optimization, page 75, 2004.

[7] R. Medhat, D. Kumar, B. Bonakdarpour, andS. Fischmeister. Runtime verification with controllabletime predictability and memory utilization. TechnicalReport CS-2013-02, University of Waterloo, 2013.

[8] S. Navabpour, B. Bonakdarpour, and S. Fischmeister.Path-aware time-triggered runtime verification. InRuntime Verification (RV), pages 199–213, 2012.

[9] S. Navabpour, C. W. Wu, B. Bonakdarpour, andS. Fischmeister. Efficient techniques for near-optimalinstrumentation in time-triggered runtime verification.In Runtime Verification (RV), pages 208–222, 2011.

APPENDIXA. THE DEMO

The demo illustrates RiTHM by designing, enabling mon-itoring, and executing a simple Fibonacci example for fixedpolling period, and dynamic polling period. The demo con-sists of four parts: (1) application design, (2) development ofLtl properties, (3) applying RiTHM to synthesize monitorsand instrument programs, and (4) demonstrating RiTHM’sfeatures on collecting statistics about satisfaction/violation

of properties, trace logs, and timing behavior of monitors.If time permits, we will also show a highlight of applyingRiTHM on a more sophisticate example such as Apache.

A.1 Application DesignWe will develop the Fibonacci function as illustrated in

Figure 6 as a C program with a given input value n. Thedemo will analyze the corresponding CFG (see Figure 3(b)).

A.2 Specification DevelopmentWe will demonstrate monitoring three properties (see

Figure 7):

• The first property property0 states that the loop countereventually reaches a value greater than 10.

• The second property property1 states that it is alwaysthe case that the loop counter i is less than or equal ton.

• The third property property2 intends to monitor that anelement in the output Fibonacci series is strictly greaterthan the previous element.

A.3 Instrumentation PhaseThe RiTHM configuration screenshot is shown in Fig-

ure 2(a). Running RiTHM results in the log shown Figure 8.This window also shows possible errors and warnings. Forinstance, an error could be using a variable in a propertythat is never declared. A warning may be issued in case ofusing unresolved pointers or aliases. The RiTHM user guidedescribes all the limitations (mostly due to LLVM capabili-ties) in detail.

After running the tool, the instrumented program is theone shown in Figure 9. As can be seen, the instrumentationadds the value of the variables of interest based on the givenpolling period such that no properly valuation is overlooked.It can also be seen that Globalizer has prefixed variablesby the name of the function that declares the variables ofinterest (i.e., function main).

A.4 Running the Instrumented Applicationand Observing Online Statistics

RiTHM provides detailed report on the valuation of LTLproperties and maintains a trace log that enables the userto trace back the value of variables that participate in LTLproperties. This is achieved by the help of the name of thesource C file and the line number of the instruction thatchanges the value of the variable. Figures 10 and 11 showthe property and trace log of the case study. RiTHM reportsthat property0 has been satisfied, but property1 and property2

are violated. The trace log illustrates the reason. Property1

is violated because when the loop terminates the value of i

is 31 while the value of n is 30. Property2 is violated becausethe values of Fnew and Fold are zero in the initial state of theprogram. We note that generating the trace log is optionaland it does not necessarily impose overhead.

When dynamic polling is used, RiTHM provides a real-time plot of the current polling period and the utilization ofthe available buffer as seen in Figure 2(c).

5

Page 6: RiTHM: A Tool for Enabling Time-triggered Runtime Verification …web.cs.iastate.edu/~borzoo/Publications/13/FSE/FSE13.pdf · Critical Vertex Non-critical Vertex 1 (c) Critical CFG

Figure 6: Input C program (Fibonacci function)

Figure 7: LTL Properties

Figure 8: Instrumentation log

Figure 9: Instrumented code

Figure 10: Property valuations report

Figure 11: Trace log

6