@inproceedings{b18f4af124fc41bcaa731490944aadf6,
title = "MG++: Memory graphs for analyzing dynamic data structures",
abstract = "Memory graphs are very useful in understanding the behavior of programs that use dynamically allocated data structures. We present a new memory graph representation, MG++, and a memory graph construction algorithm, that greatly enhance the utility of memory graphs. First, in addition to capturing the shapes of dynamically-constructed data structures, MG++ also captures how they evolve as the program executes and records the source code statements that play a role in their evolution to assist in debugging. Second, MG++ captures the history of actions performed by the memory allocator. This is useful in debugging programs that internally manage storage or in cases where understanding program behavior requires examining memory allocator actions. Our binary instrumentation-based algorithm for MG++ construction does not rely on the knowledge of memory allocator functions or on symbol table information. Our algorithm works for custom memory allocators as well as for in-program memory management. Experiments studying the time and space efficiency for real-world programs show that MG++ representation is space-efficient and the time overhead for MG++ construction algorithm is practical. We show that MG++ is effective for fault location and for analyzing binaries to detect heap buffer overflow attacks.",
keywords = "buffer overflow attacks, evolution history, fault location, memory allocator history, memory graph",
author = "Vineet Singh and Rajiv Gupta and Iulian Neamtiu",
note = "Publisher Copyright: {\textcopyright} 2015 IEEE.; 22nd IEEE International Conference on Software Analysis, Evolution, and Reengineering, SANER 2015 ; Conference date: 02-03-2015 Through 06-03-2015",
year = "2015",
month = apr,
day = "8",
doi = "10.1109/SANER.2015.7081839",
language = "English (US)",
series = "2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering, SANER 2015 - Proceedings",
publisher = "Institute of Electrical and Electronics Engineers Inc.",
pages = "291--300",
booktitle = "2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering, SANER 2015 - Proceedings",
address = "United States",
}