Segmentation fault

related topics
{system, computer, user}
{math, number, function}
{law, state, case}

A segmentation fault (often shortened to segfault) or bus error occurs when the hardware notifies a Unix-like Operating system about a memory access violation. Then the OS kernel sends a signal to the process which caused the exception. By default the process receiving the signal dumps core and terminates. The default signal handler can also be overridden to customize how the signal is handled.[1]


Bus error

A bus error is generally an attempt to access memory that the CPU cannot physically address. Bus errors are usually signaled with the SIGBUS signal, but SIGBUS can also be caused by any general device fault that the computer detects. A bus error rarely means that the computer hardware is physically broken - it is normally caused by a bug in a program's source code.

There are two main causes of bus errors:

CPUs generally access data at the full width of their data bus at all times. To address bytes, they access memory at the full width of their data bus, then mask and shift to address the individual byte. This is inefficient, but tolerated as it is an essential feature for most software, especially string processing. Unlike bytes, larger units can span two aligned addresses and would thus require more than one fetch on the data bus. It is possible for CPUs to support this, but this functionality is rarely required directly at the machine code level, thus CPU designers normally avoid implementing it and instead issue bus errors for unaligned memory access.

Segmentation/Page fault

A segmentation fault occurs when a program attempts to access a memory location that it is not allowed to access, or attempts to access a memory location in a way that is not allowed (for example, attempting to write to a read-only location, or to overwrite part of the operating system).

Segmentation is one approach to memory management and protection in the operating system. It has been superseded by paging for most purposes, but much of the terminology of segmentation is still used, "segmentation fault" being an example. Some operating systems still have segmentation at some logical level although paging is used as the main memory management policy.

Full article ▸

related documents
System analysis
Core dump
IBM 1620 Model II
Mutual exclusion
Source Mage GNU/Linux
Visual DialogScript
Allegro library
Electrical network
HTTP 404
Abstract Window Toolkit
Modifier key
Video coding
Nautilus (file manager)
Escape sequence
Simple DirectMedia Layer
Application binary interface
Wireless Markup Language
Streaming SIMD Extensions
Macro virus (computing)
Revision Control System
Berkeley DB
Floating point unit
Java Platform, Enterprise Edition