CS 295 Winter 2012, Paper List

Foundations of Dynamic Analysis

*    Efficient Path Profiling. T. Ball and J. Larus. (MICRO 1996)

*    Value Profiling. B. Calder and P. Feller. (MICRO 1997)

*    Exploiting Hardware Performance Counters with Flow and Context Sensitive Profiling. G. Ammons, T. Ball, and J. R. Larus. (PLDI 1997)

*    Whole Program Paths. J. Larus. (PLDI 1999)

*    A Framework for Reducing the Cost of Instrumented Code, M. Arnold and B. G. Ryder (PLDI 2001)

*    Continuous Path and Edge Profiling. M. D. Bond and K. S. McKinley. (MICRO 2005)

*    Preferential Path Profiling: Compactly Numbering Interesting Paths. K. Vaswani, A. V. Nori, and T. M. Chilimbi. (POPL 2007)

*    Whole Execution Traces. X. Zhang and R. Gupta. (MICRO 2004)

*    Precise Dynamic Slicing Algorithms. X. Zhang and R. Gupta. (ICSE 2003)

*    Cost Effective Dynamic Program Slicing. X. Zhang and R. Gupta. (PLDI 2004)

*    Pin: Building Customized Program Analysis Tools with Dynamic Instrumentation. C. K. Luk et al. (PLDI 2005)

*    Pruning Dynamic Slices With Confidence. X. Zhang and R. Gupta. (PLDI 2006)

*    Accurate, Efficient, and Adaptive Calling Context Profiling. X. Zhuang, M. J. Serrano, H. W. Cain, and J. D. Choi. (PLDI 2006)

*    Probabilistic Calling Contexts.  M. D. Bond and K. S. McKinley (OOPSLA 2007)

*    How to Shadow Every Byte of Memory Used by a Program. N. Nethercote and J. Seward (VEE 2007)

*    Efficient Program Execution Indexing. B. Xin, N. Sumner, and X. Zhang (PLDI 2008)

*    Breadcrumbs: Efficient Context Sensitivity for Dynamic Bug Detection Analyses. M. D. Bond, G. Z. Baker, and S. Z. Guyer (PLDI 2010)

*    A Concurrent Dynamic Analysis Framework for Multicore Hardware.  J. Ha, M. Arnold, S. M. Blackburn, and K. S. McKinley (OOPSLA 2009)

*    Precise Calling Context Encoding. W. N. Sumner, Y. Zheng, D. Weeratunge, and X. Zhang (ICSE 2010)

Dynamic Memory Leak Detection and Heap Analysis

*    Purify: Fast Detection of Memory Leaks and Access Errors. R. Hastings and B. Joyce. (USENIX Winter 1992)

*    LeakBot: An Automated and Lightweight Tool for Diagnosing Memory Leaks in Large Java Applications. N. Mitchell and G. Sevitsky. (ECOOP 2003)

*    Low-overhead memory leak detection using adaptive statistical profiling. M. Hauswirth and T. M. Chilimbi. (ASPLOS 2004)

*    SafeMem: Exploiting ECC-Memory for Detecting Memory Leaks and Memory Corruption During Production Runs. F. Qin, S. Lu, and Y. Y. Zhou. (HPCA 2005)

*    Bell: Bit-Encoding Online Memory Leak Detection, M. D. Bond, K. S. McKinley. (ASPLOS 2006)

*    Cork: Dynamic memory leak detection for garbage-collected language. M. Jump and K. S. McKinley. (POPL 2007)

*    Precise Memory Leak Detection for Java Software using Container Profiling. G. Xu and A. Rountev. (ICSE 2008)

*    LeakSurvivor: Towards Safely Tolerating Memory Leaks for Garbage-Collected Languages. Y. Tang and F. Qin (USENIX 2008)

*    Tolerating Memory Leaks. M. D. Bond and K. S. McKinley (OOPSLA 2008)

*    QVM: An Efficient Runtime for Detecting Defects in Deployed Systems. M. Arnold, M. Vechev, and E. Yahav. (OOPSLA 2008)

*    Leak Pruning. M. D. Bond and K. S. McKinley (ASPLOS 2009)

*    Efficiently and Precisely Locating Memory Leaks and Bloat. G. Novark, E. D. Berger, B. G. Zorn. (PLDI 2009)

*    GC Assertions: Using the Garbage Collector to Check Heap Properties. E. Aftandilian and S. Z. Guyer. (PLDI 2009)

*    What Can the GC Compute Efficiently? A Language for Heap Assertions at GC Time.  C. Reichenbach, N. Immerman, Y. Smaragdakis, E. Aftandilian and S. Z. Guyer. (OOPSLA 2010)

*    Diagnosing memory leaks using graph mining on heap dumps.  E. K. Maxwell, G. Back, and N. Ramakrishnan. (KDD 2010)

*    LeakPoint: Pinpointing the Causes of Memory Leaks. J. Clause and A. Orso.  (ICSE 2010)

*    LeakChaser: Helping Programmers Narrow Down Causes of Memory Leaks. G. Xu, M. D. Bond, F. Qin, and A. Rountev. (PLDI 2011)

*    Asynchronous Assertions. E. Aftandilian, S. Z. Guyer, M. Vechev, and E. Yahav. (OOPSLA 2011)

Dynamic Software Bloat Analysis

*    Software Bloat Analysis: Finding, Removing, and Preventing Performance Problems in Modern Large-Scale Object-Oriented Applications. G. Xu, N. Mitchell, M. Arnold, A. Rountev, and G. Sevitsky.  (FoSER 2010) ---- A roadmap paper

*    Four Trends Leading to Java Runtime Bloat. N. Mitchell, E. Schonberg, and G. Sevitsky. (IEEE Software 2010)

*    Dynamic Metrics for Java. B. Dufour, K. Driesen, L. Hendren, and C. Verbrugge. (OOPSLA 2003)

*    Finding and Removing Performance Bottlenecks in Large Systems. G. Ammons, J. D. Choi, M. Gupta, and N. Swamy. (ECOOP 2004)

*    Modeling Runtime Behavior in Framework-Based Applications, N. Mitchell, G. Sevitsky, and H. Srinivasan. (ECOOP 2006)

*    The Runtime Structure of Object Ownership, N. Mitchell. (ECOOP 2006)

*    The Causes of Bloat, The Limits of Health. N. Mitchell and G. Sevitsky. (OOPSLA 2007)

*    JOLT: Lightweight Dynamic Analysis and Removal of Object Churn.  A. Shankar, M. Arnold, and R. Bodik. (OOPSLA 2008)

*    Go with the Flow: Profiling Copies to Find Runtime Bloat. G. Xu, M. Arnold, N. Mitchell, A. Rountev, G. Sevitsky. (PLDI 2009)

*    Chameleon: Adaptive Selection of Collections. O. Shacham, M. Vechev, and E. Yahav. (PLDI 2009)

*    Finding Low-Utility Data Structures. G. Xu, N. Mitchell, M. Arnold, A. Rountev, E. Schonberg, and G. Sevitsky. (PLDI 2010)

*    Brainy: Effective Selection of Data Structures. C. Jung, S. Rus, B. P. Railing, N. Clark, and S. Pande. (PLDI 2011)

Optimizing Compiler

*    Dynamic Feedback: An Effective Technique for Adaptive Computing. P. C. Diniz and M. C. Rinard. (PLDI 1997)

*    Thin Locks: Featherweight Synchronization for Java. D. F. Bacon, R. Konuru, C. Murthy, and M. Serrano. (PLDI 1998)

*    The Jalapeño Dynamic Optimizing Compiler for Java. M. G. Burke, J. D. Choi, S. Fink, D. Grove, M. Hind, V. Sarkar, M. J. Serrano, V. C. Sreedhar, H. Srinivasan, and J. Whaley. (JAVA 1999)

*    Partial Method Compilation using Dynamic Profile Information. J. Whaley. (OOPSLA 2000)

*    Dynamo: A Transparent Dynamic Optimization System. V. Bala, E. Duestewald, and S. Banerjia. (PLDI 00)

*    Adaptive Optimization in the Jalapeño JVM. M. Arnold, S. Fink, D. Grove, M. Hind, P. F. Sweeney. (OOPSLA 2000)

*    Dynamic Hot Data Stream Prefetching for General-Purpose Programs. T. M. Chilimbi and M. Hirzel. (PLDI 2002)

*    Adaptive Online Context-Sensitive Inlining. K. Hazelwood and D. Grove. (CGO 2003)

*    Continuous Program Optimization: A Case Study. T. Kistler and M. Franz. (TOPLAS 2003)

*    The Garbage Collection Advantage: Improving Program Locality. X. Huang,  S. M. Blackburn, K. S. McKinley, J. E. B. Moss,  Z. Wang, and P. Cheng. (OOPSLA 2004)

*    Online Performance Auditing: Using Hot Optimizations Without Getting Burned. J. Lau, M. Arnold, M. Hind, and B. Calder. (PLDI 2006)

*    Trace-based Just-in-Time Type Specialization for Dynamic Languages. A. Gal et al. (PLDI 2009)

(Mostly Single-Threaded) Execution Correctness and Security

*    Dynamically Discovering Likely Program Invariants to Support Program Evolution. M. D. Ernst, J. Cockrell, W. G. Griswold, and D. Notkin. (IEEE TSE 2001)

*    Tracking Down Software Bugs Using Automatic Anomaly Detection. S. Hangal and M. S. Lam.  (ICSE 2002)

*    Simplifying and Isolating Failure-Inducing Input. A. Zeller and R. Hildebrandt. (IEEE TSE 2002)

*    Bug Isolation via Remote Program Sampling. B. Liblit, A. Aiken, A. X. Zheng, and M. I. Jordan. (PLDI 2003)

*    DieHard: Probabilistic Memory Safety for Unsafe Languages. E. D. Berger and B. G. Zorn. (PLDI 2003)

*      DieHarder: Securing the Heap.  G. Novark and E. D. Berger. (CCS 2010)

*    CP-Miner: A Tool for Finding Copy-paste and Related Bugs in Operating System Code. Z. Li, S. Lu, S. Myagmar, and Y. Y. Zhou. (OSDI 2004)

*    Scalable Statistical Bug Isolation. B. Liblit, M. Naik, A. X. Zheng, A. Aiken, and M. I. Jordan. (PLDI 2005)

*    Rx: Treating Bugs As Allergies--A Safe Method to Survive Software Failures. F. Qin, J. Tucek, J. Sundaresan, and Y. Y. Zhou. (SOSP 2005)