PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Garbage collection: algorithms for automatic dynamic memory management
Garbage collection: algorithms for automatic dynamic memory management
Proceedings of the 29th annual ACM/IEEE international symposium on Microarchitecture
Visualizing interactions in program executions
ICSE '97 Proceedings of the 19th international conference on Software engineering
Exploiting hardware performance counters with flow and context sensitive profiling
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
Eraser: a dynamic data race detector for multi-threaded programs
Proceedings of the sixteenth ACM symposium on Operating systems principles
A portable sampling-based profiler for Java virtual machines
Proceedings of the ACM 2000 conference on Java Grande
Adaptive optimization in the Jalapeño JVM
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Efficient and precise datarace detection for multithreaded object-oriented programs
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Parameterized object sensitivity for points-to and side-effect analyses for Java
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Adaptive online context-sensitive inlining
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
Ulterior reference counting: fast garbage collection without a long wait
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Fast, accurate call graph profiling
Software—Practice & Experience
Myths and realities: the performance impact of garbage collection
Proceedings of the joint international conference on Measurement and modeling of computer systems
Low-overhead memory leak detection using adaptive statistical profiling
ASPLOS XI Proceedings of the 11th international conference on Architectural support for programming languages and operating systems
Proceedings of the 4th international symposium on Memory management
HPCA '05 Proceedings of the 11th International Symposium on High-Performance Computer Architecture
Low-overhead call path profiling of unmodified, optimized code
Proceedings of the 19th annual international conference on Supercomputing
RaceTrack: efficient detection of data race conditions via adaptive tracking
Proceedings of the twentieth ACM symposium on Operating systems principles
Pruning dynamic slices with confidence
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Accurate, efficient, and adaptive calling context profiling
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
The DaCapo benchmarks: java benchmarking development and analysis
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
AVIO: detecting atomicity violations via access interleaving invariants
Proceedings of the 12th international conference on Architectural support for programming languages and operating systems
Bell: bit-encoding online memory leak detection
Proceedings of the 12th international conference on Architectural support for programming languages and operating systems
Cork: dynamic memory leak detection for garbage-collected languages
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
MultiRace: efficient on-the-fly data race detection in multithreaded C++ programs: Research Articles
Concurrency and Computation: Practice & Experience - Parallel and Distributed Systems: Testing and Debugging (PADTAD)
Using Valgrind to detect undefined value errors with bit-precision
ATEC '05 Proceedings of the annual conference on USENIX Annual Technical Conference
Valgrind: a framework for heavyweight dynamic binary instrumentation
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Goldilocks: a race and transaction-aware java runtime
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
How to shadow every byte of memory used by a program
Proceedings of the 3rd international conference on Virtual execution environments
Towards dynamic interprocedural analysis in JVMs
VM'04 Proceedings of the 3rd conference on Virtual Machine Research And Technology Symposium - Volume 3
Effective prefetch for mark-sweep garbage collection
Proceedings of the 6th international symposium on Memory management
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Precise memory leak detection for java software using container profiling
Proceedings of the 30th international conference on Software engineering
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Velodrome: a sound and complete dynamic atomicity checker for multithreaded programs
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Proceedings of the 14th international conference on Architectural support for programming languages and operating systems
FastTrack: efficient and precise dynamic race detection
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
LiteRace: effective sampling for lightweight data-race detection
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Efficiently and precisely locating memory leaks and bloat
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
How a Java VM can get more from a hardware performance monitor
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Breadcrumbs: efficient context sensitivity for dynamic bug detection analyses
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
PACER: proportional detection of data races
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Precise calling context encoding
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Pick your contexts well: understanding object-sensitivity
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Mining hot calling contexts in small space
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Proceedings of the 9th International Conference on Principles and Practice of Programming in Java
Barriers reconsidered, friendlier still!
Proceedings of the 2012 international symposium on Memory Management
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Hi-index | 0.00 |
State-of-the-art dynamic bug detectors such as data race and memory leak detectors report program locations that are likely causes of bugs. However, programmers need more than static program locations to understand the behavior of increasingly complex and concurrent software. Dynamic calling context provides additional information, but it is expensive to record calling context frequently, e.g., at every read and write. Context-sensitive dynamic analyses can build and maintain a calling context tree (CCT) to track calling context--but in order to reuse existing nodes, CCT-based approaches require an expensive lookup. This paper introduces a new approach for context sensitivity that avoids this expensive lookup. The approach uses a new data structure called the calling context uptree (CCU) that adds low overhead by avoiding the lookup and instead allocating a new node for each context. A key contribution is that the approach can mitigate the costs of allocating many nodes by extending tracing garbage collection (GC): GC collects unused CCU nodes naturally and efficiently, and we extend GC to merge duplicate nodes lazily. We implement our CCU-based approach in a high-performance Java virtual machine and integrate it with a staleness-based memory leak detector and happens-before data race detector, so they can report context-sensitive program locations that cause bugs. We show that the CCU-based approach, in concert with an extended GC, provides a compelling alternative to CCT-based approaches for adding context sensitivity to dynamic analyses.