First Steps to Automated Driver Verification via Model Checking

Size: px
Start display at page:

Download "First Steps to Automated Driver Verification via Model Checking"

Transcription

1 WDS'06 Proceedings of Contributed Papers, Part I, , ISBN MATFYZPRESS First Steps to Automated Driver Verification via Model Checking T. Matoušek Charles University Prague, Faculty of Mathematics and Physics, Prague, Czech Republic. Abstract. The paper summarizes the current state of our work addressing the verification of Windows kernel drivers via model checking technique. Our goal is to implement a tool that extracts verification models using driver source code and specifications of the kernel environment written in DeSpec language, which we introduced previously. The DeSpec language enables specifying the kernel environment as well as the rules imposed on drivers. The DeSpec Model Extractor tool builds a Zing model capturing those parts of the driver and kernel behavior related to a selected subset of the specification rules. Processing the resulting model in the Zing model checker could reveal the errors in the driver that are commonly difficult to discover via traditional methods of software testing due to the concurrency and complexity of the Windows kernel. Introduction Model Checking The model checking technique [2] is a formal verification method based on thorough examination of a model that emulates the software unit with respect to a verified property. This model should ideally retain those parts of the software that influence the property so that the verification is sound and complete with respect to the property. On the other hand, the model should be much simpler than the original software because the time and space requirements of the verification process grow exponentially with respect to the number of operations, threads, and variables used in the program (the state explosion problem [19]). That is because the model checker explores all possible states of the model to check that the property is valid in each one of them. Verification of Windows Drivers Windows kernel drivers are relatively small libraries mainly written in C language and running in a privileged mode that enables them to work directly with hardware. This introduces a high risk of damaging the other parts of the kernel if the driver contains an error. Hence, the correctness of drivers is crucial for the operating system security and stability and so drivers are common subject of software verification. Microsoft itself has developed several tools that verify drivers correctness. These include the Driver Verifier [13], which tests the drivers at run-time by emulating critical conditions in tight cooperation with the kernel, PREfast [14], which statically analyses the driver s code searching for common erroneous code patterns, and finally Static Driver Verifier (SDV) [16] based on techniques of static analysis and model checking. Zing Modeling Language The target modeling language for our model extractor is the Zing language [18] [1], being developed by Microsoft Research group on the top of the Microsoft.NET Framework platform [11]. This language has been chosen due to a rich modeling functionality it provides and the state of its current development the preview implementation of the model checker is available and works quite well. However, most ideas behind our work are independent of the target model checker and can be applied on any modeling language that provides at least some basic level of abstractions like classes, methods, exceptions, non-deterministic choices, and threads. Another modeling language meeting these criteria should be the new version of Bandera Intermediate Representation (BIR) a modeling language of Bogor model checking framework [23]. Driver Environment Specification Language 146

2 In our previous work [9] [10], we have introduced a new object-oriented specification language primarily targeting Windows kernel driver environment called DeSpec. It allows writing formal specifications of the kernel API provided to drivers, modeling the kernel s behavior to the drivers, and capturing rules imposed on the drivers in a formal yet still comprehensible form. The language integrates the majority of Zing modeling language features and adds means for defining parameterized abstractions of the kernel functions and structures at varying levels of detail. It enables to map the C language constructs to object-oriented constructs of the Zing language. In this sense, the DeSpec language bridges the gap between the C source code and the Zing model. We have demonstrated [9] the expressiveness and suitability of the DeSpec language on a significant part of the Windows kernel API and many rules described in Driver Development Kit [15] as well as those verified by the Microsoft Static Driver Verifier tool. Driven by DeSpec specifications, the Model Extractor is supposed to generate a Zing model from the driver source codes and kernel header files. The essential part of the DeSpec project is therefore the Specification Repository whose task is to load specifications from DeSpec source files and provide them to the Model Extractor in a convenient form. Contribution In this paper, we summarize the current state of our work addressing the verification of Windows kernel drivers via model checking. The current implementation of the DeSpec Model Extractor is capable of extracting Zing models from C programs using our novel approach to modeling C pointers and arrays. In Section 4, we present this approach and show that it is feasible in practice. Section 2 introduces the Model Extractor s front-end the part of the Model Extractor responsible for transformation of C source codes to the inner representation used in the rest of the tool. Section 3 is summarizing slicing algorithms applied by the Model Extractor on the inner representation prior to the Zing model generation in order to reduce its size. Finally, Section 5 concludes and outlines our future work. Model Extractor Front-end An appropriate front-end that could parse and represent source code of the driver needs to be chosen. The major requirement on the front-end is a support for Microsoft extensions to C language including e.g. structured exception handling commonly used by Windows drivers. The Infrastructure for C Program Analysis and Transformation [20] [22] is a suitable front-end for the extractor as it is able to parse, merge, normalize, and transform C source codes and is capable of both Microsoft and GCC extensions. It converts the source codes to C Intermediate Language (CIL), which is basically a subset of C language replacing complicated constructs with simpler ones that are equivalent. CIL is much easier to analyze since it fairly reduces the number of possible cases the analyzer has to distinguish. For working with projects comprising of multiple source files, which is usually the case, the infrastructure provides the source code merging feature. It is able to merge multiple source codes into a single compilation unit and to remove superfluous type definitions. A single CIL abstract syntax tree then represents the entire program source code. Hence, the tools analyzing the code need not to care about multiple source files. The system is also extensible by custom modules that can operate on the internal CIL representation. A chain of modules can be executed enriching the AST with additional information or computing other structures like e.g. a control flow graph. The process of source code parsing, file merging, AST building, and execution of the extension modules is implemented by the tool called Cilly. The infrastructure is written mainly in OCaml programming language [5] and is currently available for Windows platform using the Cygwin environment. On.NET Framework platform, the majority of OCaml language is implemented by Microsoft Research s F# system [17]. Unfortunately, some of the OCaml language features used by the infrastructure are not currently supported by the F# so it is not possible to run it directly on.net Framework. That is why a workaround is needed. To overcome the platform difference, we have implemented a CIL dump module. It is a simple Cilly extension written in OCaml going through the entire CIL AST and dumping it into a text file. 147

3 The file is than consumed by the C# utility building the representation resembling the CIL AST in the managed environment of.net Framework. The dump module is placed at the and of the module chain allowing some useful transformations of the CIL AST that are already implemented in OCaml to be performed before dumping the AST. Their results could therefore be loaded by the C# representation builder. When the F# system will be capable of all features used by Cilly sometime in the future, the mediatory text file could be dropped and the dumper could build our representation directly from the Cilly s one. The DeSpec Model Extractor loads the driver s source code representation in 3 phases. Firstly, it runs the driver builder (i.e. build command) from Windows DDK, which is used by driver developers for building drivers. This utility is used to provide full compatibility with the current driver building process. However, some instrumentation to the builder is necessary to get the preprocessed source files instead of the driver binary. One more change is needed to get all the information required for the model extraction into the preprocessed source files. A presence of macros causes a problem when a function the kernel specification is referring to is actually a macro that either renames the function to an internal kernel name or even completely removes function calls and replaces them with the code. If the preprocessor expanded the macro before the CIL AST is build the information about the original function call would be lost. Therefore, such macros have to be removed from the set of preprocessor symbols and replaced with function stubs. The second phase builds CIL AST up by executing Cilly on preprocessed files and dumps it to the text file. In the final phase, the Model Extractor reads the text file and creates the internal C# representation. Slicing There are plenty of operations that need to be performed on the driver s code representation before the generation of the Zing model can take place. Program slicing is one of the most important prerequisites since the resulting model should contain as few code and variables as possible. Otherwise, the resulting model could be infeasible to model check due to its size. At the beginning of the extraction process, the user is expected to choose a set of rules to be verified from the Specification Repository. The Model Extractor should then slice out code and data that are irrelevant to the selected rules. The complexity of program slicing ranges from relatively simple algorithms for slicing sequential code without pointers up to the undecidable problems of slicing programs with unrestricted use of pointers. Slicing methods are covered extensively by [7] and by dozens of other research works. So far, we have implemented intraprocedural pointer-less slicing based on the Program Dependence Graph (PDG) data structure [3]. PDG captures both data and control dependencies among statements and expressions within a function body. Its control dependency sub-graph can be constructed using the Lengauer-Tarjan [8] algorithm and the data dependency sub-graph by the minimal fixed-point algorithm. The PDG can be further extended to the Interprocedural PDG (IPDG) or the threaded PDG (tpdg) for the purpose of interprocedural and concurrent slicing [7]. To extend slicing algorithms to the programs with pointers, some kind of points-to analysis [4] is necessary. Such an analysis discovers sets of aliases for chosen variables. When modeling the function pointers, we also need to discover a set of functions that could be possibly targeted by a specified function pointer variable. The points-to analysis can give us that information. Although it is not always possible to determine the points-to sets precisely, an approximation should be sufficient for the model extraction purpose. The goal of the analysis application is a reduction of the size of the model. Without the analysis, the extractor may conservatively assume that pointers can point to any data and create a larger model incorporating all the possibilities. It is however desirable to make the model as small as possible and hence find an acceptable trade-off between analysis preciseness (and complexity) and the model size. Extracting Zing Models from C Source Code 148

4 We propose a novel approach to the extraction of verification models from C source code and provide the implementation targeting the Zing model checker. Existing works either focus on Java-like languages (e. g. Bandera [23], Java Path Finder [20]), do not extract the model fully automatically (e.g. SPIN [5]) and/or are very limited on the constructs that can be used in the source code (e.g., SPIN does not support unbounded heap allocation, call stacks nor dynamic thread creation). The major issues of the C program model extraction stem from pointer and array operations. In our work [11], we distinguish four kinds of pointers depending on the kind of memory and the possible number of items they are pointing to. Although this differentiation leads to more complicated dereferencing operations, it minimizes the state space of the model. Due to the atomicity of the dereferencing operations, the complexity increase does not influence the resulting model size. Each pointer is represented by a pair <target, offset>, where target is a reference to the Zing object representing the value the pointer points to or the Zing array storing multiple values if the pointer points to (or can point to) a sequence of values. In the latter case, the offset is the index to the array. If the pointer target is allocated dynamically in the C language the target does not directly refer to the value the pointer points to. Instead, it refers to an instance of Memory class that represents the allocated memory and holds the value the pointer points to. We proved that our approach is feasible in practice by verifying correctness of the C implementation of a synchronized priority queue represented by a singly linked list. The C source code has around 110 lines and the entire generated Zing model about 900 lines. All tests were performed on 1.4GHz/1GB machine. Deliberately introduced race conditions to the implementation were discovered by the model extractor within a few seconds. The correct implementation running 3 producers each inserting 3 items to the queue passed the verification in about 30 minutes. We also observed that the number of threads has much greater impact than the number of items inserted to the queue, which is positive as the race conditions are usually revealed even for a small number of threads. Conclusion In our previous work, we have introduced a new specification language targeting Windows kernel environment called DeSpec. The language is designed to enable writing modular, readable, and wellarranged specifications of the Windows kernel driver environment as well as formally, yet still comprehensibly, capture the rules imposed on drivers by the kernel and documented in plain English in DDK. Consecutively we started to implement the Model Extractor tool, which should be eventually used for an extraction of a Zing model from the source codes of the driver, kernel header files, and the DeSpec specifications of the driver environment. The Model Extractor uses the CIL infrastructure for building an internal representation of the driver s source code and the DeSpec Specification Repository for managing the specifications. We have already implemented the front-end of the Repository that parses DeSpec files and builds appropriate representation in a form of abstract syntax tree. Further work will include implementation of the specification analyzer that would check the consistency of the specifications and perform the transformations that are required before they can be provided to the Model Extractor. To get information about the driver source code that is necessary for the model generation, we implement various C code static analyses. The results of these analyses also allow us to reduce the resulting model and so target the state explosion problem. So far, we have implemented Lengauer- Tarjan algorithm for building Program Dependency Graph and used this data structure for intraprocedural slicing without presence of procedure calls and pointers. We will enhance slicing capabilities of the extractor by interprocedural and concurrent slicing and points-to analysis in our future work. We also implement the component of the Model Extractor tool that automatically generates a Zing model from the source code of the program. We have proposed a novel approach to modeling various constructs of the C language that do not map to the Zing modeling language straightforwardly (i.e. pointers, arrays, etc.) and we have shown on several examples that the verification of the extracted model is feasible in practice. Our future work in this area will focus on improvements to the Model Extractor making the generated models more compact. 149

5 References [1] Andrews, T., Qadeer, S., Rajamani, S. K., Rehof, J., Xie, Y: Zing: A model checker for concurrent software, Technical report, Microsoft Research, [2] Clarke, E. M., Grumberg, O., Peled, D. A.: Model Checking, MIT Press, [3] Ferrante, J., Ottenstein, K. J., Warren, J. D.: The Program Dependence Graph and Its Use in Optimization, ACM Transactions on Programming Languages and Systems, Vol. 9, No. 3, July 1987, Pages [4] Hind, M.: Pointer analysis: Haven t we solved this problem yet? In 2001 ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE 01), [5] Holzmann, G. J.: The SPIN Model Checker: Primer and Reference Manual, Addison-Wesley Professional, [6] INRIA: The OCaml Language, [7] Krinke, J.: Advanced Slicing of Sequential and Concurrent Programs, PhD thesis, Fakultät Für Mathematik und Informatik, Universität Passau, [8] Lengauer, T., Tarjan, R.E.: A Fast Algorithm for Finding Dominators in a Flow Graph, ACM Transactions on Programming Languages and Systems, 1: , [9] Matousek, T.: Model of the Windows Driver Environment, Master Thesis at Department of Software Engineering, Charles University in Prague, [10] Matousek, T., Jezek, P.: DeSpec: Modeling the Windows Driver Environment [11] Matousek, T., Zavoral F.: Extracting Zing Models from C Source Code [12] Microsoft:.NET Framework, MSDN, [13] Microsoft: Driver Verifier, [14] Microsoft: PREfast, [15] Microsoft: Windows Driver Development Kit, WHDC, [16] Microsoft: Static Driver Verifier: Finding Driver Bugs at Compile-Time, WHDC, [17] Microsoft Research: F#, [18] Microsoft Research: Zing Model Checker, [19] McMillan, K. L.: Symbolic model checking an approach to the state explosion problem, PhD thesis, SCS, Carnegie Mellon University, [20] NASA Intelligent Systems Division: Java Path Finder, [21] Necula, G. C., McPeak, S., Rahul, S. P., Weimer, W.: CIL: Intermediate Language for Analysis and Transformation of C Programs, Proceedings of Conference on Compiler Construction, [22] Necula, G. C., McPeak, S., Weimer, W., Liblit B., Harren, M.: CIL: Infrastructure for C Program Analysis and Transformation, [23] Robby, Dwyer, M. B., Hatcliff, J.: Bogor: An Extensible and Highly Modular Software Model Checking Framework, SIGSOFT Software Engineering Notes 28, 5, ,

Specification and Generation of Environment for Model Checking of Software Components *

Specification and Generation of Environment for Model Checking of Software Components * Specification and Generation of Environment for Model Checking of Software Components * Pavel Parizek 1, Frantisek Plasil 1,2 1 Charles University, Faculty of Mathematics and Physics, Department of Software

More information

Bandera: Extracting Finite-state Models from Java Source Code

Bandera: Extracting Finite-state Models from Java Source Code Bandera: Extracting Finite-state Models from Java Source Code James C. Corbet Matthew B. Dwyer John Hatcliff Shawn Laubach Corina S. Păsăreanu Robby Hongjun Zheng Presenter: Henrik Kragh-Hansen October

More information

Specification and Generation of Environment for Model Checking of Software Components

Specification and Generation of Environment for Model Checking of Software Components Specification and Generation of Environment for Model Checking of Software Components Pavel Parizek a,1, Frantisek Plasil a,b,1 a Department of Software Engineering Charles University, Faculty of Mathematics

More information

Research on the Static Analysis Method of the Localization Embedded Platform Software Code Zhijie Gaoa, Ling Lu, Wen Jiao

Research on the Static Analysis Method of the Localization Embedded Platform Software Code Zhijie Gaoa, Ling Lu, Wen Jiao 6th International Conference on Information Engineering for Mechanics and Materials (ICIMM 2016) Research on the Static Analysis Method of the Localization Embedded Platform Software Code Zhijie Gaoa,

More information

Program Partitioning - A Framework for Combining Static and Dynamic Analysis

Program Partitioning - A Framework for Combining Static and Dynamic Analysis Program Partitioning - A Framework for Combining Static and Dynamic Analysis Pankaj Jalote, Vipindeep V, Taranbir Singh, Prateek Jain Department of Computer Science and Engineering Indian Institute of

More information

Advanced Slicing of Sequential and Concurrent Programs

Advanced Slicing of Sequential and Concurrent Programs Advanced Slicing of Sequential and Concurrent Programs Jens Krinke FernUniversität in Hagen, Germany JensKrinke@FernUni-Hagende Abstract Program slicing is a technique to identify statements that may influence

More information

Lecture 1: Model Checking. Edmund Clarke School of Computer Science Carnegie Mellon University

Lecture 1: Model Checking. Edmund Clarke School of Computer Science Carnegie Mellon University Lecture 1: Model Checking Edmund Clarke School of Computer Science Carnegie Mellon University 1 Cost of Software Errors June 2002 Software bugs, or errors, are so prevalent and so detrimental that they

More information

Barrier Slicing and Chopping

Barrier Slicing and Chopping Barrier Slicing and Chopping Jens Krinke Universität Passau Passau, Germany Abstract One of the critiques on program slicing is that slices presented to the user are hard to understand. This is partly

More information

F-Soft: Software Verification Platform

F-Soft: Software Verification Platform F-Soft: Software Verification Platform F. Ivančić, Z. Yang, M.K. Ganai, A. Gupta, I. Shlyakhter, and P. Ashar NEC Laboratories America, 4 Independence Way, Suite 200, Princeton, NJ 08540 fsoft@nec-labs.com

More information

Source Code Formal Verification. Riccardo Sisto, Politecnico di Torino

Source Code Formal Verification. Riccardo Sisto, Politecnico di Torino Source Code Formal Verification Riccardo Sisto, Politecnico di Torino Formal Verification: Not Just High-Level Models How to improve correctness up to the coding phase? Possible solutions: Automatic code

More information

Part II: Atomicity for Software Model Checking. Analysis of concurrent programs is difficult (1) Transaction. The theory of movers (Lipton 75)

Part II: Atomicity for Software Model Checking. Analysis of concurrent programs is difficult (1) Transaction. The theory of movers (Lipton 75) Part II: Atomicity for Software Model Checking Class Account { int balance; static int MIN = 0, MAX = 00; bool synchronized deposit(int n) { int t = balance + n; if (t > MAX) return false; bool synchronized

More information

Computer aided verification

Computer aided verification Computer aided verification lecture 10 Model-checking success stories Sławomir Lasota University of Warsaw 1 LITERATURE G. J. Holzman, Mars Code. Commun. ACM 57(2):64-73, 2014. D.L. Detlefs, C.H. Flood,

More information

Introduction In Practice State Explosion Problem Infinity and Uncomputability Techniques References. Model Checking. Toryn Qwyllyn Klassen

Introduction In Practice State Explosion Problem Infinity and Uncomputability Techniques References. Model Checking. Toryn Qwyllyn Klassen Model Checking Toryn Qwyllyn Klassen April 13, 2010 Limitations of testing Testing cannot in general prove that a program works. Some program states are usually not covered. Concurrent systems are particularly

More information

Model Checking DSL-Generated C Source Code

Model Checking DSL-Generated C Source Code Model Checking DSL-Generated C Source Code Martin Sulzmann and Axel Zechner Informatik Consulting Systems AG, Germany {martin.sulzmann,axel.zechner}@ics-ag.de Abstract. We report on the application of

More information

Symbolic Execution, Dynamic Analysis

Symbolic Execution, Dynamic Analysis Symbolic Execution, Dynamic Analysis http://d3s.mff.cuni.cz Pavel Parízek CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Symbolic execution Pavel Parízek Symbolic Execution, Dynamic Analysis

More information

Cover Page. The handle holds various files of this Leiden University dissertation

Cover Page. The handle   holds various files of this Leiden University dissertation Cover Page The handle http://hdl.handle.net/1887/22891 holds various files of this Leiden University dissertation Author: Gouw, Stijn de Title: Combining monitoring with run-time assertion checking Issue

More information

Bisection Debugging. 1 Introduction. Thomas Gross. Carnegie Mellon University. Preliminary version

Bisection Debugging. 1 Introduction. Thomas Gross. Carnegie Mellon University. Preliminary version Bisection Debugging Thomas Gross School of Computer Science Carnegie Mellon University Pittsburgh, PA 15213 Institut für Computer Systeme ETH Zürich CH 8092 Zürich Preliminary version Abstract This paper

More information

Analyzing Conversations of Web Services

Analyzing Conversations of Web Services Analyzing Conversations of Web Services Tevfik Bultan 1 Xiang Fu 2 Jianwen Su 1 1 Department of Computer Science, University of California, Santa Barbara Santa Barbara, CA 91306, USA. {bultan, su}@cs.ucsb.edu.

More information

dsoli: Data Structure Operation Location and Identification

dsoli: Data Structure Operation Location and Identification dsoli: Data Structure Operation Location and Identification David H. White Software Technologies Group University of Bamberg, Germany david.white@swt-bamberg.de ABSTRACT Comprehension of C programs can

More information

1 PROCESSES PROCESS CONCEPT The Process Process State Process Control Block 5

1 PROCESSES PROCESS CONCEPT The Process Process State Process Control Block 5 Process Management A process can be thought of as a program in execution. A process will need certain resources such as CPU time, memory, files, and I/O devices to accomplish its task. These resources

More information

Data Structure. IBPS SO (IT- Officer) Exam 2017

Data Structure. IBPS SO (IT- Officer) Exam 2017 Data Structure IBPS SO (IT- Officer) Exam 2017 Data Structure: In computer science, a data structure is a way of storing and organizing data in a computer s memory so that it can be used efficiently. Data

More information

BINTEST Binary Search-based Test Case Generation

BINTEST Binary Search-based Test Case Generation BINTEST Binary Search-based Test Case Generation Sami Beydeda, Volker Gruhn University of Leipzig Department of Computer Science Chair of Applied Telematics / e-business Klostergasse 3 04109 Leipzig, Germany

More information

Impact of Dependency Graph in Software Testing

Impact of Dependency Graph in Software Testing Impact of Dependency Graph in Software Testing Pardeep Kaur 1, Er. Rupinder Singh 2 1 Computer Science Department, Chandigarh University, Gharuan, Punjab 2 Assistant Professor, Computer Science Department,

More information

Verification of Windows NT kernel drivers using Zing model checker. Tomáš Matoušek.

Verification of Windows NT kernel drivers using Zing model checker. Tomáš Matoušek. Verification of Windows NT kernel drivers using Zing model checker http://tm.matfyz.cz CHARLES UNIVERSITY IN PRAGUE Faculty of Mathematics and Physics Outline Zing Model Checking System Example: Dinning

More information

Formal Verification of Synchronization Issues in SpecC Description with Automatic Abstraction

Formal Verification of Synchronization Issues in SpecC Description with Automatic Abstraction Formal Verification of Synchronization Issues in SpecC Description with Automatic Abstraction Thanyapat Sakunkonchak and Masahiro Fujita Department of Electronic Engineering, University of Tokyo 7-3-1

More information

Annales UMCS Informatica AI 2 (2004) UMCS. An algorithm and case study for the object oriented abstraction.

Annales UMCS Informatica AI 2 (2004) UMCS. An algorithm and case study for the object oriented abstraction. Annales Informatica AI 2 (2004) 115-124 Annales Informatica Lublin-Polonia Sectio AI http://www.annales.umcs.lublin.pl/ An algorithm and case study for the object oriented abstraction Jakub Ratajczak Institute

More information

Automated Freedom from Interference Analysis for Automotive Software

Automated Freedom from Interference Analysis for Automotive Software Automated Freedom from Interference Analysis for Automotive Software Florian Leitner-Fischer ZF TRW 78315 Radolfzell, Germany Email: florian.leitner-fischer@zf.com Stefan Leue Chair for Software and Systems

More information

Extracting the Range of cps from Affine Typing

Extracting the Range of cps from Affine Typing Extracting the Range of cps from Affine Typing Extended Abstract Josh Berdine, Peter W. O Hearn Queen Mary, University of London {berdine, ohearn}@dcs.qmul.ac.uk Hayo Thielecke The University of Birmingham

More information

Ufo: A Framework for Abstraction- and Interpolation-Based Software Verification

Ufo: A Framework for Abstraction- and Interpolation-Based Software Verification Ufo: A Framework for Abstraction- and Interpolation-Based Software Verification Aws Albarghouthi 1, Yi Li 1, Arie Gurfinkel 2, and Marsha Chechik 1 1 Department of Computer Science, University of Toronto,

More information

MODELLING COMPOSITIONS OF MODULAR EMBEDDED SOFTWARE PRODUCT LINES

MODELLING COMPOSITIONS OF MODULAR EMBEDDED SOFTWARE PRODUCT LINES MODELLING COMPOSITIONS OF MODULAR EMBEDDED SOFTWARE PRODUCT LINES Wolfgang Friess AUDI AG wolfgang.friess@audi.de Julio Sincero University Erlangen-Nuernberg sincero@informatik.uni-erlangen.de Wolfgang

More information

Equivalence Checking of C Programs by Locally Performing Symbolic Simulation on Dependence Graphs

Equivalence Checking of C Programs by Locally Performing Symbolic Simulation on Dependence Graphs Equivalence Checking of C Programs by Locally Performing Symbolic Simulation on Dependence Graphs Takeshi Matsumoto, Hiroshi Saito, and Masahiro Fujita Dept. of Electronics Engineering, University of Tokyo

More information

Model Checking: Back and Forth Between Hardware and Software

Model Checking: Back and Forth Between Hardware and Software Model Checking: Back and Forth Between Hardware and Software Edmund Clarke 1, Anubhav Gupta 1, Himanshu Jain 1, and Helmut Veith 2 1 School of Computer Science, Carnegie Mellon University {emc, anubhav,

More information

Implementation of Process Networks in Java

Implementation of Process Networks in Java Implementation of Process Networks in Java Richard S, Stevens 1, Marlene Wan, Peggy Laramie, Thomas M. Parks, Edward A. Lee DRAFT: 10 July 1997 Abstract A process network, as described by G. Kahn, is a

More information

Hierarchical Pointer Analysis for Distributed Programs

Hierarchical Pointer Analysis for Distributed Programs Hierarchical Pointer Analysis for Distributed Programs Amir Kamil Computer Science Division, University of California, Berkeley kamil@cs.berkeley.edu April 14, 2006 1 Introduction Many distributed, parallel

More information

Zjednodušení zdrojového kódu pomocí grafové struktury

Zjednodušení zdrojového kódu pomocí grafové struktury Zjednodušení zdrojového kódu pomocí grafové struktury Ing. Tomáš Bublík 1. Introduction Nowadays, there is lot of programming languages. These languages differ in syntax, usage, and processing. Keep in

More information

Bogor An extensible and highly-modular model checking framework

Bogor An extensible and highly-modular model checking framework Bogor An extensible and highly-modular model checking framework SAnToS Laboratory, Kansas State University, USA http://bogor.projects.cis.ksu.edu Principal Investigators Matt Dwyer John Hatcliff Students

More information

Policy-Based Context-Management for Mobile Solutions

Policy-Based Context-Management for Mobile Solutions Policy-Based Context-Management for Mobile Solutions Caroline Funk 1,Björn Schiemann 2 1 Ludwig-Maximilians-Universität München Oettingenstraße 67, 80538 München caroline.funk@nm.ifi.lmu.de 2 Siemens AG,

More information

Lock-sensitive Interference Analysis for Java: Combining Program Dependence Graphs with Dynamic Pushdown Networks

Lock-sensitive Interference Analysis for Java: Combining Program Dependence Graphs with Dynamic Pushdown Networks Lock-sensitive Interference Analysis for Java: Combining Program Dependence Graphs with Dynamic Pushdown Networks Jürgen Graf 1, Martin Hecker 1, Martin Mohr 1, and Benedikt Nordhoff 2 1 Karlsruhe Institute

More information

Supporting Model Checking Education using BOGOR/Eclipse

Supporting Model Checking Education using BOGOR/Eclipse Supporting Model Checking Education using BOGOR/Eclipse Matthew B. Dwyer John Hatcliff Robby Matthew Hoosier Department of CSE Department of CIS University of Nebraska-Lincoln, US Kansas State University,

More information

Sendmail crackaddr - Static Analysis strikes back

Sendmail crackaddr - Static Analysis strikes back Sendmail crackaddr - Static Analysis strikes back Bogdan Mihaila Technical University of Munich, Germany December 6, 2014 Name Lastname < name@mail.org > ()()()()()()()()()... ()()() 1 / 25 Abstract Interpretation

More information

Joint Entity Resolution

Joint Entity Resolution Joint Entity Resolution Steven Euijong Whang, Hector Garcia-Molina Computer Science Department, Stanford University 353 Serra Mall, Stanford, CA 94305, USA {swhang, hector}@cs.stanford.edu No Institute

More information

Regression Verification - a practical way to verify programs

Regression Verification - a practical way to verify programs Regression Verification - a practical way to verify programs Ofer Strichman Benny Godlin Technion, Haifa, Israel. Email: ofers@ie.technion.ac.il bgodlin@cs.technion.ac.il 1 Introduction When considering

More information

Student Project: System Dependency Graphs in Earendil

Student Project: System Dependency Graphs in Earendil University of Illinois at Chicago - Politecnico di Milano CS Master Program CS569 - High Performance Processors and Systems course Student Project: System Dependency Graphs in Earendil June 22, 2004 student:

More information

Automatic Generation of Graph Models for Model Checking

Automatic Generation of Graph Models for Model Checking Automatic Generation of Graph Models for Model Checking E.J. Smulders University of Twente edwin.smulders@gmail.com ABSTRACT There exist many methods to prove the correctness of applications and verify

More information

IMPACT OF DEPENDENCY GRAPH IN SOFTWARE TESTING

IMPACT OF DEPENDENCY GRAPH IN SOFTWARE TESTING IMPACT OF DEPENDENCY GRAPH IN SOFTWARE TESTING Pardeep kaur 1 and Er. Rupinder Singh 2 1 Research Scholar, Dept. of Computer Science and Engineering, Chandigarh University, Gharuan, India (Email: Pardeepdharni664@gmail.com)

More information

Modeling Interactions of Web Software

Modeling Interactions of Web Software Modeling Interactions of Web Software Tevfik Bultan Department of Computer Science University of California Santa Barbara, CA 9106 bultan@cs.ucsb.edu Abstract Modeling interactions among software components

More information

Distributed Systems Programming (F21DS1) Formal Verification

Distributed Systems Programming (F21DS1) Formal Verification Distributed Systems Programming (F21DS1) Formal Verification Andrew Ireland Department of Computer Science School of Mathematical and Computer Sciences Heriot-Watt University Edinburgh Overview Focus on

More information

Static Slicing of Threaded Programs

Static Slicing of Threaded Programs Static Slicing of Threaded Programs Jens Krinke krinke@ips.cs.tu-bs.de TU Braunschweig Abteilung Softwaretechnologie Abstract Static program slicing is an established method for analyzing sequential programs,

More information

Context-Switch-Directed Verification in DIVINE

Context-Switch-Directed Verification in DIVINE Context-Switch-Directed Verification in DIVINE Vladimír Štill, Petr Ročkai, and Jiří Barnat Faculty of Informatics, Masaryk University Brno, Czech Republic {xstill,xrockai,barnat}@fi.muni.cz Abstract.

More information

CHAPTER 1 INTRODUCTION

CHAPTER 1 INTRODUCTION CHAPTER 1 INTRODUCTION Rapid advances in integrated circuit technology have made it possible to fabricate digital circuits with large number of devices on a single chip. The advantages of integrated circuits

More information

Runtime Checking for Program Verification Systems

Runtime Checking for Program Verification Systems Runtime Checking for Program Verification Systems Karen Zee, Viktor Kuncak, and Martin Rinard MIT CSAIL Tuesday, March 13, 2007 Workshop on Runtime Verification 1 Background Jahob program verification

More information

Computing Approximate Happens-Before Order with Static and Dynamic Analysis

Computing Approximate Happens-Before Order with Static and Dynamic Analysis Department of Distributed and Dependable Systems Technical report no. D3S-TR-2013-06 May 7, 2018 Computing Approximate Happens-Before Order with Static and Dynamic Analysis Pavel Parízek, Pavel Jančík

More information

Algorithms in Systems Engineering IE172. Midterm Review. Dr. Ted Ralphs

Algorithms in Systems Engineering IE172. Midterm Review. Dr. Ted Ralphs Algorithms in Systems Engineering IE172 Midterm Review Dr. Ted Ralphs IE172 Midterm Review 1 Textbook Sections Covered on Midterm Chapters 1-5 IE172 Review: Algorithms and Programming 2 Introduction to

More information

Platform-Specific Restrictions on Concurrency in Model Checking of Java Programs

Platform-Specific Restrictions on Concurrency in Model Checking of Java Programs Platform-Specific Restrictions on Concurrency in Model Checking of Java Programs Pavel Parizek and Tomas Kalibera Distributed Systems Research Group, Department of Software Engineering, Faculty of Mathematics

More information

Extension of GCC with a fully manageable reverse engineering front end

Extension of GCC with a fully manageable reverse engineering front end Proceedings of the 7 th International Conference on Applied Informatics Eger, Hungary, January 28 31, 2007. Vol. 1. pp. 147 154. Extension of GCC with a fully manageable reverse engineering front end Csaba

More information

2 Introduction to Processes

2 Introduction to Processes 2 Introduction to Processes Required readings: Silberschatz/Galvin: Chapter 4 With many things happening at once in a system, need some clean way of separating them all out cleanly. sequential process,

More information

Chapter 1. Preliminaries

Chapter 1. Preliminaries Chapter 1 Preliminaries Chapter 1 Topics Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories Language

More information

Program Sifting: Select Property-related Functions for Language-based Static Analysis

Program Sifting: Select Property-related Functions for Language-based Static Analysis 2009 16th Asia-Pacific Software Engineering Conference Program Sifting: Select Property-related Functions for Language-based Static Analysis YU Kai,WANG Cong,CHEN Yin-li and LIN Meng-xiang State Key Laboratory

More information

TraceBack: First Fault Diagnosis by Reconstruction of Distributed Control Flow

TraceBack: First Fault Diagnosis by Reconstruction of Distributed Control Flow TraceBack: First Fault Diagnosis by Reconstruction of Distributed Control Flow Andrew Ayers Chris Metcalf Junghwan Rhee Richard Schooler VERITAS Emmett Witchel Microsoft Anant Agarwal UT Austin MIT Software

More information

Performance Cockpit: An Extensible GUI Platform for Performance Tools

Performance Cockpit: An Extensible GUI Platform for Performance Tools Performance Cockpit: An Extensible GUI Platform for Performance Tools Tianchao Li and Michael Gerndt Institut für Informatik, Technische Universität München, Boltzmannstr. 3, D-85748 Garching bei Mu nchen,

More information

Duet: Static Analysis for Unbounded Parallelism

Duet: Static Analysis for Unbounded Parallelism Duet: Static Analysis for Unbounded Parallelism Azadeh Farzan and Zachary Kincaid University of Toronto Abstract. Duet is a static analysis tool for concurrent programs in which the number of executing

More information

Addressing Verification Bottlenecks of Fully Synthesized Processor Cores using Equivalence Checkers

Addressing Verification Bottlenecks of Fully Synthesized Processor Cores using Equivalence Checkers Addressing Verification Bottlenecks of Fully Synthesized Processor Cores using Equivalence Checkers Subash Chandar G (g-chandar1@ti.com), Vaideeswaran S (vaidee@ti.com) DSP Design, Texas Instruments India

More information

Interprocess Communication By: Kaushik Vaghani

Interprocess Communication By: Kaushik Vaghani Interprocess Communication By: Kaushik Vaghani Background Race Condition: A situation where several processes access and manipulate the same data concurrently and the outcome of execution depends on the

More information

TypeChef: Towards Correct Variability Analysis of Unpreprocessed C Code for Software Product Lines

TypeChef: Towards Correct Variability Analysis of Unpreprocessed C Code for Software Product Lines TypeChef: Towards Correct Variability Analysis of Unpreprocessed C Code for Software Product Lines Paolo G. Giarrusso 04 March 2011 Software product lines (SPLs) Feature selection SPL = 1 software project

More information

Interprocedural Variable Liveness Analysis for Function Signature Recovery

Interprocedural Variable Liveness Analysis for Function Signature Recovery Interprocedural Variable Liveness Analysis for Function Signature Recovery MIGUEL ARAUJO AND AHMED BOUGACHA {maraujo@cs, ahmed.bougacha@sv}.cmu.edu Carnegie Mellon University April 30, 2014 Final Project

More information

An Incremental Heap Canonicalization Algorithm

An Incremental Heap Canonicalization Algorithm An Incremental Heap Canonicalization Algorithm Madanlal Musuvathi 1 and David L. Dill 2 1 Microsoft Research, Redmond, madanm@microsoft.com 2 Computer Systems Laboratory, Stanford University, dill@cs.stanford.edu

More information

Program Slicing in the Presence of Pointers (Extended Abstract)

Program Slicing in the Presence of Pointers (Extended Abstract) Program Slicing in the Presence of Pointers (Extended Abstract) James R. Lyle National Institute of Standards and Technology jimmy@swe.ncsl.nist.gov David Binkley Loyola College in Maryland National Institute

More information

Constructing Control Flow Graph for Java by Decoupling Exception Flow from Normal Flow

Constructing Control Flow Graph for Java by Decoupling Exception Flow from Normal Flow Constructing Control Flow Graph for Java by Decoupling Exception Flow from Normal Flow Jang-Wu Jo 1 and Byeong-Mo Chang 2 1 Department of Computer Engineering Pusan University of Foreign Studies Pusan

More information

Operating System. Operating System Overview. Structure of a Computer System. Structure of a Computer System. Structure of a Computer System

Operating System. Operating System Overview. Structure of a Computer System. Structure of a Computer System. Structure of a Computer System Overview Chapter 1.5 1.9 A program that controls execution of applications The resource manager An interface between applications and hardware The extended machine 1 2 Structure of a Computer System Structure

More information

Formal Verification of Control Software: A Case Study

Formal Verification of Control Software: A Case Study Formal Verification of Control Software: A Case Study Andreas Griesmayer 1, Roderick Bloem 1, Martin Hautzendorfer 2, and Franz Wotawa 1 1 Graz University of Technology, Austria {agriesma,rbloem,fwotawa}@ist.tu-graz.ac.at

More information

Meta generation of syntax oriented editors

Meta generation of syntax oriented editors Computer Science Journal of Moldova, vol.3, no.1(7), 1995 Meta generation of syntax oriented editors N.Shvets K.Chebotar Abstract A method for automatic generation of syntax-oriented editors (SOE) for

More information

Single-pass Static Semantic Check for Efficient Translation in YAPL

Single-pass Static Semantic Check for Efficient Translation in YAPL Single-pass Static Semantic Check for Efficient Translation in YAPL Zafiris Karaiskos, Panajotis Katsaros and Constantine Lazos Department of Informatics, Aristotle University Thessaloniki, 54124, Greece

More information

Requirements Modelling and Software Systems Implementation Using Formal Languages

Requirements Modelling and Software Systems Implementation Using Formal Languages Requirements Modelling and Software Systems Implementation Using Formal Languages Radek Kočí Brno University of Technology, Faculty of Information Technology Czech Republic koci@fit.vutbr.cz ICSEA 2018,

More information

SCHOOL: a Small Chorded Object-Oriented Language

SCHOOL: a Small Chorded Object-Oriented Language SCHOOL: a Small Chorded Object-Oriented Language S. Drossopoulou, A. Petrounias, A. Buckley, S. Eisenbach { s.drossopoulou, a.petrounias, a.buckley, s.eisenbach } @ imperial.ac.uk Department of Computing,

More information

OCL Support in MOF Repositories

OCL Support in MOF Repositories OCL Support in MOF Repositories Joachim Hoessler, Michael Soden Department of Computer Science Technical University Berlin hoessler@cs.tu-berlin.de, soden@cs.tu-berlin.de Abstract From metamodels that

More information

Hi. My name is Jasper. Together with Richard we thought of some ways that could make a parallel approach to sequential flowsheeting attractive.

Hi. My name is Jasper. Together with Richard we thought of some ways that could make a parallel approach to sequential flowsheeting attractive. Hi. My name is Jasper. Together with Richard we thought of some ways that could make a parallel approach to sequential flowsheeting attractive. Although it only partially related to CAPE-OPEN, this is

More information

What do Compilers Produce?

What do Compilers Produce? What do Compilers Produce? Pure Machine Code Compilers may generate code for a particular machine, not assuming any operating system or library routines. This is pure code because it includes nothing beyond

More information

Software Model Checking. From Programs to Kripke Structures

Software Model Checking. From Programs to Kripke Structures Software Model Checking (in (in C or or Java) Java) Model Model Extraction 1: int x = 2; int y = 2; 2: while (y

More information

Checking System Rules Using System-Specific, Programmer- Written Compiler Extensions

Checking System Rules Using System-Specific, Programmer- Written Compiler Extensions Motivation for using Checking System Rules Using System-Specific, Programmer- Written Compiler Extensions Dawson Engler Benjamin Chelf Andy Chou Seth Hallem 1 Computer Systems Laboratory Stanford University

More information

Control Flow Analysis with SAT Solvers

Control Flow Analysis with SAT Solvers Control Flow Analysis with SAT Solvers Steven Lyde, Matthew Might University of Utah, Salt Lake City, Utah, USA Abstract. Control flow analyses statically determine the control flow of programs. This is

More information

Control-Flow Analysis

Control-Flow Analysis Control-Flow Analysis Dragon book [Ch. 8, Section 8.4; Ch. 9, Section 9.6] Compilers: Principles, Techniques, and Tools, 2 nd ed. by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jerey D. Ullman on reserve

More information

Java PathFinder JPF 2 Second Generation of Java Model Checker

Java PathFinder JPF 2 Second Generation of Java Model Checker Java PathFinder JPF 2 Second Generation of Java Model Checker Guenther Brand Mat. Nr. 9430535 27. 06. 2003 Abstract This essay is based on the papers Java PathFinder, Second Generation of Java Model Checker

More information

Formats of Translated Programs

Formats of Translated Programs Formats of Translated Programs Compilers differ in the format of the target code they generate. Target formats may be categorized as assembly language, relocatable binary, or memory-image. Assembly Language

More information

Coping with Conflicts in an Optimistically Replicated File System

Coping with Conflicts in an Optimistically Replicated File System Coping with Conflicts in an Optimistically Replicated File System Puneet Kumar School of Computer Science Carnegie Mellon University 1. Introduction Coda is a scalable distributed Unix file system that

More information

Introduction to Operating Systems Prof. Chester Rebeiro Department of Computer Science and Engineering Indian Institute of Technology, Madras

Introduction to Operating Systems Prof. Chester Rebeiro Department of Computer Science and Engineering Indian Institute of Technology, Madras Introduction to Operating Systems Prof. Chester Rebeiro Department of Computer Science and Engineering Indian Institute of Technology, Madras Week - 01 Lecture - 03 From Programs to Processes Hello. In

More information

Scenario Graphs Applied to Security (Summary Paper)

Scenario Graphs Applied to Security (Summary Paper) Book Title Book Editors IOS Press, 2003 1 Scenario Graphs Applied to Security (Summary Paper) Jeannette M. Wing Computer Science Department Carnegie Mellon University Pittsburgh, PA 15213 US Abstract.

More information

Source Code Analysis and Slicing for Program Comprehension

Source Code Analysis and Slicing for Program Comprehension University of Szeged Doctoral School in Mathematics and Computer Science Ph. D. Program in Informatics Source Code Analysis and Slicing for Program Comprehension Summary of the PhD Thesis by Árpád Beszédes

More information

TVLA: A SYSTEM FOR GENERATING ABSTRACT INTERPRETERS*

TVLA: A SYSTEM FOR GENERATING ABSTRACT INTERPRETERS* TVLA: A SYSTEM FOR GENERATING ABSTRACT INTERPRETERS* Tal Lev-Ami, Roman Manevich, and Mooly Sagiv Tel Aviv University {tla@trivnet.com, {rumster,msagiv}@post.tau.ac.il} Abstract TVLA (Three-Valued-Logic

More information

IUT Job Cracker Design and Implementation of a Dynamic Job Scheduler for Distributed Computation

IUT Job Cracker Design and Implementation of a Dynamic Job Scheduler for Distributed Computation IUT Job Cracker Design and Implementation of a Dynamic Job Scheduler for Distributed Computation *Fahim Kawsar, **Md. Shahriar Saikat, ***Shariful Hasan Shaikot Department of Computer Science *Islamic

More information

INF672 Protocol Safety and Verification. Karthik Bhargavan Xavier Rival Thomas Clausen

INF672 Protocol Safety and Verification. Karthik Bhargavan Xavier Rival Thomas Clausen INF672 Protocol Safety and Verication Karthik Bhargavan Xavier Rival Thomas Clausen 1 Course Outline Lecture 1 [Today, Sep 15] Introduction, Motivating Examples Lectures 2-4 [Sep 22,29, Oct 6] Network

More information

Question 1. Notes on the Exam. Today. Comp 104: Operating Systems Concepts 11/05/2015. Revision Lectures

Question 1. Notes on the Exam. Today. Comp 104: Operating Systems Concepts 11/05/2015. Revision Lectures Comp 104: Operating Systems Concepts Revision Lectures Today Here are a sample of questions that could appear in the exam Please LET ME KNOW if there are particular subjects you want to know about??? 1

More information

Checking Memory Safety with Blast

Checking Memory Safety with Blast Checking Memory Safety with Blast Dirk Beyer 1 Thomas A. Henzinger 12 Ranjit Jhala 3 Rupak Majumdar 4 1 EPFL, Switzerland 2 University of California, Berkeley 3 University of California, San Diego 4 University

More information

An Eclipse Plug-in for Model Checking

An Eclipse Plug-in for Model Checking An Eclipse Plug-in for Model Checking Dirk Beyer, Thomas A. Henzinger, Ranjit Jhala Electrical Engineering and Computer Sciences University of California, Berkeley, USA Rupak Majumdar Computer Science

More information

Transforming Data from into DataPile RDF Structure into RDF

Transforming Data from into DataPile RDF Structure into RDF Transforming Data from DataPile Structure Transforming Data from into DataPile RDF Structure into RDF Jiří Jiří Dokulil Charles Faculty of University, Mathematics Faculty and Physics, of Mathematics Charles

More information

How much is a mechanized proof worth, certification-wise?

How much is a mechanized proof worth, certification-wise? How much is a mechanized proof worth, certification-wise? Xavier Leroy Inria Paris-Rocquencourt PiP 2014: Principles in Practice In this talk... Some feedback from the aircraft industry concerning the

More information

Technical aspects of VTL to SQL translation Prepared by Regional Statistical Office in Olsztyn, Poland

Technical aspects of VTL to SQL translation Prepared by Regional Statistical Office in Olsztyn, Poland Working Paper. UNITED NATIONS ECONOMIC COMMISSION FOR EUROPE CONFERENCE OF EUROPEAN STATISTICIANS Work Session on Statistical Data Editing (The Hague, Netherlands, 24-26 April 2017) I. Introduction A.

More information

Influence of Word Normalization on Text Classification

Influence of Word Normalization on Text Classification Influence of Word Normalization on Text Classification Michal Toman a, Roman Tesar a and Karel Jezek a a University of West Bohemia, Faculty of Applied Sciences, Plzen, Czech Republic In this paper we

More information

CSolve: Verifying C With Liquid Types

CSolve: Verifying C With Liquid Types CSolve: Verifying C With Liquid Types Patrick Rondon, Alexander Bakst, Ming Kawaguchi, and Ranjit Jhala University of California, San Diego {prondon, abakst, mwookawa, jhala@cs.ucsd.edu Abstract. We present

More information

Core Expressions: An Intermediate Representation for Expressions in C

Core Expressions: An Intermediate Representation for Expressions in C Core Expressions: An Intermediate Representation for Expressions in C Maksim Orlovich and Radu Rugina Computer Science Department Cornell University Ithaca, NY 14853 Abstract. The paper presents a simple

More information

Using Architectural Models at Runtime: Research Challenges

Using Architectural Models at Runtime: Research Challenges Proceedings of the European Workshop on Software Architectures, St. Andrews, Scotland, May 2004. Using Architectural Models at Runtime: Research Challenges David Garlan and Bradley Schmerl Department of

More information