• Documents
  • Authors
  • Tables
  • Log in
  • Sign up
  • MetaCart
  • DMCA
  • Donate

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations | Disambiguate

Establishing local temporal heap safety properties with applications to compile-time memory management. (2005)

by R Shaham, E Yahav, E Kolodner, M Sagiv
Venue:Sci. Comput. Program.,
Add To MetaCart

Tools

Sorted by:
Results 1 - 10 of 29
Next 10 →

Automatic pool allocation: improving performance by controlling data structure layout in the heap

by Chris Lattner, Vikram Adve - In Proceedings of PLDI , 2005
"... This paper describes Automatic Pool Allocation, a transformation framework that segregates distinct instances of heap-based data structures into seperate memory pools and allows heuristics to be used to partially control the internal layout of those data structures. The primary goal of this work is ..."
Abstract - Cited by 82 (9 self) - Add to MetaCart
This paper describes Automatic Pool Allocation, a transformation framework that segregates distinct instances of heap-based data structures into seperate memory pools and allows heuristics to be used to partially control the internal layout of those data structures. The primary goal of this work is performance improvement, not automatic memory management, and the paper makes several new contributions. The key contribution is a new compiler algorithm for partitioning heap objects in imperative programs based on a context-sensitive pointer analysis, including a novel strategy for correct handling of indirect (and potentially unsafe) function calls. The transformation does not require type safe programs and works for the full generality of C and C++. Second, the paper describes several optimizations that exploit data structure partitioning to fur-ther improve program performance. Third, the paper evaluates how memory hierarchy behavior and overall program performance are impacted by the new transformations. Using a number of bench-marks and a few applications, we find that compilation times are extremely low, and overall running times for heap intensive pro-grams speed up by 10-25 % in many cases, about 2x in two cases, and more than 10x in two small benchmarks. Overall, we believe this work provides a new framework for optimizing pointer inten-sive programs by segregating and controlling the layout of heap-based data structures.
(Show Context)

Citation Context

...ge of work on techniques for stack allocation of heap objects as well as techniques for static garbage collection, both of which are based on analyzing the lifetimes of objects in programs (e.g., see =-=[6, 42, 31]-=- and the references therein). These techniques do not attempt to analyze or control the layout of logical data structures in the heap per se, and are largely orthogonal to our work. A minor exception ...

Interprocedural shape analysis for cutpointfree programs

by Noam Rinetzky, Mooly Sagiv, Eran Yahav - In International Static Analysis Symposium (SAS , 2005
"... We present a framework for interprocedural shape analysis, which is context-and flow-sensitive with the ability to perform destructive pointer updates. We limit our attention to cutpoint-free programs—programs in which reasoning on a proce-dure call only requires consideration of context reachable f ..."
Abstract - Cited by 42 (8 self) - Add to MetaCart
We present a framework for interprocedural shape analysis, which is context-and flow-sensitive with the ability to perform destructive pointer updates. We limit our attention to cutpoint-free programs—programs in which reasoning on a proce-dure call only requires consideration of context reachable from the actual param-eters. For such programs, we show that our framework is able to perform an effi-cient modular analysis. Technically, our analysis computes procedure summaries as transformers from inputs to outputs while ignoring parts of the heap not rele-vant to the procedure. This makes the analysis modular in the heap and thus allows reusing the effect of a procedure at different call-sites and even between different contexts occurring at the same call-site. We have implemented a prototype of our framework and used it to verify interesting properties of cutpoint-free programs,
(Show Context)

Citation Context

...ections). While many programs are not cutpoint-free, we observe that a reasonable number of programs, including all examples used in [13, 19, 34] are cutpoint-free, as well as many of the programs in =-=[12, 37]-=-. One of the key observations in this paper, is that we can exploit cutpoint-freedom to construct an interprocedural shape analysis algorithm that efficiently reuses procedure summaries. In this paper...

Verifying Safety Properties using Separation and Heterogeneous Abstractions

by Eran Yahav, G. Ramalingam - IN PROCEEDINGS OF THE SIGPLAN ’04 CONFERENCE ON PROGRAM LANGUAGE DESIGN AND IMPLEMENTATION , 2004
"... In this paper, we show how separation (decomposing a verification problem into a collection of verification subproblems) can be used to improve the efficiency and precision of verification of safety properties. We present a simple language for specifying separation strategies for decomposing a singl ..."
Abstract - Cited by 30 (6 self) - Add to MetaCart
In this paper, we show how separation (decomposing a verification problem into a collection of verification subproblems) can be used to improve the efficiency and precision of verification of safety properties. We present a simple language for specifying separation strategies for decomposing a single verification problem into a set of subproblems. (The strategy specification is distinct from the safety property specification and is specified separately.) We present a general framework of heterogeneous abstractions that allows different parts of the heap to be abstracted using different degrees of precision at different points during the analysis. We show how the goals of separation (i.e., more efficient verification) can be realized by first using a separation strategy to transform (instrument) a verification problem instance (consisting of a safety property specification and an input program), and by then utilizing heterogeneous abstraction during the verification of the transformed verification problem.

Efficiently and precisely locating memory leaks and bloat

by Gene Novark, Emery D. Berger, Benjamin G. Zorn - Conference on Programming Language Design and Implementation , 2009
"... Inefficient use of memory, including leaks and bloat, remain a significant challenge for C and C++ developers. Applications with these problems become slower over time as their working set grows and can become unresponsive. At the same time, memory leaks and bloat remain notoriously difficult to deb ..."
Abstract - Cited by 22 (0 self) - Add to MetaCart
Inefficient use of memory, including leaks and bloat, remain a significant challenge for C and C++ developers. Applications with these problems become slower over time as their working set grows and can become unresponsive. At the same time, memory leaks and bloat remain notoriously difficult to debug, and comprise a large number of reported bugs in mature applications. Previous tools for diagnosing memory inefficiencies—based on garbage collection, binary rewriting, or code sampling—impose high overheads (up to 100X) or generate many false alarms. This paper presents Hound, a runtime system that helps track down the sources of memory leaks and bloat in C and C++ applications. Hound employs data sampling, a staleness-tracking approach based on a novel heap organization, to make it both precise and efficient. Hound has no false positives, and its runtime and space overhead are low enough that it can be used in deployed applications. We demonstrate Hound’s efficacy across a suite of synthetic benchmarks and real applications.
(Show Context)

Citation Context

...o analyses that can eliminate memory leaks in Java: the first detects dead entries in arrays that will never be read in the future [28], while the second uses shape analysis to detect dead references =-=[29]-=-. Lattner and Adve propose pool allocation, a transformation that can statically eliminate some leaks in C/C++ applications via points-to set liveness [13]. VM-techniques for memory management Appel a...

GC Assertions: Using the Garbage Collector to Check Heap Properties

by Edward Aftandilian, et al. , 2008
"... This paper introduces GC assertions, a system interface that programmers can use to check for errors, such as data structure invariant violations, and to diagnose performance problems, such as memory leaks. GC assertions are checked by the garbage collector, which is in a unique position to gather i ..."
Abstract - Cited by 17 (3 self) - Add to MetaCart
This paper introduces GC assertions, a system interface that programmers can use to check for errors, such as data structure invariant violations, and to diagnose performance problems, such as memory leaks. GC assertions are checked by the garbage collector, which is in a unique position to gather information and answer questions about the lifetime and connectivity of objects in the heap. We introduce several kinds of GC assertions, and we describe how they are implemented in the collector. We also describe our reporting mechanism, which provides a complete path through the heap to the offending objects. We show results for one type of assertion that allows the programmer to indicate that an object should be reclaimed at the next GC. We find that using this assertion we can quickly identify a memory leak and its cause with negligible overhead.

Safe and flexible memory management in Cyclone

by Michael Hicks, Greg Morrisett, Dan Grossman, Trevor Jim , 2003
"... Cyclone is a type-safe programming language intended for applications requiring control over memory management. Our previous work on Cyclone included support for stack allocation, lexical region allocation, and a garbage-collected heap. We achieved safety (i.e., prevented dangling pointers) through ..."
Abstract - Cited by 15 (2 self) - Add to MetaCart
Cyclone is a type-safe programming language intended for applications requiring control over memory management. Our previous work on Cyclone included support for stack allocation, lexical region allocation, and a garbage-collected heap. We achieved safety (i.e., prevented dangling pointers) through a region-based type-and-effects system. This paper describes some new memory-management mechanisms that we have integrated into Cyclone: dynamic regions, unique pointers, and reference-counted objects. Our experience shows that these new mechanisms are well suited for the timely recovery of objects in situations where it is awkward to use lexical regions. Crucially, programmers can write reusable functions without unnecessarily restricting callers’ choices among the plethora of memory-management options. To achieve this goal, Cyclone employs a combination of polymorphism and scoped constructs that temporarily let us treat objects as if they were allocated in a lexical region. 1.
(Show Context)

Citation Context

...event dangling-pointer dereferences. Finally, sophisticated interprocedural analyses are starting to appear to detect leaks (e.g., [26]) or more generally reason about temporal heap properties (e.g., =-=[36]-=-). It is not yet clear if they are cheap enough to run on every compilation or if they can give the strong safety guarantees of Cyclone’s intraprocedural analysis, especially in the presence of thread...

Combining shape analyses by intersecting abstractions

by Gilad Arnold, Roman Manevich, Mooly Sagiv, Ran Shaham - In Verification, Model Checking and Abstract Interpretation (VMCAI , 2006
"... ..."
Abstract - Cited by 13 (4 self) - Add to MetaCart
Abstract not found
(Show Context)

Citation Context

...ver used after line 10. The second facts[1] x = null; [2] while (...) { [3] y = new SLL(); [4] y.val = ...; [5] y.n = x; [6] x = y; } [7] y = x; // can insert "x = null;" here [8] while (y != null) { =-=[9]-=- System.out.print(y.val); [10] t = y.n; // can insert "free y;" or "y.n = null;" here [11] y = t; } Fig. 1: A program that creates a singly-linked list and traverses its elements is more challenging t...

A survey of static analysis methods for identifying security vulnerabilities in software systems

by M. Pistoia, S. Chandra, S. J. Fink, E. Yahav , 2007
"... In this paper we survey static analysis methods for identifying security vulnerabilities in software systems. We cover three areas that have been associated with sources of security vulnerabilities: access-control, information-flow, and application-programming-interface conformance. Because access c ..."
Abstract - Cited by 12 (0 self) - Add to MetaCart
In this paper we survey static analysis methods for identifying security vulnerabilities in software systems. We cover three areas that have been associated with sources of security vulnerabilities: access-control, information-flow, and application-programming-interface conformance. Because access control mechanisms fall into two major categories, stack-based access control and role-based access control, we discuss static analysis techniques for these two areas of access control separately. Similarly, security violations pertaining to information flow consist of integrity violations and confidentiality violations, and consequently, our discussion of static analysis techniques for information-flow vulnerabilities includes these two topics. For each type of security vulnerability we present our findings in two parts: in the first part we describe recent research results, and in the second part we illustrate implementation techniques by describing selected static analysis algorithms.

Effective interprocedural resource leak detection

by Emina Torlak, Satish Chandra - in ICSE ’10, 2010
"... Garbage collection relieves programmers from the burden of explicit memory management. However, explicit manage-ment is still required for finite system resources, such as I/O streams, fonts, and database connections. Failure to release unneeded system resources results in resource leaks, which can ..."
Abstract - Cited by 8 (0 self) - Add to MetaCart
Garbage collection relieves programmers from the burden of explicit memory management. However, explicit manage-ment is still required for finite system resources, such as I/O streams, fonts, and database connections. Failure to release unneeded system resources results in resource leaks, which can lead to performance degradation and system crashes. In this paper, we present a new tool, Tracker, that per-forms static analysis to find resource leaks in Java programs. Tracker is an industrial-strength tool that is usable in an interactive setting: it works on millions of lines of code in a matter of minutes and it has a low false positive rate. We describe the design, implementation and evaluation of Tracker, focusing on the features that make the tool scal-able and its output actionable by the user.
(Show Context)

Citation Context

...lysis does not consider aliasing, inter-procedural paths, or nested resources. Static analysis of resource leaks relies on analysis of a dynamic location liveness property as defined by Shaham et al. =-=[22]-=-. Shaham et al. presented a conservative static analysis based on canonical abstraction to verify safety of synthesized free operations for dynamically allocated objects. A similar analysis could be u...

Memory Leaks Detection in Java by Bi-Abductive Inference.

by Dino Distefano , Ivana Filipović , 2010
"... Abstract. This paper describes a compositional analysis algorithm for statically detecting leaks in Java programs. The algorithm is based on separation logic and exploits the concept of bi-abductive inference for identifying the objects which are reachable but no longer used by the program. ..."
Abstract - Cited by 7 (0 self) - Add to MetaCart
Abstract. This paper describes a compositional analysis algorithm for statically detecting leaks in Java programs. The algorithm is based on separation logic and exploits the concept of bi-abductive inference for identifying the objects which are reachable but no longer used by the program.
(Show Context)

Citation Context

...ary, here we have defined a framework which works for different kind of data structures representable by abstract predicates. A static analysis for detecting unused (garbage) objects is introduced in =-=[24]-=-. This analysis is similar to ours in its aim. However, the two approaches are sub-stantially different. The authors use finite state automata to encode safety properties of objects (for example “the...

Powered by: Apache Solr
  • About CiteSeerX
  • Submit and Index Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2019 The Pennsylvania State University