The ability to detect and pinpoint memory-related bugs in production runs is important because in-house testing may miss bugs. This paper presents HeapMon, a heap memory bug-detection scheme that has a very low performance overhead, is automatic, and is easy to deploy. HeapMon relies on two new techniques. First, it decouples application execution from bug monitoring, which executes as a helper thread on a separate core in a chip multiprocessor system. Second, it associates a filter bit with each cached word to safely and significantly reduce bug checking frequency-by 95% on average. We test the effectiveness of these techniques using existing and injected memory bugs in SPECt2000 applications and show that HeapMon effectively detects and identifies most forms of heap memory bugs. Our results also indicate that the HeapMon performance overhead is only 5%, on average-orders of magnitude less than existing tools. Its overhead is also modest: 3.1% of the cache size and a 32-KB victim cache for on-chip filter bits and 6.2% of the allocated heap memory size for state bits, which are maintained by the helper thread as a software data structure.
HeapMon REF is a hardware/software approach for detecting memory bugs with a helper thread.
HeapMon: A helper-thread approach to programmable, automatic, and low-overhead memory bug detection
IBM J. Res. Dev.
IBM J. Res. Dev.
Materials Science Computer Science