• DocumentCode
    3105932
  • Title

    Practical memory checking with Dr. Memory

  • Author

    Bruening, Derek ; Zhao, Qin

  • Author_Institution
    Google, Mountain View, CA, USA
  • fYear
    2011
  • fDate
    2-6 April 2011
  • Firstpage
    213
  • Lastpage
    223
  • Abstract
    Memory corruption, reading uninitialized memory, using freed memory, and other memory-related errors are among the most difficult programming bugs to identify and fix due to the delay and non-determinism linking the error to an observable symptom. Dedicated memory checking tools are invaluable for finding these errors. However, such tools are difficult to build, and because they must monitor all memory accesses by the application, they incur significant overhead. Accuracy is another challenge: memory errors are not always straightforward to identify, and numerous false positive error reports can make a tool unusable. A third obstacle to creating such a tool is that it depends on low-level operating system and architectural details, making it difficult to port to other platforms and difficult to target proprietary systems like Windows. This paper presents Dr. Memory, a memory checking tool that operates on both Windows and Linux applications. Dr. Memory handles the complex and not fully documented Windows environment, and avoids reporting false positive memory leaks that plague traditional leak locating algorithms. Dr. Memory employs efficient instrumentation techniques; a direct comparison with the state-of-the-art Valgrind Memcheck tool reveals that Dr. Memory is twice as fast as Memcheck on average and up to four times faster on individual benchmarks.
  • Keywords
    program debugging; software tools; storage allocation; Dr Memory; Linux; Windows; dedicated memory checking tools; freed memory; leak locating algorithms; low-level operating system; memory accesses; memory corruption; memory errors; memory-related errors; practical memory checking; programming bugs; reading uninitialized memory; Instruments; Kernel; Libraries; Monitoring; Registers; Resource management; Wrapping; Dynamic Optimization; Memory Checking; Shadow Memory;
  • fLanguage
    English
  • Publisher
    ieee
  • Conference_Titel
    Code Generation and Optimization (CGO), 2011 9th Annual IEEE/ACM International Symposium on
  • Conference_Location
    Chamonix
  • Print_ISBN
    978-1-61284-356-8
  • Electronic_ISBN
    978-1-61284-358-2
  • Type

    conf

  • DOI
    10.1109/CGO.2011.5764689
  • Filename
    5764689