Linux for Safety Critical Applications: Hunting down bug patterns

Size: px
Start display at page:

Download "Linux for Safety Critical Applications: Hunting down bug patterns"

Transcription

1 Linux for Safety Critical Applications: Hunting down bug patterns

2 GNU/Linux for Safety Open-Source procedures and decisions Availability of technology and know-how Built on standards and well defined open interfaces Long-term availability HW support Security and secure interoperability (already certified to EAL4+) The use of GNU/Linux is not really driven by cost issues, there are technical reasons to consider it even more than any potential cost issues. 2

3 SIL2LinuxMP Claim: Risk of the GNU/Linux Kernel/OS inducing a hazard is acceptable. Assumption: Applications are developed according to IEC under consideration of Safety Application Conditions (SAC). Goal: Certify one version of the Linux Kernel for the use in safety critical applications Build a framework of methods and procedures that allows future certification of other (future) versions of Linux. 3

4 A Typical Safety Work flow 4

5 Covering System Safety SIL2LinuxMP is generic how to do this? Solution Turn it around Define what can be done (select a functional subset e.g. PSE51) Define what SIL can be achieved for the set of functions Constrain the usage SACs Non-interference , Annex F Working on generic solutions sometimes mandates introduction of constraints - if these need to be lifted for a specific project partial re-run of safety life cycle needed! 5

6 Misconceptions about Safety Not a checklist approach. It s a set of objectives - how you reach them is more or less your problem. Provides a systematic safety lifecycle (IEC ); Exceptions from this lifecycle if justified (IEC , 4.2 and ) 6

7 Generic Software Layer Kernel latest stable / well defined configuration(s) Selected minimum subset of drivers (based on use-cases of full partners) Core libraries guided by standards (e.g. POSIX supporting threaded RT-applications) Minimum runtime environment (e.g. Busybox based rootfs) (Application on top - not in scope) Well defined toolchain (build and validate) The goal is that the generic components of a GNU/Linux based safety related system can be qualified with low efforts. 7

8 Generic Software Layer 8

9 Procedure for SIL2LinuxMP Use-Cases per participating partner company based on the specific system: 1) Abstract use-case to function set 2) Perform system level hazard assessment Hazard List 3) Estimate risks (severity / probability) 4) Determine mitigation demands of components 5) Allocation of specific mitigation to system SW components and application layer (SACs) 6) Assess residual risk exhibited by SW/OS level failures 9

10 Non-compliant Development Coding Standards Specified tool-chain Defined submission procedures Well defined transition criteria (staging next mainline) Assigned responsibilities (Maintainers) Continuous peer-review from concept to code The DLC of the Linux kernel is maybe one of the most Stringent development cycles currently in use for such a large project. 10

11 Linux DLC Overview 11

12 Documentation/SubmitChecklist 5: Check your patch for general style as detailed in Documentation/CodingStyle. Check for trivial violations with the patch style checker prior to submission (scripts/checkpatch.pl). You should be able to justify all violations that remain in your patch. 9: Check cleanly with sparse. 15: All codepaths have been exercised with all lockdep features enabled. 22: Newly-added code has been compiled with `gcc -W' (use "make EXTRA_CFLAGS=-W"). This will generate lots of noise, but is good for finding bugs like "warning: comparison between signed and unsigned".??: Check cleanly with make coccicheck 12

13 sparse Catch the common problems that happen during development Build it into the default kernel (code annotations) Mandate its use (e.g. by linux-next building with sparse) Continuously update it when new pitfalls emerge 13

14 sparse Constraints Your functions MUST have types - no KR style default int! It does NOT cover all possible extensions to C - it does cover everything the kernel needs though (GNU and C99) If unsure - get on the mailinglist: linux-sparse, vger.kernel.org Integrate sparse into your build-env so that you use it continuously - if you wait until you are done - then it will take you out. 14

15 sparse What sparse can detect. Address_space mismatch (-Waddress-space) Type mismatches (-Wbitwise) Bad casting (-Wcast-truncate) Lock context (-Wcontext) Read man sparse for (a lot) more. 15

16 sparse Example: lock context checks context (expression, in_value, out_value) include/linux/compiler.h: acquires(x) attribute ((context(x,0,1))) releases(x) attribute ((context(x,1,0))) must_hold(x) attribute ((context(x,1,1))) 16

17 lockdep Lock Classes Lockdependency validator operates on lock classes Lock classes (i.e. inode class struct inode) Lock class same locking rules lockdep traces the state of a lock class Rolling profile of state and correctness of the dependencies 17

18 lockdep Lockclass States ever held in hardirq context ( == hardirq-safe ) ever held in softirq context ( == softirq-safe ) ever held with hardirqs enabled ( == hardirq-unsafe ) ever held with softirqs and hardirqs enabled ( == softirq-unsafe ) ever used ( ==!unused ) 18

19 lockdep state bits. +? acquired while irqs disabled acquired in irq context acquired with irqs enabled read acquired in irq context with irqs enabled. Unused locks cannot be the cause of an error 19

20 lockdep Single Lock Rules 1. The softirq-unsafe lock-class is automatically hardirq-unsafe as well. 2. The following states are mutually exclusive: <hardirq-safe> and <hardirq-unsafe> <softirq-safe> and <softirq-unsafe> 20

21 lockdep Multi-Lock Rules 1. The same lock-class may not be acquired twice if you must use the recursive lock versions and provide the nesting information. 2. Locking order matters that means if the locking order <L1> <L2> is used, then <L2> <L1> may never happen. Note that lockdep will fuss at any such ordering even if there is no temporal relation - lockdep can produce false positive (though not very often). 21

22 lockdep Example Code static int my_kthreadb(void *arg) { int i; static int my_kthreada(void *arg) { int i; for (i = 0; i < NUM_CYCLES; i++) { for (i = 0; i < NUM_CYCLES; i++) { mutex_lock(&counter_lockb); mutex_lock(&counter_locka); counter++; mutex_unlock(&counter_lockb); mutex_unlock(&counter_locka); mutex_lock(&counter_locka); mutex_lock(&counter_lockb); counter++; mutex_unlock(&counter_lockb); mutex_unlock(&counter_locka); } } return 0; return 0; } } 22

23 ] ] ] ] ] hello] ] ] ] hello] ] ] ] ] ] ] ] ] ] ] ] ] Institute ] of INFO: possible circular locking dependency detected ] lockdep #3 Tainted: G O my_kthread/4808 is trying to acquire lock: (&counter_locka){+.+...}, at: <ffffffffa091102c>] my_kthreadb+0x2c/0x6f but task is already holding lock: (&counter_lockb){+.+...}, at: <ffffffffa091101e>] my_kthreadb+0x1e/0x6f which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 (&counter_lockb){+.+...}: <ffffffff8107b976>] lock_acquire+0xda/0x123 <ffffffff >] mutex_lock_nested+0x5f/0x3b2 <ffffffffa091109b>] my_kthreada+0x2c/0x6f hello] <ffffffff8105cb8d>] kthread+0xba/0xc2 <ffffffff8140abec>] ret_from_fork+0x7c/0xb0 23 lockdep Example Output

24 lockdep Example Output ] -> #0 (&counter_locka){+.+...}: ] <ffffffff8107b11e>] lock_acquire+0xaf8/0xe ] <ffffffff8107b976>] lock_acquire+0xda/0x ] <ffffffff >] mutex_lock_nested+0x5f/0x3b ] <ffffffffa091102c>] my_kthreadb+0x2c/0x6f hello] ] <ffffffff8105cb8d>] kthread+0xba/0xc ] <ffffffff8140abec>] ret_from_fork+0x7c/0xb ] ] other info that might help us debug this: ] ] Possible unsafe locking scenario: ] ] CPU0 CPU ] ] lock(&counter_lockb); ] lock(&counter_locka); ] lock(&counter_lockb); ] lock(&counter_locka); ] ] *** DEADLOCK *** 24

25 ] 1 lock held by my_kthread/4808: ] #0: (&counter_lockb){+.+...}, at: <ffffffffa091101e>] my_kthreadb+0x1e/0x6f hello] ] ] stack backtrace: ] CPU: 1 PID: 4808 Comm: my_kthread Tainted: G O lockdep # ] Hardware name: Apple Inc. MacBookPro7,1/Mac-F222BEC8, BIOS MBP71.88Z.0039.B0B /01/ ] ffffffff81f1bad0 ffff880136c0bbf8 ffffffff813ffcd ] ffffffff81f1bad0 ffff880136c0bc48 ffffffff813fd2b ] ffff8800a05fa1d ffff8800a05fa ] Call Trace: ] <ffffffff813ffcd0>] dump_stack+0x4f/0x7c ] <ffffffff813fd2b1>] print_circular_bug+0x1f8/0x ] <ffffffff8107b11e>] lock_acquire+0xaf8/0xe ] <ffffffff8107b976>] lock_acquire+0xda/0x ] <ffffffffa091102c>]? my_kthreadb+0x2c/0x6f hello] ] <ffffffff8107bc8b>]? mark_held_locks+0x54/0x ] <ffffffff >] mutex_lock_nested+0x5f/0x3b2 25 lockdep Example Output

26 coccinelle SmPL abstracts away irrelevant parts One small semantic patch can affect hundreds of lines of code patches in the linux kernel are already produced by semantic patches (see kernel janitors mailing list for LOTS of examples) make coccicheck checks the kernel source against all semantic patches in scripts/coccinelle/ 26

27 coccinelle Applications Find and Fix Bugs finding code patterns systematically fix bugs Collateral Evolution - Evolution in a library API leads to changes in the client find interactions with the library systematically transform the interactions with the library More esoteric Applications: Finding Security Vulnerabilities Code Obfuscation 27

28 coccinelle Program matching and transformation for unpreprocessed C code. Fits with the existing habits of Systems (Linux) programmers. Semantic Patch Language (SmPL): Based on the syntax of patches, Declarative approach to transformation High level search that abstracts away from irrelevant details A single small semantic patch can modify hundreds of files, at thousands of code sites 28

29 coccinelle Basics coccinelle abstracts irrelevant parts away. Different spacing and indentation Variablenames Irrelevant Code (" ") Isomorphism e.g. if (!y) if (y == NULL) if (NULL == y) 29

30 coccinelle Basics Rules and Metavariable expression rulename is optional, but might be needed later metavariable expression E; could be any expression, e.g.: 1+2 sizeof(struct foobar) strlen(mystring) 30

31 coccinelle Basics Transformation Specifications - in the leftmost column to remove this line + in the leftmost column to add this line * in the leftmost column to mark something of interest (cannot be used with + and -) 31

32 coccinelle Collateral Evolutions In the library: int foo(int x, int y); int foo(int x); Hence, in the clients calls could look like this: foo(3, 5); z = foo(x, y); if (foo(3, my_y)) { foo(bar(42), y); foo(3); z = foo(x); if (foo(3)) { foo(bar(42)); Finding all those occurrences automatically, and fixing them is a lot of work and includes lots of potential for bugs. 32

33 coccinelle Collateral Evolutions expression Ex, Ey; foo(ex -,Ey ) 33

34 coccinelle Simple Example A simple Example: The!& expression -!E1 & E2 +!(E1 & E2) 34

35 #include depends on expression ( - (((n) + (d)) - 1) / (d)) + DIV_ROUND_UP(n,d) - (((n) + ((d) - 1)) / (d)) + DIV_ROUND_UP(n,d) ) Define multiple matching and transformation rules Express that applicability of a rule depends on the success or failure of another rule. 35 coccinelle Depends On

36 coccinelle Missing unlock // // // // A mutex_lock is not matched by a mutex_unlock before an error return. Confidence: Moderate Copyright: (C) Gilles Muller, Julia Lawall, EMN, INRIA, DIKU. GPLv2. URL: expression mutex_lock(l);... when!= mutex_unlock(l) when any when strict ( if (...) {... when!= mutex_unlock(l) + mutex_unlock(l); return...; } mutex_unlock(l); ) 36

37 Thanks! 37

LOCKDEP, AN INSIDE OUT PERSPECTIVE. Nahim El

LOCKDEP, AN INSIDE OUT PERSPECTIVE. Nahim El LOCKDEP, AN INSIDE OUT PERSPECTIVE Nahim El Atmani @brokenpi_pe P1 R1 R1 P2 THE BIG PICTURE The need for a proof mechanism PREVIOUSLY ON LINUX SMP Synchronization needed giant-lock (a.k.a big-lock, kernel-lock

More information

Coccinelle: A Program Matching and Transformation Tool for Systems Code

Coccinelle: A Program Matching and Transformation Tool for Systems Code Coccinelle: A Program Matching and Transformation Tool for Systems Code Gilles Muller Julia Lawall (INRIA/LIP6/IRILL) http://coccinelle.lip6.fr The problem: Dealing with Legacy Systems Code (Linux) It

More information

Coccinelle: Bug Finding for the Linux Community

Coccinelle: Bug Finding for the Linux Community Coccinelle: Bug Finding for the Linux Community Julia Lawall (INRIA) Gilles Muller (INRIA), René Rydhof Hansen (Aalborg), Nicolas Palix (Grenoble) January 6, 2012 Overview Goal: Improving the robustness

More information

SmPL: A Domain-Specic Language for Specifying Collateral Evolutions in Linux Device Drivers

SmPL: A Domain-Specic Language for Specifying Collateral Evolutions in Linux Device Drivers SmPL: A Domain-Specic Language for Specifying Collateral Evolutions in Linux Device Drivers Yoann Padioleau Ecole des Mines de Nantes Julia Lawall, DIKU, University of Copenhagen Gilles Muller, Ecole des

More information

Coccinelle: A Program Matching and Transformation Tool for Linux

Coccinelle: A Program Matching and Transformation Tool for Linux Coccinelle: A Program Matching and Transformation Tool for Linux Nicolas Palix (DIKU) joint work with Julia Lawall (DIKU), Gilles Muller (INRIA) Jesper Andersen, Julien Brunel, René Rydhof Hansen, and

More information

Introduction to Coccinelle

Introduction to Coccinelle Introduction to Coccinelle Julia Lawall (Inria/LIP6) http://coccinelle.lip6.fr September 17, 2014 Common programming problems Programmers don t really understand how C works.!e1 & e2 does a bit-and with

More information

Inside the Mind of a Coccinelle Programmer

Inside the Mind of a Coccinelle Programmer Inside the Mind of a Coccinelle Programmer Julia Lawall (Inria/LIP6) Linux Security Summit August 25, 2016 2 What is Coccinelle? Find once, fix everywhere. Approach: Coccinelle: http://coccinelle.lip6.fr/

More information

Kernel Synchronization I. Changwoo Min

Kernel Synchronization I. Changwoo Min 1 Kernel Synchronization I Changwoo Min 2 Summary of last lectures Tools: building, exploring, and debugging Linux kernel Core kernel infrastructure syscall, module, kernel data structures Process management

More information

Linux Kernel Evolution. OpenAFS. Marc Dionne Edinburgh

Linux Kernel Evolution. OpenAFS. Marc Dionne Edinburgh Linux Kernel Evolution vs OpenAFS Marc Dionne Edinburgh - 2012 The stage Linux is widely deployed as an OpenAFS client platform Many large OpenAFS sites rely heavily on Linux on both servers and clients

More information

C and C++ Secure Coding 4-day course. Syllabus

C and C++ Secure Coding 4-day course. Syllabus C and C++ Secure Coding 4-day course Syllabus C and C++ Secure Coding 4-Day Course Course description Secure Programming is the last line of defense against attacks targeted toward our systems. This course

More information

Processes and Threads

Processes and Threads COS 318: Operating Systems Processes and Threads Kai Li and Andy Bavier Computer Science Department Princeton University http://www.cs.princeton.edu/courses/archive/fall13/cos318 Today s Topics u Concurrency

More information

CS558 Programming Languages

CS558 Programming Languages CS558 Programming Languages Winter 2017 Lecture 4a Andrew Tolmach Portland State University 1994-2017 Semantics and Erroneous Programs Important part of language specification is distinguishing valid from

More information

ENCM 501 Winter 2019 Assignment 9

ENCM 501 Winter 2019 Assignment 9 page 1 of 6 ENCM 501 Winter 2019 Assignment 9 Steve Norman Department of Electrical & Computer Engineering University of Calgary April 2019 Assignment instructions and other documents for ENCM 501 can

More information

Operating Systems 2006/2007

Operating Systems 2006/2007 Operating Systems 2006/2007 Blocking and locking Johan Lukkien 1 Blocking & locking Blocking: waiting for a certain condition to become true Starvation: unpredictable, even infinite blocking times the

More information

Operating Systems, Assignment 2 Threads and Synchronization

Operating Systems, Assignment 2 Threads and Synchronization Operating Systems, Assignment 2 Threads and Synchronization Responsible TA's: Zohar and Matan Assignment overview The assignment consists of the following parts: 1) Kernel-level threads package 2) Synchronization

More information

Improving Linux development with better tools

Improving Linux development with better tools Improving Linux development with better tools Andi Kleen Oct 2013 Intel Corporation ak@linux.intel.com Linux complexity growing Source lines in Linux kernel All source code 16.5 16 15.5 M-LOC 15 14.5 14

More information

Concurrency, Thread. Dongkun Shin, SKKU

Concurrency, Thread. Dongkun Shin, SKKU Concurrency, Thread 1 Thread Classic view a single point of execution within a program a single PC where instructions are being fetched from and executed), Multi-threaded program Has more than one point

More information

Lecture 03 Bits, Bytes and Data Types

Lecture 03 Bits, Bytes and Data Types Lecture 03 Bits, Bytes and Data Types Computer Languages A computer language is a language that is used to communicate with a machine. Like all languages, computer languages have syntax (form) and semantics

More information

OpenMP and more Deadlock 2/16/18

OpenMP and more Deadlock 2/16/18 OpenMP and more Deadlock 2/16/18 Administrivia HW due Tuesday Cache simulator (direct-mapped and FIFO) Steps to using threads for parallelism Move code for thread into a function Create a struct to hold

More information

CS558 Programming Languages

CS558 Programming Languages CS558 Programming Languages Fall 2016 Lecture 3a Andrew Tolmach Portland State University 1994-2016 Formal Semantics Goal: rigorous and unambiguous definition in terms of a wellunderstood formalism (e.g.

More information

Finding Error Handling Bugs in OpenSSL using Coccinelle

Finding Error Handling Bugs in OpenSSL using Coccinelle 1 Finding Error Handling Bugs in OpenSSL using Coccinelle (Practical Experience Report) Julia Lawall (University of Copenhagen/INRIA-Regal) Ben Laurie (Google), René Rydhof Hansen (Aalborg University),

More information

Rebootless kernel updates

Rebootless kernel updates Rebootless kernel updates Jeff Arnold jbarnold@ksplice.com http://www.ksplice.com What is Ksplice? What is Ksplice? Running kernel with bug What is Ksplice? Running kernel with bug Ksplice Running kernel

More information

Operating Systems 2010/2011

Operating Systems 2010/2011 Operating Systems 2010/2011 Blocking and locking (with figures from Bic & Shaw) Johan Lukkien 1 Blocking & locking Blocking: waiting for a certain condition to become true Starvation: unpredictable, even

More information

Improving Linux Development with better tools. Andi Kleen. Oct 2013 Intel Corporation

Improving Linux Development with better tools. Andi Kleen. Oct 2013 Intel Corporation Improving Linux Development with better tools Andi Kleen Oct 2013 Intel Corporation ak@linux.intel.com Linux complexity growing Source lines in Linux kernel All source code 16.5 16 15.5 M-LOC 15 14.5 14

More information

Keeping Up With The Linux Kernel. Marc Dionne AFS and Kerberos Workshop Pittsburgh

Keeping Up With The Linux Kernel. Marc Dionne AFS and Kerberos Workshop Pittsburgh Keeping Up With The Linux Kernel Marc Dionne AFS and Kerberos Workshop Pittsburgh - 2015 The stage Linux is widely deployed as an AFS client platform OpenAFS client available in popular distributions Ubuntu,

More information

Bachelor s Thesis : Finding Bugs in Open Source Software using Coccinelle

Bachelor s Thesis : Finding Bugs in Open Source Software using Coccinelle Bachelor s Thesis : Finding Bugs in Open Source Software using Coccinelle Sune Rievers - sunerievers@stud.ku.dk Supervisor: Julia Lawall January 13, 2010 1 Contents 1 Abstract 4 2 Preface 5 3 Acknowledgments

More information

RCU in the Linux Kernel: One Decade Later

RCU in the Linux Kernel: One Decade Later RCU in the Linux Kernel: One Decade Later by: Paul E. Mckenney, Silas Boyd-Wickizer, Jonathan Walpole Slides by David Kennedy (and sources) RCU Usage in Linux During this same time period, the usage of

More information

Coccinelle: Practical Program Transformation for the Linux Kernel. Julia Lawall (Inria/LIP6) June 25, 2018

Coccinelle: Practical Program Transformation for the Linux Kernel. Julia Lawall (Inria/LIP6) June 25, 2018 Coccinelle: Practical Program Transformation for the Linux Kernel Julia Lawall (Inria/LIP6) June 25, 2018 1 Motivation Large, critical infrastructure-software code bases Linux kernel, OpenSSL, Qemu, Firefox,

More information

Chapter - 4. Deadlocks Important Questions

Chapter - 4. Deadlocks Important Questions Chapter - 4 Deadlocks Important Questions 1 1.What do you mean by Deadlocks? A process request for some resources. If the resources are not available at that time, the process enters a waiting state. The

More information

BUILDING FUNCTIONAL SAFETY PRODUCTS WITH WIND RIVER VXWORKS RTOS

BUILDING FUNCTIONAL SAFETY PRODUCTS WITH WIND RIVER VXWORKS RTOS BUILDING FUNCTIONAL SAFETY PRODUCTS WITH WIND RIVER VXWORKS RTOS Alex Wilson Director, Market Development 2017 WIND RIVER. ALL RIGHTS RESERVED. For over 30 years, Wind River has helped the world's technology

More information

Aalborg Universitet. Published in: Science of Computer Programming. DOI (link to publication from Publisher): /j.scico

Aalborg Universitet. Published in: Science of Computer Programming. DOI (link to publication from Publisher): /j.scico Downloaded from vbn.aau.dk on: marts 27, 2019 Aalborg Universitet Coccinelle Tool support for automated CERT C Secure Coding Standard certification Olesen, Mads Chr.; Hansen, Rene Rydhof; Lawall, Julia

More information

THREADS: (abstract CPUs)

THREADS: (abstract CPUs) CS 61 Scribe Notes (November 29, 2012) Mu, Nagler, Strominger TODAY: Threads, Synchronization - Pset 5! AT LONG LAST! Adversarial network pong handling dropped packets, server delays, overloads with connection

More information

System Administration and Network Security

System Administration and Network Security System Administration and Network Security Master SSCI, M2P subject Duration: up to 3 hours. All answers should be justified. Clear and concise answers will be rewarded. 1 Network Administration To keep

More information

Advanced Synchronization and Deadlock

Advanced Synchronization and Deadlock Advanced Synchronization and Deadlock A house of cards? Locks + CV/signal a great way to regulate access to a single shared object......but general multi-threaded programs touch multiple shared objects

More information

CSE 374 Programming Concepts & Tools

CSE 374 Programming Concepts & Tools CSE 374 Programming Concepts & Tools Hal Perkins Fall 2017 Lecture 8 C: Miscellanea Control, Declarations, Preprocessor, printf/scanf 1 The story so far The low-level execution model of a process (one

More information

CSci 4061 Introduction to Operating Systems. Programs in C/Unix

CSci 4061 Introduction to Operating Systems. Programs in C/Unix CSci 4061 Introduction to Operating Systems Programs in C/Unix Today Basic C programming Follow on to recitation Structure of a C program A C program consists of a collection of C functions, structs, arrays,

More information

Announcements. Working on requirements this week Work on design, implementation. Types. Lecture 17 CS 169. Outline. Java Types

Announcements. Working on requirements this week Work on design, implementation. Types. Lecture 17 CS 169. Outline. Java Types Announcements Types Working on requirements this week Work on design, implementation Lecture 17 CS 169 Prof. Brewer CS 169 Lecture 16 1 Prof. Brewer CS 169 Lecture 16 2 Outline Type concepts Where do types

More information

CSE 374 Programming Concepts & Tools

CSE 374 Programming Concepts & Tools CSE 374 Programming Concepts & Tools Hal Perkins Fall 2017 Lecture 11 gdb and Debugging 1 Administrivia HW4 out now, due next Thursday, Oct. 26, 11 pm: C code and libraries. Some tools: gdb (debugger)

More information

5) Attacker causes damage Different to gaining control. For example, the attacker might quit after gaining control.

5) Attacker causes damage Different to gaining control. For example, the attacker might quit after gaining control. Feb 23, 2009 CSE, 409/509 Mitigation of Bugs, Life of an exploit 1) Bug inserted into code 2) Bug passes testing 3) Attacker triggers bug 4) The Attacker gains control of the program 5) Attacker causes

More information

Stitched Together: Transitioning CMS to a Hierarchical Threaded Framework

Stitched Together: Transitioning CMS to a Hierarchical Threaded Framework Stitched Together: Transitioning CMS to a Hierarchical Threaded Framework CD Jones and E Sexton-Kennedy Fermilab, P.O.Box 500, Batavia, IL 60510-5011, USA E-mail: cdj@fnal.gov, sexton@fnal.gov Abstract.

More information

Concurrent Server Design Multiple- vs. Single-Thread

Concurrent Server Design Multiple- vs. Single-Thread Concurrent Server Design Multiple- vs. Single-Thread Chuan-Ming Liu Computer Science and Information Engineering National Taipei University of Technology Fall 2007, TAIWAN NTUT, TAIWAN 1 Examples Using

More information

Programming Languages and Compilers Qualifying Examination. Answer 4 of 6 questions.1

Programming Languages and Compilers Qualifying Examination. Answer 4 of 6 questions.1 Programming Languages and Compilers Qualifying Examination Monday, September 19, 2016 Answer 4 of 6 questions.1 GENERAL INSTRUCTIONS 1. Answer each question in a separate book. 2. Indicate on the cover

More information

Coccigrep: a semantic grep for C language

Coccigrep: a semantic grep for C language Coccigrep: a semantic grep for C language Éric Leblond Stamus Networks April 27, 2014 Éric Leblond (Stamus Networks) Coccigrep: a semantic grep for C language April 27, 2014 1 / 14 Eric Leblond a.k.a Regit

More information

Coccinelle: Tool support for automated CERT C Secure Coding Standard certification

Coccinelle: Tool support for automated CERT C Secure Coding Standard certification Coccinelle: Tool support for automated CERT C Secure Coding Standard certification Mads Chr. Olesen a, René Rydhof Hansen a,, Julia L. Lawall b, Nicolas Palix b a Department of Computer Science, Aalborg

More information

Recap: Thread. What is it? What does it need (thread private)? What for? How to implement? Independent flow of control. Stack

Recap: Thread. What is it? What does it need (thread private)? What for? How to implement? Independent flow of control. Stack What is it? Recap: Thread Independent flow of control What does it need (thread private)? Stack What for? Lightweight programming construct for concurrent activities How to implement? Kernel thread vs.

More information

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End Outline Semantic Analysis The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors

More information

Programming refresher and intro to C programming

Programming refresher and intro to C programming Applied mechatronics Programming refresher and intro to C programming Sven Gestegård Robertz sven.robertz@cs.lth.se Department of Computer Science, Lund University 2018 Outline 1 C programming intro 2

More information

Verified compilers. Guest lecture for Compiler Construction, Spring Magnus Myréen. Chalmers University of Technology

Verified compilers. Guest lecture for Compiler Construction, Spring Magnus Myréen. Chalmers University of Technology Guest lecture for Compiler Construction, Spring 2015 Verified compilers Magnus Myréen Chalmers University of Technology Mentions joint work with Ramana Kumar, Michael Norrish, Scott Owens and many more

More information

Reversed Buffer Overflow Cross Stack Attacks. Kris Kaspersky Endeavor Security, Inc.

Reversed Buffer Overflow Cross Stack Attacks. Kris Kaspersky Endeavor Security, Inc. Reversed Buffer Overflow Cross Stack Attacks Kris Kaspersky Endeavor Security, Inc. Who am I? journalist, reversing as a hobby; currently working for: XAKEP magazine (www.xakep.ru) Endeavor Security, Inc

More information

Last Class: Deadlocks. Today

Last Class: Deadlocks. Today Last Class: Deadlocks Necessary conditions for deadlock: Mutual exclusion Hold and wait No preemption Circular wait Ways of handling deadlock Deadlock detection and recovery Deadlock prevention Deadlock

More information

OS Structure. User mode/ kernel mode (Dual-Mode) Memory protection, privileged instructions. Definition, examples, how it works?

OS Structure. User mode/ kernel mode (Dual-Mode) Memory protection, privileged instructions. Definition, examples, how it works? Midterm Review OS Structure User mode/ kernel mode (Dual-Mode) Memory protection, privileged instructions System call Definition, examples, how it works? Other concepts to know Monolithic kernel vs. Micro

More information

CS558 Programming Languages

CS558 Programming Languages CS558 Programming Languages Fall 2017 Lecture 3a Andrew Tolmach Portland State University 1994-2017 Binding, Scope, Storage Part of being a high-level language is letting the programmer name things: variables

More information

OPERATING SYSTEMS. Prescribed Text Book. Operating System Principles, Seventh Edition. Abraham Silberschatz, Peter Baer Galvin and Greg Gagne

OPERATING SYSTEMS. Prescribed Text Book. Operating System Principles, Seventh Edition. Abraham Silberschatz, Peter Baer Galvin and Greg Gagne OPERATING SYSTEMS Prescribed Text Book Operating System Principles, Seventh Edition By Abraham Silberschatz, Peter Baer Galvin and Greg Gagne 1 DEADLOCKS In a multi programming environment, several processes

More information

Lecture 20: SW Testing Presented by: Mohammad El-Ramly, PhD

Lecture 20: SW Testing Presented by: Mohammad El-Ramly, PhD Cairo University Faculty of Computers and Information CS251 Software Engineering Lecture 20: SW Testing Presented by: Mohammad El-Ramly, PhD http://www.acadox.com/join/75udwt Outline Definition of Software

More information

CS 3305 Intro to Threads. Lecture 6

CS 3305 Intro to Threads. Lecture 6 CS 3305 Intro to Threads Lecture 6 Introduction Multiple applications run concurrently! This means that there are multiple processes running on a computer Introduction Applications often need to perform

More information

Sharing Objects Ch. 3

Sharing Objects Ch. 3 Sharing Objects Ch. 3 Visibility What is the source of the issue? Volatile Dekker s algorithm Publication and Escape Thread Confinement Immutability Techniques of safe publication Assignment 1 Visibility

More information

LINUX KERNEL UPDATES FOR AUTOMOTIVE: LESSONS LEARNED

LINUX KERNEL UPDATES FOR AUTOMOTIVE: LESSONS LEARNED LINUX KERNEL UPDATES FOR AUTOMOTIVE: LESSONS LEARNED TOM MCREYNOLDS, VLAD BUZOV AUTOMOTIVE SOFTWARE OCTOBER 15TH, 2013 Why kernel upgrades : the problem Linux Kernel cadence doesn t match Automotive s

More information

Chapter 7: Deadlocks 1

Chapter 7: Deadlocks 1 1 Reminders: February 24, 2014 I hope you had a good Reading Week! Exercise 3 is due this Wednesday Any questions about anything? Don t forget about Assignment 2, due next week 2 Comments on Exercise 2

More information

Decoding Those Inscrutable RCU CPU Stall Warnings

Decoding Those Inscrutable RCU CPU Stall Warnings Paul E. McKenney, IBM Distinguished Engineer, Linux Technology Center Member, IBM Academy of Technology Open Source Summit North America, September 12, 2017 Decoding Those Inscrutable RCU CPU Stall Warnings

More information

Concurrent & Distributed Systems Supervision Exercises

Concurrent & Distributed Systems Supervision Exercises Concurrent & Distributed Systems Supervision Exercises Stephen Kell Stephen.Kell@cl.cam.ac.uk November 9, 2009 These exercises are intended to cover all the main points of understanding in the lecture

More information

The role of semantic analysis in a compiler

The role of semantic analysis in a compiler Semantic Analysis Outline The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors

More information

Readings and References. Deadlock. Deadlock. Simple Traffic Gridlock Example. Reading. CSE Computer Systems November 30, 2001.

Readings and References. Deadlock. Deadlock. Simple Traffic Gridlock Example. Reading. CSE Computer Systems November 30, 2001. Readings and References Deadlock Reading Chapter 8, Operating System Concepts, Silberschatz, Galvin, and Gagne CSE 410 - Computer Systems November 30, 2001 Other References 30-Nov-01 CSE 410 - Deadlock

More information

Introduce C# as Object Oriented programming language. Explain, tokens,

Introduce C# as Object Oriented programming language. Explain, tokens, Module 2 98 Assignment 1 Introduce C# as Object Oriented programming language. Explain, tokens, lexicals and control flow constructs. 99 The C# Family Tree C Platform Independence C++ Object Orientation

More information

Understanding Undefined Behavior

Understanding Undefined Behavior Session Developer Tools #WWDC17 Understanding Undefined Behavior 407 Fred Riss, Clang Team Ryan Govostes, Security Engineering and Architecture Team Anna Zaks, Program Analysis Team 2017 Apple Inc. All

More information

Thread Synchronization: Foundations. Properties. Safety properties. Edsger s perspective. Nothing bad happens

Thread Synchronization: Foundations. Properties. Safety properties. Edsger s perspective. Nothing bad happens Edsger s perspective Testing can only prove the presence of bugs Thread Synchronization: Foundations Properties Property: a predicate that is evaluated over a run of the program (a trace) every message

More information

Kernels and Locking. Luca Abeni

Kernels and Locking. Luca Abeni Kernels and Locking Luca Abeni luca.abeni@santannapisa.it Critical Sections in Kernel Code Old Linux kernels used to be non-preemptable... Kernel Big critical section Mutual exclusion was not a problem...

More information

Concurrent Programming in the D Programming Language. by Walter Bright Digital Mars

Concurrent Programming in the D Programming Language. by Walter Bright Digital Mars Concurrent Programming in the D Programming Language by Walter Bright Digital Mars Introduction What is sequential consistency across threads? What are the problems with it? D features that mitigate those

More information

Programming in C - Part 2

Programming in C - Part 2 Programming in C - Part 2 CPSC 457 Mohammad Reza Zakerinasab May 11, 2016 These slides are forked from slides created by Mike Clark Where to find these slides and related source code? http://goo.gl/k1qixb

More information

OS Structure. User mode/ kernel mode. System call. Other concepts to know. Memory protection, privileged instructions

OS Structure. User mode/ kernel mode. System call. Other concepts to know. Memory protection, privileged instructions Midterm Review OS Structure User mode/ kernel mode Memory protection, privileged instructions System call Definition, examples, how it works? Other concepts to know Monolithic kernel vs. Micro kernel 2

More information

Chapter 7: Deadlocks. Operating System Concepts 9 th Edition

Chapter 7: Deadlocks. Operating System Concepts 9 th Edition Chapter 7: Deadlocks Silberschatz, Galvin and Gagne 2013 Chapter 7: Deadlocks System Model Deadlock Characterization Methods for Handling Deadlocks Deadlock Prevention Deadlock Avoidance Deadlock Detection

More information

[537] Concurrency Bugs. Tyler Harter

[537] Concurrency Bugs. Tyler Harter [537] Concurrency Bugs Tyler Harter Review Semaphores CV s vs. Semaphores CV rules of thumb: - Keep state in addition to CV s - Always do wait/signal with lock held - Whenever you acquire a lock, recheck

More information

Concurrency. Glossary

Concurrency. Glossary Glossary atomic Executing as a single unit or block of computation. An atomic section of code is said to have transactional semantics. No intermediate state for the code unit is visible outside of the

More information

MASSACHUSETTS INSTITUTE OF TECHNOLOGY Computer Systems Engineering: Spring Quiz I Solutions

MASSACHUSETTS INSTITUTE OF TECHNOLOGY Computer Systems Engineering: Spring Quiz I Solutions Department of Electrical Engineering and Computer Science MASSACHUSETTS INSTITUTE OF TECHNOLOGY 6.033 Computer Systems Engineering: Spring 2011 Quiz I Solutions There are 10 questions and 12 pages in this

More information

Control Flow. COMS W1007 Introduction to Computer Science. Christopher Conway 3 June 2003

Control Flow. COMS W1007 Introduction to Computer Science. Christopher Conway 3 June 2003 Control Flow COMS W1007 Introduction to Computer Science Christopher Conway 3 June 2003 Overflow from Last Time: Why Types? Assembly code is typeless. You can take any 32 bits in memory, say this is an

More information

Hunting Down Data Races in the Linux Kernel

Hunting Down Data Races in the Linux Kernel Hunting Down Data Races in the Linux Kernel Eugene A. Shatokhin www.rosalab.com Data Race "Simultaneous access to the same memory location by multiple threads, where at least one of the accesses modifies

More information

Coccinelle Usage (version 0.1.7)

Coccinelle Usage (version 0.1.7) Coccinelle Usage (version 0.1.7) June 5, 2009 1 Introduction This document describes the options provided by Coccinelle. The options have an impact on various phases of the semantic patch application process.

More information

PROVING THINGS ABOUT PROGRAMS

PROVING THINGS ABOUT PROGRAMS PROVING THINGS ABOUT CONCURRENT PROGRAMS Lecture 23 CS2110 Fall 2010 Overview 2 Last time we looked at techniques for proving things about recursive algorithms We saw that in general, recursion matches

More information

ADVANCED trouble-shooting of real-time systems. Bernd Hufmann, Ericsson

ADVANCED trouble-shooting of real-time systems. Bernd Hufmann, Ericsson ADVANCED trouble-shooting of real-time systems Bernd Hufmann, Ericsson AGENDA 1 Introduction 2 3 Timing Analysis 4 References 5 Q&A Trace Compass Overview ADVANCED trouble-shooting of critical real-time

More information

Shared Memory Programming. Parallel Programming Overview

Shared Memory Programming. Parallel Programming Overview Shared Memory Programming Arvind Krishnamurthy Fall 2004 Parallel Programming Overview Basic parallel programming problems: 1. Creating parallelism & managing parallelism Scheduling to guarantee parallelism

More information

Hint #1. Define a syscall

Hint #1. Define a syscall PC 5 System call Exercice Clone the git repository git clone http://gitlab.montefiore.ulg.ac.be/info0940/kernel-4.4.50.git Make a "PC4" branch Add a sys_forkexec system call It is the equivalent of calling

More information

Stream Computing using Brook+

Stream Computing using Brook+ Stream Computing using Brook+ School of Electrical Engineering and Computer Science University of Central Florida Slides courtesy of P. Bhaniramka Outline Overview of Brook+ Brook+ Software Architecture

More information

Linux multi-core scalability

Linux multi-core scalability Linux multi-core scalability Oct 2009 Andi Kleen Intel Corporation andi@firstfloor.org Overview Scalability theory Linux history Some common scalability trouble-spots Application workarounds Motivation

More information

Introduction to Kernel Programming. Luca Abeni

Introduction to Kernel Programming. Luca Abeni Introduction to Kernel Programming Luca Abeni luca.abeni@santannapisa.it About the Course Goal: understand how to code an OS kernel This course will introduce the students to the pains and joys of kernel

More information

CS 326: Operating Systems. Process Execution. Lecture 5

CS 326: Operating Systems. Process Execution. Lecture 5 CS 326: Operating Systems Process Execution Lecture 5 Today s Schedule Process Creation Threads Limited Direct Execution Basic Scheduling 2/5/18 CS 326: Operating Systems 2 Today s Schedule Process Creation

More information

Exception Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011

Exception Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011 More C++ David Chisnall March 17, 2011 Exceptions A more fashionable goto Provides a second way of sending an error condition up the stack until it can be handled Lets intervening stack frames ignore errors

More information

What is Deadlock? Two or more entities need a resource to make progress, but will never get that resource. Examples from everyday life:

What is Deadlock? Two or more entities need a resource to make progress, but will never get that resource. Examples from everyday life: Chapter 10 Deadlock What is Deadlock? Two or more entities need a resource to make progress, but will never get that resource Examples from everyday life: Gridlock of cars in a city Class scheduling: Two

More information

Static Code Analysis - CERT C Secure Code Checking

Static Code Analysis - CERT C Secure Code Checking Static Code Analysis - CERT C Secure Code Checking Frozen Content Modified by on 6-Nov-2013 Related Videos CERT Code Checking The high-level C code written for an embedded software project can sometimes

More information

Outline. Deadlock. Examples, Conditions, Strategies. Deadlock Prevention. Deadlock Avoidance. Banker s algorithm

Outline. Deadlock. Examples, Conditions, Strategies. Deadlock Prevention. Deadlock Avoidance. Banker s algorithm Deadlock Outline Deadlock Examples, Conditions, Strategies Deadlock Prevention Deadlock Avoidance Banker s algorithm Deadlocks Thread 1: lock(l1); lock(l2);! Thread 2: lock(l2); lock(l1); Examples? Examples?

More information

Concurrent Data Structures Concurrent Algorithms 2016

Concurrent Data Structures Concurrent Algorithms 2016 Concurrent Data Structures Concurrent Algorithms 2016 Tudor David (based on slides by Vasileios Trigonakis) Tudor David 11.2016 1 Data Structures (DSs) Constructs for efficiently storing and retrieving

More information

Brave New 64-Bit World. An MWR InfoSecurity Whitepaper. 2 nd June Page 1 of 12 MWR InfoSecurity Brave New 64-Bit World

Brave New 64-Bit World. An MWR InfoSecurity Whitepaper. 2 nd June Page 1 of 12 MWR InfoSecurity Brave New 64-Bit World Brave New 64-Bit World An MWR InfoSecurity Whitepaper 2 nd June 2010 2010-06-02 Page 1 of 12 Abstract Abstract Memory requirements on server and desktop systems have risen considerably over the past few

More information

Bridge Crossing Example

Bridge Crossing Example CSCI 4401 Principles of Operating Systems I Deadlocks Vassil Roussev vassil@cs.uno.edu Bridge Crossing Example 2 Traffic only in one direction. Each section of a bridge can be viewed as a resource. If

More information

Closures. Mooly Sagiv. Michael Clarkson, Cornell CS 3110 Data Structures and Functional Programming

Closures. Mooly Sagiv. Michael Clarkson, Cornell CS 3110 Data Structures and Functional Programming Closures Mooly Sagiv Michael Clarkson, Cornell CS 3110 Data Structures and Functional Programming Summary 1. Predictive Parsing 2. Large Step Operational Semantics (Natural) 3. Small Step Operational Semantics

More information

The Deadlock Problem (1)

The Deadlock Problem (1) Deadlocks The Deadlock Problem (1) A set of blocked processes each holding a resource and waiting to acquire a resource held by another process in the set. Example System has 2 disk drives. P 1 and P 2

More information

CS61C : Machine Structures

CS61C : Machine Structures inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 4 Introduction to C (pt 2) 2014-09-08!!!Senior Lecturer SOE Dan Garcia!!!www.cs.berkeley.edu/~ddgarcia! C most popular! TIOBE programming

More information

Decoding Those Inscrutable RCU CPU Stall Warnings

Decoding Those Inscrutable RCU CPU Stall Warnings Paul E. McKenney, IBM Distinguished Engineer, Linux Technology Center Member, IBM Academy of Technology linux.conf.au Kernel Miniconf, January 22, 2018 Decoding Those Inscrutable RCU CPU Stall Warnings

More information

OPERATING SYSTEMS. After A.S.Tanenbaum, Modern Operating Systems, 3rd edition. Uses content with permission from Assoc. Prof. Florin Fortis, PhD

OPERATING SYSTEMS. After A.S.Tanenbaum, Modern Operating Systems, 3rd edition. Uses content with permission from Assoc. Prof. Florin Fortis, PhD OPERATING SYSTEMS #4 After A.S.Tanenbaum, Modern Operating Systems, 3rd edition Uses content with permission from Assoc. Prof. Florin Fortis, PhD DEADLOCKS General Information DEADLOCKS RESOURCE T YPE

More information

Contribute To Linux Mainline

Contribute To Linux Mainline Contribute To Linux Mainline Wu Zhangjin / Falcon wuzhangjin@gmail.com Tiny Lab 泰晓实验室 http://tinylab.org June 3, 2013 Outline 1 About Linux Kernel Development 2 Upstream your source code 3 Reference 4

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

Synchronization. Disclaimer: some slides are adopted from the book authors slides with permission 1

Synchronization. Disclaimer: some slides are adopted from the book authors slides with permission 1 Synchronization Disclaimer: some slides are adopted from the book authors slides with permission 1 What is it? Recap: Thread Independent flow of control What does it need (thread private)? Stack What for?

More information

Chapter 7: Deadlocks

Chapter 7: Deadlocks Chapter 7: Deadlocks System Model Deadlock Characterization Methods for Handling Deadlocks Deadlock Prevention Deadlock Avoidance Deadlock Detection Recovery from Deadlock Combined Approach to Deadlock

More information