Safe Locking for Multi-threaded Java



Similar documents
Resource-Aware Applications for the Cloud

Java Memory Model: Content

Run-Time Assertion Checking and Monitoring Java Programs

How To Write A Multi Threaded Software On A Single Core (Or Multi Threaded) System

Facing the Challenges for Real-Time Software Development on Multi-Cores

Language Based Virtual Machines... or why speed matters. by Lars Bak, Google Inc

Multi-core Programming System Overview

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

Types, Polymorphism, and Type Reconstruction

CSCI E 98: Managed Environments for the Execution of Programs

language 1 (source) compiler language 2 (target) Figure 1: Compiling a program

Overview. CMSC 330: Organization of Programming Languages. Synchronization Example (Java 1.5) Lock Interface (Java 1.5) ReentrantLock Class (Java 1.

Using Protothreads for Sensor Node Programming

Configuring Apache Derby for Performance and Durability Olav Sandstå

Understanding Hardware Transactional Memory

Last Class: Semaphores

Pluggable Type Systems. Gilad Bracha

Computer Programming I

Replication on Virtual Machines

Change Impact Analysis

Programming Language Pragmatics

Crash Course in Java

Certifying the Security of Android Applications with Cassandra

A Hoare Logic for Monitors in Java

Japan Communication India Skill Development Center

Shared Address Space Computing: Programming

Reducing Transfer Delay Using Java Class File Splitting and Prefetching

Tools Page 1 of 13 ON PROGRAM TRANSLATION. A priori, we have two translation mechanisms available:

Monitoring Hadoop with Akka. Clint Combs Senior Software Engineer at Collective

RE-TRUST Design Alternatives on JVM

Tutorial: Getting Started

Lecture 11: Tail Recursion; Continuations

Improvement of Scheduling Granularity for Deadline Scheduler

Built-in Concurrency Primitives in Java Programming Language. by Yourii Martiak and Mahir Atmis

Resource Aware Scheduler for Storm. Software Design Document. Date: 09/18/2015

ODROID Multithreading in Android

Lecture 6: Semaphores and Monitors

Zing Vision. Answering your toughest production Java performance questions

Scoping (Readings 7.1,7.4,7.6) Parameter passing methods (7.5) Building symbol tables (7.6)

CS11 Java. Fall Lecture 7

To Java SE 8, and Beyond (Plan B)

PC Based Escape Analysis in the Java Virtual Machine

Operating System Support for Java Virtual Machine: A New Methodology of Boosting Java Runtime Performance

SSC - Concurrency and Multi-threading Java multithreading programming - Synchronisation (I)

Using Eclipse CDT/PTP for Static Analysis

Enterprise Integration: operational models of business processes and workflow systems *

Code Generation for High-Assurance Java Card Applets

Implementing AUTOSAR Scheduling and Resource Management on an Embedded SMT Processor

Japan Communication India Skill Development Center

The ConTract Model. Helmut Wächter, Andreas Reuter. November 9, 1999

A FRAMEWORK FOR MANAGING RUNTIME ENVIRONMENT OF JAVA APPLICATIONS

Existential Types for Imperative Languages

Best Practices for Multi-Tenant Environments

Rigorous Software Development CSCI-GA

The Advantages of Using an Inliner

Compiling Object Oriented Languages. What is an Object-Oriented Programming Language? Implementation: Dynamic Binding

OBJECT ORIENTED PROGRAMMING LANGUAGE

Java VM monitoring and the Health Center API. William Smith

Code Aware Resource Scheduling

Monitors, Java, Threads and Processes

Functional Programming. Functional Programming Languages. Chapter 14. Introduction

JVM Tool Interface. Michal Pokorný

A Generic Type-and-Effect System

Benchmark Study on Distributed XML Filtering Using Hadoop Distribution Environment. Sanjay Kulhari, Jian Wen UC Riverside

The end. Carl Nettelblad

Outline of this lecture G52CON: Concepts of Concurrency

Japan Communication India Skill Development Center

Programming Languages

Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program

INTERCALL ONLINE Administrator Invoices User Guide

Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program

Validating Java for Safety-Critical Applications

Japan Communication India Skill Development Center

Tachyon: a Meta-circular Optimizing JavaScript Virtual Machine

HybriDroid: Analysis Framework for Android Hybrid Applications

Thesis Proposal: Improving the Performance of Synchronization in Concurrent Haskell

Optimizing Generation of Object Graphs in Java PathFinder

How To Use Java On An Ipa (Jspa) With A Microsoft Powerbook (Jempa) With An Ipad And A Microos 2.5 (Microos)

Model Checking: An Introduction

Development of Java ME

CS Fall 2008 Homework 2 Solution Due September 23, 11:59PM

Platform-wide Deadlock Immunity for Mobile Phones

Cloud Computing. Up until now

POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful

Binary Multiplication

Transcription:

Safe Locking for Multi-threaded Java Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen University of Oslo, Norway NWPT 10 10-12 November, 2010

Motivation Concurrency control mechanisms for high-level programming languages, such as Java lexical scope: synchronized-methods/blocks non-lexical scope: lock and unlock operators to acquire and release a lock in non-lexical scope. Runtime errors and unwanted behaviors. Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 2

Lock Handling in Java: not release the lock after finishing import j a v a. u t i l. c o n c u r r e n t. l o c k s ; p u b l i c c l a s s C o n d i t i o n T e s t {.................. p r i v a t e f i n a l Thread producer, consumer ; p r i v a t e f i n a l R e e n t r a n t L ock l ; c l a s s Consumer implements Runnable {... } c l a s s Producer implements Runnable {.................. p u b l i c void put ( I n t e g e r key, Boolean v a l u e ) { l. l o c k ( ) ; l. l o c k ( ) ; // 2 time l o c k t r y { c o l l e c t i o n. put ( key, v a l u e ) ;............................... } f i n a l l y { l. u n l o c k ( ) ; } // 1 t i m e s u n l o c k... } Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 3

Lock Handling in Java Consumer is hanging P roducer : a d d i n g 1 to c o l l e c t i o n. Consumer : w a i t i n g 10 s e c o n d s f o r 2345 to a r r i v e... P roducer : a d d i n g 4 to c o l l e c t i o n. P roducer : a d d i n g 66 to c o l l e c t i o n. P roducer : a d d i n g 9 to c o l l e c t i o n. P roducer : a d d i n g 2435 to c o l l e c t i o n. P roducer : e x i t i n g. Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 4

Lock Handling in Java: release a free lock import j a v a. u t i l. c o n c u r r e n t. l o c k s ; p u b l i c c l a s s C o n d i t i o n T e s t {.................. p r i v a t e f i n a l Thread producer, consumer ; p r i v a t e f i n a l R e e n t r a n t L ock l ; c l a s s Consumer implements Runnable {... } c l a s s Producer implements Runnable {.............. p u b l i c void put ( I n t e g e r key, Boolean v a l u e ) { } l. l o c k ( ) ; // 1 time l o c k t r y { c o l l e c t i o n. put ( key, v a l u e ) ;......................... } f i n a l l y { l. u n l o c k ( ) ; l. u n l o c k ( ) ; } // 2 t i m e s u n l o c k... Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 5

Lock Handling in Java: Report of lock errors at run-time P roducer : a d d i n g 1 to c o l l e c t i o n................................... E x c e p t i o n i n... j a v a. l a n g. I l l e g a l M o n i t o r S t a t e E x c e p t i o n a t... R e e n t r a n t L o c k S y n c. t r y R e l e a s e ( R e e n t r a n t L o c k. j a v a : 1 2 7 ) a t... r e l e a s e ( A b s t r a c t Q u e u e d S y n c h r o n i z e r. j a v a : 1 2 3 9 ) a t... R e e n t r a n t L o c k. u n l o c k ( R e e n t r a n t L o c k. j a v a : 4 3 1 ) a t... C o n d i t i o n T e s t P r o d u c e r. put ( C o n d i t i o n T e s t. j a v a : 1 1 0 )............ a t j a v a. l a n g. Thread. run ( Thread. j a v a : 6 6 2 )....... Consumer : e x i t i n g. Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 6

Goals of our work Semantics for lock handling as in Java. Static type and effect system for safe usage of re-entrant locks. Soundness proof Details and proofs: See our technical report[johnsen et al., 2010] Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 7

Challenges Dynamic creation of objects, threads, and especially locks. Identities of locks are available at user-level Locks are re-entrant Aliasing Passing locks between threads Multi-threading/concurrency Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 8

A Concurrent Calculus D Classes ::= class C( f : T ){ f : T ; M} M Methods ::= m( x: T ){t} : T t ThreadSeq ::= stop error v let x:t = e in t e Exp ::= t if v then e else e v.f v.f := v v.m( v) new C( v) spawn t new L v. lock v. unlock if v. trylock then e else e v Value ::= r x () x, y Var S, T Type ::= C B Unit L Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 9

Semantics (locks): Global level σ Heap ::= σ, o : C( v) σ, l : 0 σ, l : p(n) Global configuration: σ P, so global step: σ P σ P. (1) where P ::= 0 P P p t σ(l) = p (n) p p R-Error 1 σ p let x : T = l. unlock in t σ p error σ(l) = 0 R-Error 2 σ p let x : T = l. unlock in t σ p error Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 10

Type and effect system At the local level, the judgment of the expression e σ; Γ; 1 e : T :: 2 (2) Under the environment Γ the expression e has the type T Executing e leads to the effect changing from 1 to 2 σ; Γ v : L v T-Lock σ; Γ; v. lock: L :: + v σ; Γ v : L v : n + 1 σ; Γ; v. unlock: L :: v T-Unlock Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 11

Type and effect system σ Heap ::= σ, o : C( v) σ, l : 0 σ, l : p(n) Γ TypeEnv ::= Γ, x : T LockEnv ::=, l : n, x : n Definition (Projection) Assume a heap σ with σ : ok and a thread p. The projection of σ onto p (σ p ) inductively defined: p = (σ, l:0) p = σ p, l:0 (σ, l:p(n)) p = σ p, l:n (σ, l:p (n)) p = σ p, l:0 if p p (σ, o:c( v)) p = σ p. Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 12

Type rules (T-Call) At the global level, the judgment of the form: σ P : ok σ; Γ v : T σ; Γ v : C C.m : T T :: 1 2 C.m = λ x.t 1 1 [ v/ x] 2 = 1 + ( 2 1 )[ v/ x] T-Call σ; Γ; 1 v.m( v) : T :: 2 Definition (Operators on lock environments) 1 Let = 1 + 2, then l : n 1 + n 2 if 1 l : n 1 2 l : n 2. l : n 1 if 1 l : n 1 2 l (and symmetrically). 2 1 2 if dom( 1 ) dom( 2 ) l dom( 2 ): n 1 n 2, where ( 1 l : n 1 ) ( 2 l : n 2 ). 3 1 2 for 1 2, analogously. Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 13

An illustration of T-Call Two methods m and n operating on a single lock: m(){l.lock; l.lock x.n();... } where n(){l.unlock; l.unlock; l.lock} balance balance t t balance t Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 14

An illustration of T-Call Two methods m and n operating on a single lock: m(){l.lock; l.lock x.n();... } where n(){l.unlock; l.unlock; l.lock} balance balance t t balance t Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 15

Examples of Aliasing Method with 2 formal parameters m(x 1 : L, x 2 : L ) { x 1. u n l o c k ; x 2. u n l o c k } 1 = x 1 :1, x 2 :1 (2) o.m(l 1, l 2 ) : 1 = 1 [l 1 /x 1 ][l 2 /x 2 ] = l 1 :1, l 2 :1 (3) o.m(l, l) : 1 = 1 [l/x 1 ][l/x 2 ] = l:(1 + 1) (4) Definition (Substitution for lock environments: [l/x]) Given = v 1 :n 1,..., v k :n k, = [l/x]. 1 =, l:(n l + n x ) If =, l:n l, x:n x 2 =, l:n x If =, x:n x l / dom( ) 3 =, otherwise. Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 16

Examples of Aliasing Listing 1: Method call, no aliasing f 1 := new L ; f 2 := new L ; // f 1 and f 2 : no a l i a s e s f 1. l o c k ; f 2. l o c k ; o.m(f 1,f 2 ) ; Nothing is wrong here! Listing 2: Method call, aliasing f 1 := new L ; f 2 := f 1 ; // f 1 and f 2 : a l i a s e s f 1. l o c k ; f 2. l o c k ; o.m(f 1,f 2 ) ; Again, there is no run-time error! Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 17

Examples of Aliasing Listing 3: Method call, no aliasing f 1 := new L ; f 2 := new L ; // f 1 and f 2 : no a l i a s e s f 1. l o c k ; f 2. l o c k ; o.m(f 1,f 2 ) ; Nothing is wrong here! Listing 4: Method call, aliasing f 1 := new L ; f 2 := f 1 ; // f 1 and f 2 : a l i a s e s f 1. l o c k ; f 2. l o c k ; o.m(f 1,f 2 ) ; Again, there is no run-time error! Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 18

Examples of Aliasing Listing 5: Method call, no aliasing f 1 := new L ; f 2 := new L ; // f 1 and f 2 : no a l i a s e s f 1. l o c k ; f 2. l o c k ; o.m(f 1,f 2 ) ; Nothing is wrong here! Listing 6: Method call, aliasing f 1 := new L ; f 2 := f 1 ; // f 1 and f 2 : a l i a s e s f 1. l o c k ; f 2. l o c k ; o.m(f 1,f 2 ) ; Again, there is no run-time error! Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 19

Examples of Aliasing Listing 7: Method call, no aliasing f 1 := new L ; f 2 := new L ; // f 1 and f 2 : no a l i a s e s f 1. l o c k ; f 2. l o c k ; o.m(f 1,f 2 ) ; Nothing is wrong here! Listing 8: Method call, aliasing f 1 := new L ; f 2 := f 1 ; // f 1 and f 2 : a l i a s e s f 1. l o c k ; f 2. l o c k ; o.m(f 1,f 2 ) ; Again, there is no run-time error! Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 20

Illustration of aliasing and non-aliasing locks balance balance t t balance t Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 21

Examples of Aliasing Listing 9: Method call, midway assignment f 1 := new L ; f 2 := new L ; / f 1. l o c k ; f 2. l o c k ; f 2 := f 1 ; // f 1 and f 2 a r e now a l i a s e s o.m(f 1,f 2 ) ; Obviously, the code leads to a lock-error! σ; Γ v 1 : C C.f i : T i σ; Γ v 2 : T i T i L σ; Γ; v 1.f i := v 2 : T i :: T-Assign Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 22

Examples of Aliasing Listing 10: Method call, midway assignment f 1 := new L ; f 2 := new L ; / f 1. l o c k ; f 2. l o c k ; f 2 := f 1 ; // f 1 and f 2 a r e now a l i a s e s o.m(f 1,f 2 ) ; Obviously, the code leads to a lock-error! σ; Γ v 1 : C C.f i : T i σ; Γ v 2 : T i T i L σ; Γ; v 1.f i := v 2 : T i :: T-Assign Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 23

Examples of Aliasing Listing 11: Method call, midway assignment f 1 := new L ; f 2 := new L ; / f 1. l o c k ; f 2. l o c k ; f 2 := f 1 ; // f 1 and f 2 a r e now a l i a s e s o.m(f 1,f 2 ) ; Obviously, the code leads to a lock-error! σ; Γ v 1 : C C.f i : T i σ; Γ v 2 : T i T i L σ; Γ; v 1.f i := v 2 : T i :: T-Assign Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 24

Two core observations Aliasing does not hurt in our setting. locking assures interference-freedom Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 25

Type rules 1 = σ p σ; ; 1 t : T :: 2 t error 2 free σ p t :ok T-Thread σ P 1 : ok σ P 1 P 2 : ok σ P 2 : ok T-Par Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 26

Soundness: proof by subject reduction Definition (Hanging lock) A configuration σ P has a hanging lock if P = P p stop where σ(l) = p(n) with n 1. Theorem (Well-typed programs have no hanging locks) Given an initial configuration σ 0 P 0 : ok. Then it s not the case that σ 0 P 0 σ P, where σ P has a hanging lock. Theorem (Well-typed programs are lock-error free) Given an initial configuration σ 0 P 0 : ok. Then it s not the case that σ 0 P 0 σ P p error. Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 27

Related work [Igarashi and Kobayashi, 2005]: the resource usage analysis problem. The language, however, is sequential. [Gerakios et al., 2010]: a uniform treatment of region-based management and locks [Bigliardi and Laneve, 2000][Laneve, 2003]: a type system for statically assuring proper lock handling for the JVM, structured locking. [Iwama and Kobayashi, 2002]: a type system for multi-threaded Java program for JVM in non-lexical locking. Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 28

Summary, current and future work Summary: A calculus supporting lock handling as in Java with operational semantics Usage of locks in non-lexical scope can be typed checked Type and effect system Soundness proof: subject reduction Aliasing, passing locks between threads, dynamic creation of objects, threads and especially locks. Current and future work: Implementing a type checker. Adding exceptions (under work) More details on the technical report [Johnsen et al., 2010](http://heim.ifi.uio.no/ msteffen) Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 29

[Bigliardi and Laneve, 2000] Bigliardi, G. and Laneve, C. (2000). A type system for JVM threads. In In Proceedings of 3rd ACM SIGPLAN Workshop on Types in Compilation (TIC2000, page 2003. [Gerakios et al., 2010] Gerakios, P., Papaspyrou, N., and Sagonas, K. (2010). A concurrent language with a uniform treatment of regions and locks. In Programming Language Approaches to Concurrency and Communication-eCentric Software EPTCS 17, pages 79 93. [Igarashi and Kobayashi, 2005] Igarashi, A. and Kobayashi, N. (2005). Resource usage analysis. ACM Transactions on Programming Languages and Systems, 27(2):264 313. [Iwama and Kobayashi, 2002] Iwama, F. and Kobayashi, N. (2002). A new type system for JVM lock primitives. In ASIA-PEPM 02: Proceedings of the ASIAN symposium on Partial evaluation and semantics-based program manipulation, pages 71 82, New York, NY, USA. ACM. [Johnsen et al., 2010] Johnsen, E. B., Mai Thuong Tran, T., Owe, O., and Steffen, M. (2010). Safe locking for multi-threaded Java. Technical Report 402, University of Oslo, Dept. of Computer Science. www.ifi.uio.no/~msteffen/publications.html#techreports. A shorter version (extended abstract) has been presented at the NWPT 10. [Laneve, 2003] Laneve, C. (2003). A type system for JVM threads. Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 30

Theoretical Computer Science, 290(1):741 778. Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen 31