2008 - Nov 1 Deadlock Hunter Project Software Engineering Lab. Winter 07/08 Supervised by: Yonatan Kaspi Yonatan Kaspi Introduced by: Jamil Shehadeh Husam.

Slides:



Advertisements
Similar presentations
Operating Systems Components of OS
Advertisements

Utilizing the GDB debugger to analyze programs Background and application.
ICS103 Programming in C Lecture 1: Overview of Computers & Programming
Lecture 1: Overview of Computers & Programming
Paraμ A Partial and Higher-Order Mutation Tool with Concurrency Operators Pratyusha Madiraju AdVanced Empirical Software Testing and Analysis (AVESTA)
2 We need programming languages to communicate with a computer. The two broad classifications of programming languages are: Low-level and High- level.
5.6 Semaphores Semaphores –Software construct that can be used to enforce mutual exclusion –Contains a protected variable Can be accessed only via wait.
11 3 / 12 CHAPTER Databases MIS105 Lec14 Irfan Ahmed Ilyas.
Advanced OS Chapter 3p2 Sections 3.4 / 3.5. Interrupts These enable software to respond to signals from hardware. The set of instructions to be executed.
Nov 1 Deadlock Hunter Final Presentation Software Engineering Lab. Winter 07/08 Supervised by: Yonatan Kaspi Yonatan Kaspi Introduced by: Jamil.
1 MATERI PENDUKUNG SINKRONISASI Matakuliah: M0074/PROGRAMMING II Tahun: 2005 Versi: 1/0.
Copyright © 2006 by The McGraw-Hill Companies, Inc. All rights reserved. McGraw-Hill Technology Education Copyright © 2006 by The McGraw-Hill Companies,
Introduction & Overview CS4533 from Cooper & Torczon.
3D Object Retrieval Client-Server Project
Software Development Unit 6.
Introduction to C. A Brief History Created by Dennis Ritchie at AT&T Labs in 1972 Originally created to design and support the Unix operating system.
2  Problem Definition  Project Purpose – Building Obfuscator  Obfuscation Quality  Obfuscation Using Opaque Predicates  Future Planning.
Session-02. Objective In this session you will learn : What is Class Loader ? What is Byte Code Verifier? JIT & JAVA API Features of Java Java Environment.
Lesson 4 Computer Software
1 Advanced Computer Programming Concurrency Multithreaded Programs Copyright © Texas Education Agency, 2013.
Introduction to C Programming. A Brief History u Created by Dennis Ritchie at AT&T Labs in 1972 u Originally created to design and support the Unix operating.
IBC233 Week 1 Updated Fall 2010 Homework? Finish Lab 1 – hand in compile listings of the two programs at the beginning of next week’s Lab Period!
Computer Security and Penetration Testing
SQL Server 2000 Acropolis Institute of Technology and Research Database fundamentals Prepared By: Rahul Patel.
CS266 Software Reverse Engineering (SRE) Reversing and Patching Java Bytecode Teodoro (Ted) Cipresso,
Invitation to Computer Science 5 th Edition Chapter 6 An Introduction to System Software and Virtual Machine s.
INDUSTRIAL PROJECT (234313) ULTRASOUND SCANNER EMBEDDED ONLINE PROFILER Students: Liat Peterfreund, Hagay Myr Supervisor: Mr. Tomer Gal (GE Healthcare)
Getting Started with MATLAB 1. Fundamentals of MATLAB 2. Different Windows of MATLAB 1.
C# I 1 CSC 298 Threads. C# I 2 Introducing Threads  A thread is a flow of control within a program  A piece of code that runs on its own. The execution.
Synchronizing threads, thread pools, etc.
IBC233 Lecture 2 Updated Winter 2008 Agenda Test next Week – Jan 23 ISeries Architecture CL (Control Language) Library Lists Operations Navigator.
Homework Assignment #1 J. H. Wang Oct. 6, 2011.
1 ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 25, 2011 Synchronization.ppt Synchronization These notes will introduce: Ways to achieve.
Copyright © Mohamed Nuzrath Java Programming :: Syllabus & Chapters :: Prepared & Presented By :: Mohamed Nuzrath [ Major In Programming ] NCC Programme.
Understanding the Behavior of Java Programs Tarja Systa Software Systems Lab. Tampere Univ. Sookmyung Women’s Univ. PSLAB Choi, yoon jeong.
Threads in Java1 Concurrency Synchronizing threads, thread pools, etc.
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Concurrency & Dynamic Programming.
Computer Systems Viruses. Virus A virus is a program which can destroy or cause damage to data stored on a computer. It’s a program that must be run in.
A running program is a collection of “threads” – essentially independent execution streams When the main() method is called, the instructions within.
 Control Flow statements ◦ Selection statements ◦ Iteration statements ◦ Jump statements.
Synchronization These notes introduce:
INFORMATION SYSTEM – SOFTWARE TOPIC: GRAPHICAL USER INTERFACE.
JavaScript 101 Introduction to Programming. Topics What is programming? The common elements found in most programming languages Introduction to JavaScript.
Software Systems Verification and Validation Laboratory Assignment 4 Model checking Assignment date: Lab 4 Delivery date: Lab 4, 5.
Text TCS INTERNAL Oracle PL/SQL – Introduction. TCS INTERNAL PL SQL Introduction PLSQL means Procedural Language extension of SQL. PLSQL is a database.
IBC233 Week 2 Updated Fall 2011 Homework? Finish Lab 1 – Due Today! Send me an with your userid when you are done! Download and install software.
CSC CSC 143 Threads. CSC Introducing Threads  A thread is a flow of control within a program  A piece of code that runs on its own. The.
© Dr. A. Williams, Fall Present Software Quality Assurance – Clover Lab 1 Tutorial / lab 2: Code instrumentation Goals of this session: 1.Create.
Profiling/Tracing Method and Tool Evaluation Strategy Summary Slides Hung-Hsun Su UPC Group, HCS lab 1/25/2005.
Introduction to Database Programming with Python Gary Stewart
1 ITCS 4/5145 Parallel Programming, B. Wilkinson, Nov 12, CUDASynchronization.ppt Synchronization These notes introduce: Ways to achieve thread synchronization.
Chapter 1 Coding Introduction.
Done By: Ashlee Lizarraga Ricky Usher Jacinto Roches Eli Gomez
PROCESS MANAGEMENT IN MACH
SOFTWARE DESIGN AND ARCHITECTURE
ICS103 Programming in C Lecture 1: Overview of Computers & Programming
IBC233 Week 2 Updated Winter 2011
Chapter 1 Coding Introduction.
Starting JavaProgramming
Advanced Programming: C# Lecture 01: Introduction
Lesson Objectives Aims Key Words Compiler, interpreter, assembler
Threading And Parallel Programming Constructs
An Open-Source Based Speech Recognition Android Application for Helping Handicapped Students Writing Programs Tong Lai Yu, Santhrushna Gande.
Coding Concepts (Basics)
Multithreading.
Outline Operating System Organization Operating System Examples
IBC233 Week 2 Updated Fall 2011.
Chap 4. Programming Fundamentals
Synchronization These notes introduce:
Synchronization and liveness
Presentation transcript:

Nov 1 Deadlock Hunter Project Software Engineering Lab. Winter 07/08 Supervised by: Yonatan Kaspi Yonatan Kaspi Introduced by: Jamil Shehadeh Husam Khshaiboun

Nov Deadlock Hunter Project Our goal is to build a tool that will force the operating system scheduler to make the execution path be truly random. We will do this by examining the byte code of a Java program and adding small code sections in places that effect the execution path. Our job is to locate the deadlock, not to fix it.

Nov Strategy The idea is to enter other wait functions randomly anywhere before a synchronize keyword appears. Dealing with threads in any language can be done using specific commands. Using java enables us to be Platform independent. The specific commands will be searched for in java byte code using a parser. Code sections will be added automatically in these places forcing randomization in the execution path A Java Code with a hidden deadlock will be used as a client. The deadlock hunter will build a new instrumented byte code.

Nov Gaston & Alphonso A Client Example Gaston & Alphonso are two gentle and friendly fellows. They must bow one to the other anytime they meet. Each one of them bows and continue bowing until the other bows back. What if both of them bow at the same time?

Nov Gaston & Alphonso How to find the deadlock The idea is to enter other wait functions randomly anywhere before a synchronize keyword appears. Then, we can shake the stability of the regular execution path. We always enter the same byte code of an invariant function that includes a call of other modifiable function. To do that. “Some” BCEL is needed. BCEL stands for Byte Code Engineering Library Intended to give users a convenient possibility to analyze, create, and manipulate (binary) Java class files. Classes are represented by objects which contain all the symbolic information of the given class: methods, fields and byte code instructions, in particular.

Nov The Deadlock Hunter Main code flow Get the Client class file Create new Instruction list for each method Insert the “enter” function call where needed Update exception table handler Loop over its methods Deal with branch instructions Dump new class file

Nov Statistics Before code instrumentation, 0 deadlocks occurred in 100 runs. After adding all waits randomly (probability 70%) in one function only, 65 deadlocks occurred in 100 runs. After adding all waits randomly (probability 20%) in one function only, 35 deadlocks occurred in 100 runs. Adding waits randomly in all functions resulted in 100 deadlocks in 100 runs !