Detect Unintended Memory Access

DUMA (Detect Unintended Memory Access) is an open-source library (under GNU General Public License) to detect buffer overruns and under-runs in C and C++ programs. This library is a fork of Buce Perens Electric Fence library and adds some new features to it.

Features of the DUMA library:

  • “Overloads” all standard memory allocation functions like malloc(), calloc(), memalign(), strdup(), operator new, operator new[] and also their counterpart deallocation functions like free(), operator delete and operator delete[]
  • Utilizes the MMU (memory management unit) of the CPU:
    allocates and protects an extra memory page to detect any illegal access beyond the top of the buffer (or bottom, at the user’s option)
  • Stops the program at exactly that instruction, which does the erroneous access to the protected memory page, allowing location of the defectice source code in a debugger
  • Detects erroneous writes at the non-protected end of the memory block at deallocation of the memory block
  • Detects mismatch of allocation/deallocation functions: f.e. allocation with malloc() but deallocation with operator delete
  • Leak detection: detect memory blocks which were not deallocated until program exit
  • Runs on Linux / U*ix and MS Windows NT/2K/XP operating systems
  • Preloading of the library on Linux (and some U*ix) systems allowing tests without necessity of changing source code or recompilation

The latest version are available at the DUMA project page at Sourceforge.net

About Author