Signal: Segmentation Violation (SegmentationFault)

This is raised when the program attempts has a bad memory reference such as:

  • The pointer is NULL.
  • Address not mapped to object (eg, the memory is unallocated, and unmapped by the OS)
  • Invalid Permission for mapped object (accessing memory that permissions deny).

This is almost invariably a programming fault.

The default action for this signal is to cause the program to terminate and dump core.

A classic example is to dereference a pointer in C that is either uninitialised, or has already been freed. Here is some C code:

#include <stdio.h>
int main(void) {
    int *pointer;

    pointer = 0;

    printf("Value pointed to by pointer is %d\n",
        *pointer /* this will cause SEGV */

See CommonProgrammingBugs for hints on how to track down memory related bugs in the SourceCode.