Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Abstracting runtime heaps for program understanding
Marron M., Sanchez C., Su Z., Fahndrich M. IEEE Transactions on Software Engineering39 (6):774-786,2013.Type:Article
Date Reviewed: Sep 20 2013

Every software engineer, regardless of their level of experience in the industry, has been faced with debugging a null-pointer dereference bug, and the experience is rarely one that engineers recall with fondness. Bugs in memory allocation are depressingly common; at the same time, they are difficult to comprehend and debug. Efforts to address these problems have spawned an entire sub-industry of tools to measure memory usage and debug memory bugs. These tools are largely focused on helping engineers identify potentially catastrophic failures in software caused by memory bugs. However, there is much to be gained just by improving the means for conveying the memory use patterns of a program to the engineer debugging it. Along with other tools, this can help engineers quickly identify a root cause for many memory bugs.

The authors of this paper bring together a number of simple algorithmic and visualization techniques to address the problem of visualizing pointer patterns in a program. The overall approach is based on instrumenting the program to capture snapshots of memory at various points of program execution. The pointer patterns in these snapshots are then summarized, taking advantage of static type information from the program. The summarization algorithms work by identifying equivalence classes of memory locations and are implemented efficiently using standard data structures. Another simple technique that is used effectively is the use of dominators to summarize complex memory graphs.

The most valuable takeaway is found in the heuristics the authors use to construct useful summaries of program heaps based on insights gained by experimenting with real-life programs. These heuristics and the insights motivating them are spread throughout the paper.

Reviewer:  Prahladavaradan Sampath Review #: CR141576 (1312-1113)
Bookmark and Share
 
Distributed Data Structures (E.1 ... )
 
 
Coding Tools and Techniques (D.2.3 )
 
 
Specifying And Verifying And Reasoning About Programs (F.3.1 )
 
Would you recommend this review?
yes
no
Other reviews under "Distributed Data Structures": Date
Making data structures confluently persistent
Fiat A., Kaplan H. Journal of Algorithms 48(1): 16-58, 2003. Type: Article
Aug 5 2004
LH*RS--a highly-available scalable distributed data structure
Litwin W., Moussa R., Schwarz T. ACM Transactions on Database Systems 30(3): 769-811, 2005. Type: Article
Jan 19 2006
Skip graphs
Aspnes J., Shah G. ACM Transactions on Algorithms 3(4): 37-es, 2007. Type: Article
Apr 16 2008
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy