Efficient, Context-Sensitive Dynamic Analysis via Calling Context Uptrees Jipeng Huang, Michael D. Bond Ohio State University.

Slides:



Advertisements
Similar presentations
Michael Bond (Ohio State) Milind Kulkarni (Purdue)
Advertisements

Effective Static Deadlock Detection
Michael Bond Milind Kulkarni Man Cao Minjia Zhang Meisam Fathi Salmi Swarnendu Biswas Aritra Sengupta Jipeng Huang Ohio State Purdue.
Enabling Speculative Parallelization via Merge Semantics in STMs Kaushik Ravichandran Santosh Pande College.
1 Chao Wang, Yu Yang*, Aarti Gupta, and Ganesh Gopalakrishnan* NEC Laboratories America, Princeton, NJ * University of Utah, Salt Lake City, UT Dynamic.
Evaluating “find a path” reachability queries P. Bouros 1, T. Dalamagas 2, S.Skiadopoulos 3, T. Sellis 1,2 1 National Technical University of Athens 2.
1 Write Barrier Elision for Concurrent Garbage Collectors Martin T. Vechev Cambridge University David F. Bacon IBM T.J.Watson Research Center.
INTROPERF: TRANSPARENT CONTEXT- SENSITIVE MULTI-LAYER PERFORMANCE INFERENCE USING SYSTEM STACK TRACES Chung Hwan Kim*, Junghwan Rhee, Hui Zhang, Nipun.
A Randomized Dynamic Program Analysis for Detecting Real Deadlocks Koushik Sen CS 265.
Structural Joins: A Primitive for Efficient XML Query Pattern Matching Al Khalifa et al., ICDE 2002.
Whole-Program Linear-Constant Analysis with Applications to Link-Time Optimization Ludo Van Put – Dominique Chanet – Koen De Bosschere Ghent University.
Resurrector: A Tunable Object Lifetime Profiling Technique Guoqing Xu University of California, Irvine OOPSLA’13 Conference Talk 1.
Latency considerations of depth-first GPU ray tracing
Probabilistic Calling Context Michael D. Bond Kathryn S. McKinley University of Texas at Austin.
SOS: Saving Time in Dynamic Race Detection with Stationary Analysis Du Li, Witawas Srisa-an, Matthew B. Dwyer.
Kernel-Kernel Communication in a Shared- memory Multiprocessor Eliseu Chaves, et. al. May 1993 Presented by Tina Swenson May 27, 2010.
NUMA Tuning for Java Server Applications Mustafa M. Tikir.
S. Narayanasamy, Z. Wang, J. Tigani, A. Edwards, B. Calder UCSD and Microsoft PLDI 2007.
Memory Allocation. Three kinds of memory Fixed memory Stack memory Heap memory.
Mayur Naik Alex Aiken John Whaley Stanford University Effective Static Race Detection for Java.
Finding Low-Utility Data Structures Guoqing Xu 1, Nick Mitchell 2, Matthew Arnold 2, Atanas Rountev 1, Edith Schonberg 2, Gary Sevitsky 2 1 Ohio State.
1 Converting Disjunctive Data to Disjunctive Graphs Lars Olson Data Extraction Group Funded by NSF.
Age-Oriented Concurrent Garbage Collection Harel Paz, Erez Petrank – Technion, Israel Steve Blackburn – ANU, Australia April 05 Compiler Construction Scotland.
Cormac Flanagan UC Santa Cruz Velodrome: A Sound and Complete Dynamic Atomicity Checker for Multithreaded Programs Jaeheon Yi UC Santa Cruz Stephen Freund.
 B+ Tree Definition  B+ Tree Properties  B+ Tree Searching  B+ Tree Insertion  B+ Tree Deletion.
Identifying Reversible Functions From an ROBDD Adam MacDonald.
Eraser: A Dynamic Data Race Detector for Multithreaded Programs STEFAN SAVAGE, MICHAEL BURROWS, GREG NELSON, PATRICK SOBALVARRO, and THOMAS ANDERSON Ethan.
CMCD: Count Matrix based Code Clone Detection Yang Yuan and Yao Guo Key Laboratory of High-Confidence Software Technologies (Ministry of Education) Peking.
Shared Memory Parallelization of Decision Tree Construction Using a General Middleware Ruoming Jin Gagan Agrawal Department of Computer and Information.
Dynamic Object Sampling for Pretenuring Maria Jump Department of Computer Sciences The University of Texas at Austin Stephen M. Blackburn.
Institute of C omputer G raphics, TU Braunschweig Hybrid Scene Structuring with Application to Ray Tracing 24/02/1999 Gordon Müller, Dieter Fellner 1 Hybrid.
How to select superinstructions for Ruby ZAKIROV Salikh*, CHIBA Shigeru*, and SHIBAYAMA Etsuya** * Tokyo Institute of Technology, dept. of Mathematical.
DoubleChecker: Efficient Sound and Precise Atomicity Checking Swarnendu Biswas, Jipeng Huang, Aritra Sengupta, and Michael D. Bond The Ohio State University.
1 Real-Time Replication Garbage Collection Scott Nettles and James O’Toole PLDI 93 Presented by: Roi Amir.
Breadcrumbs: Efficient Context Sensitivity for Dynamic Bug Detection Analyses Michael D. Bond University of Texas at Austin Graham Z. Baker Tufts / MIT.
How’s the Parallel Computing Revolution Going? 1How’s the Parallel Revolution Going?McKinley Kathryn S. McKinley The University of Texas at Austin.
Efficient Deterministic Replay of Multithreaded Executions in a Managed Language Virtual Machine Michael Bond Milind Kulkarni Man Cao Meisam Fathi Salmi.
Low-Overhead Software Transactional Memory with Progress Guarantees and Strong Semantics Minjia Zhang, 1 Jipeng Huang, Man Cao, Michael D. Bond.
Click to edit Master title style HCCMeshes: Hierarchical-Culling oriented Compact Meshes Tae-Joon Kim 1, Yongyoung Byun 1, Yongjin Kim 2, Bochang Moon.
Deriving Input Syntactic Structure From Execution Zhiqiang Lin Xiangyu Zhang Purdue University November 11 th, 2008 The 16th ACM SIGSOFT International.
Optimizing MapReduce for GPUs with Effective Shared Memory Usage Department of Computer Science and Engineering The Ohio State University Linchuan Chen.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University IWPSE 2003 Program.
Drinking from Both Glasses: Adaptively Combining Pessimistic and Optimistic Synchronization for Efficient Parallel Runtime Support Man Cao Minjia Zhang.
Detecting and Eliminating Potential Violation of Sequential Consistency for concurrent C/C++ program Duan Yuelu, Feng Xiaobing, Pen-chung Yew.
Michael Bond Katherine Coons Kathryn McKinley University of Texas at Austin.
Paging (continued) & Caching CS-3013 A-term Paging (continued) & Caching CS-3013 Operating Systems A-term 2008 (Slides include materials from Modern.
Thread basics. A computer process Every time a program is executed a process is created It is managed via a data structure that keeps all things memory.
ConcJUnit: Unit Testing for Concurrent Programs COMP 600 Mathias Ricken Rice University August 24, 2009.
ARRAYS IN C/C++ (1-Dimensional & 2-Dimensional) Introduction 1-D 2-D Applications Operations Limitations Conclusion Bibliography.
GC Assertions: Using the Garbage Collector To Check Heap Properties Samuel Z. Guyer Tufts University Edward Aftandilian Tufts University.
FastTrack: Efficient and Precise Dynamic Race Detection [FlFr09] Cormac Flanagan and Stephen N. Freund GNU OS Lab. 23-Jun-16 Ok-kyoon Ha.
Estimation of Distribution Algorithm and Genetic Programming Structure Complexity Lab,Seoul National University KIM KANGIL.
Making k-Object-Sensitive Pointer Analysis More Precise with Still k-Limiting Tian Tan, Yue Li and Jingling Xue SAS 2016 September,
A Tale of Two Erasure Codes in HDFS
Reducing OLTP Instruction Misses with Thread Migration
Why Events Are A Bad Idea (for high-concurrency servers)
Yuan Yu(MSR) Tom Rodeheffer(MSR) Wei Chen(UC Berkeley) SOSP 2005
Capriccio – A Thread Model
HashKV: Enabling Efficient Updates in KV Storage via Hashing
Man Cao Minjia Zhang Aritra Sengupta Michael D. Bond
Department of Computer Science University of California, Santa Barbara
Jipeng Huang, Michael D. Bond Ohio State University
Inlining and Devirtualization Hal Perkins Autumn 2011
Closure Representations in Higher-Order Programming Languages
Inlining and Devirtualization Hal Perkins Autumn 2009
자바 언어를 위한 정적 분석 (Static Analyses for Java) ‘99 한국정보과학회 가을학술발표회 튜토리얼
Department of Computer Science University of California, Santa Barbara
Lecture 21 Amortized Analysis
Procedure Linkages Standard procedure linkage Procedure has
Presentation transcript:

Efficient, Context-Sensitive Dynamic Analysis via Calling Context Uptrees Jipeng Huang, Michael D. Bond Ohio State University

What do we need for bug detection? Why not calling context tree?

Thread A Thread B read x write x race! Example: dynamic race detector

Helper.inc():11 Helper.read():21 Report the race Thread A Thread B race!

Full Stack Trace write x read x Thread A Thread B race! Helper.inc():11 A.doinc():37 A.m1():50 … Helper.inc():11 A.doinc():37 A.m1():50 … Helper.read():21 B. rd():68 B.m1():150 … Helper.read():21 B. rd():68 B.m1():150 …

How hard? write x read x Thread AThread B race! Helper.inc():11 A.doinc():37 A.m1():50 … Helper.inc():11 A.doinc():37 A.m1():50 … Helper.read():21 B. rd():68 B.m1():150 … Helper.read():21 B. rd():68 B.m1():150 … B.method2() Easy Hard Record previous stack information Record previous stack information

Calling Context Tree? High time overhead ◦ reuse existing context nodes, i.e, lookup child callee nodes before constructing new child nodes

Calling Context Tree Main.main():10 A.meth():12 ThrB.run():10 A.meth():14 x x x x B. wr():21 B. wr():21 C. wr():55 C. wr():55 B.rd():68 B. m1():150 B. m1():150 Helper. read():21 Helper. read():21 A. m1():50 A. m1():50 A.doinc ():37 Helper. inc():11 Helper. inc():11 Time Overhead (2X or more): --child lookup Time Overhead (2X or more): --child lookup Ammons et. al (PLDI’97) How to avoid lookup?

Calling Context Uptree Main.main():10 A.meth():12 ThrB.run():10 A.meth():14 x x x x A. m1():21 A. m1():21 A. wr():30 A. wr():30 y y A. m1():21 A. m1():21 A. wr():30 A. wr():30 z z B. wr():21 B. wr():21 C. wr():55 C. wr():55 B.rd():68 B. m1():150 B. m1():150 Helper. read():21 Helper. read():21 A. m1():50 A. m1():50 A.doinc ():37 Helper. inc():11 Helper. inc():11 Fast: No lookup any more Fast: No lookup any more More space: Allocate new nodes More space: Allocate new nodes Redundant context nodes (  )

Calling Context Uptree (with merging) Main.main():10 A.meth():12 A.meth():14 A. m1():21 A. m1():21 A. wr():30 A. wr():30 y y A. m1():21 A. m1():21 A. wr():30 A. wr():30 z z After certain amounts of gc, do merging

Related work Context encoding ◦ PCCE(ICSE’10), Breadcrumbs(PLDI’10) —cannot scale well to large/complex programs Construct calling context from SP and PC ◦ Mytkowicz et al. OOPSLA’09, Inoue et. al OOPSLA’09 — Low overhead but still not very safe enough to uniquely construct calling context

Conclusion Time/Space Tradeoff ◦ Instead of reusing existing nodes, allocate new nodes. —lower time but higher space Qualitative Improvement ◦ Context sensitivity for all-the-time production system Thank you!