Electric Fence

Electric Fence (or eFence) is a memory debugger written by Bruce Perens. It consists of a library which programmers can link into their code to override the C standard library memory management functions. eFence triggers a program crash when the memory error occurs, so a debugger can be used to inspect the code that caused the error.

Electric Fence is intended to find two common types of programming bugs:

  • Overrunning the end (or beginning) of a dynamically allocated buffer
  • Using a dynamically allocated buffer after returning it to the heap

In both cases, Electric Fence causes the errant program to abort immediately via a segmentation fault. Normally, these two errors would cause heap corruption, which would manifest itself only much later, usually in unrelated ways. Thus, Electric Fence helps programmers find the precise location of memory programming errors.

Electric Fence allocates at least two pages (often 8KB) for every allocated buffer. In some modes of operation, it does not deallocate freed buffers. Thus, Electric Fence vastly increases the memory requirements of programs being debugged. This leads to the recommendation that programmers should apply Electric Fence to smaller programs when possible, and should never leave Electric Fence linked against production code.

Electric Fence is free software licensed under the GNU General Public License. Last version (2.1.13) was released 2003-12-07.

Famous quotes containing the words electric fence, electric and/or fence:

    The widest prairies have electric fences....
    Philip Larkin (1922–1986)

    Suddenly I’m not half the girl
    I used to be.
    There’s a shadow hanging over me . . .
    From me to you out of my electric devil....
    Anne Sexton (1928–1974)

    Processions that lack high stilts have nothing that catches the eye.
    What if my great-granddad had a pair that were twenty foot high,
    And mine were but fifteen foot, no modern stalks upon higher,
    Some rogue of the world stole them to patch up a fence or a fire.
    William Butler Yeats (1865–1939)