Segmentation Fault

Segmentation Fault

Bei Computern tritt eine Schutzverletzung (v. engl. segmentation fault oder segmentation violation, kurz auch segfault) auf, wenn ein Computerprogramm auf eine Ressource (insbesondere auf Speicher) zuzugreifen versucht, die vor einem solchen Zugriff geschützt ist.

Der Umkehrschluss ist unzulässig: nicht jeder fehlerhafte Speicherzugriff löst die Ausnahmebedingung „Schutzverletzung“ aus. Ein und derselbe Programmfehler kann je nach allgemeinem Systemzustand, also in im allgemeinen nicht kontrollierbarer Weise, einen Absturz wegen Schutzverletzung auslösen, zu arithmetisch falschen Rechenergebnissen oder anderem unerwünschtes Systemverhalten führen und auch ganz folgenlos bleiben.

Die englische Bezeichnung segmentation fault stammt aus einer Zeit, in der Speicherbereiche durch Segmentierung vor unerlaubtem Zugriff geschützt wurden. Heute werden andere Schutzmechanismen verwendet, insbesondere Paging; der Terminus segmentation fault hat sich aber unverändert erhalten. Der segmentation fault ist nicht zu verwechseln mit dem page fault (Seitenfehler), der lediglich das Programm so lange unterbricht, bis die fehlende Seite in den Hauptspeicher geladen wurde.

Unter Unix löst segmentation violation die Ausnahmebedingung SIGSEGV (numerisch 11) aus.

Beispiele

Massenhaftes Auftreten von Schutzverletzungen deutet auf konzeptionelle Schwächen eines Betriebssystems, einer Programmiersprache oder eines Programms hin. Schutzverletzungen sind notorisch unter Fortran. Einem breiten Publikum in Erinnerung geblieben ist die Fehlermeldung „Allgemeine Schutzverletzung in“, gefolgt von einer Hexadezimal-Adresse, mit der Programme unter frühen Microsoft Windows-Versionen häufig abstürzten.

Ein seltenerer Grund für gehäuftes Auftreten von Schutzverletzungen kann defekter Arbeitsspeicher oder andere defekte Hardware sein. Dabei werden durch Hardwarefehler ungewollte Adressen angesprochen (z. B. reicht es, ein einzelnes Bit einer Adresse zu wechseln).

Beispiel eines C-Programmes, das so gut wie immer und auf jedem System eine Schutzverletzung auslöst:

int main(void)
{
    int *ptr = 0; // Zeiger auf die Speicheradresse 0
    *ptr = 0; // schreibe 0 in die gespeicherte Adresse
    // dieser Speicherbereich gehört jedoch nicht zum Programm und ist dadurch "geschützt" (daher Schutzverletzung)
    return 0;
}

Siehe auch

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Segmentation fault — A segmentation fault (often shortened to segfault) is a particular error condition that can occur during the operation of computer software. A segmentation fault occurs when a program attempts to access a memory location that it is not allowed to …   Wikipedia

  • Segmentation Fault — Erreur de segmentation Pour les articles homonymes, voir Segmentation. Une erreur de segmentation (en anglais segmentation fault, parfois appelé en abrégé segfault), est un plantage d une application qui a tenté d accéder à un emplacement mémoire …   Wikipédia en Français

  • Segmentation fault — Erreur de segmentation Pour les articles homonymes, voir Segmentation. Une erreur de segmentation (en anglais segmentation fault, parfois appelé en abrégé segfault), est un plantage d une application qui a tenté d accéder à un emplacement mémoire …   Wikipédia en Français

  • Segmentation fault — Ошибка сегментации (англ. Segmentation fault или сокращённо segfault)  ошибка программного обеспечения, возникающая при попытке обращения к недоступным для записи участкам памяти либо при попытке изменения памяти запрещённым способом. В системах… …   Википедия

  • segmentation fault — noun A software error that occurs when a program attempts to access a memory location that it is not permitted to access. Syn: access violation, segfault …   Wiktionary

  • Segmentation — may mean: *Market segmentation, in economics Biology *A morphogenesis process that divides a metazoan body into a series of semi repetitive segments *Segmentation (biology), the structure that results from said processComputing *Segmentation… …   Wikipedia

  • Segmentation (informatique) — Pour les articles homonymes, voir Segmentation. En informatique, la segmentation est une technique gérée par l unité de segmentation de la MMU, utilisée sur les systèmes d exploitation modernes, qui divise la mémoire physique (dans le cas de la… …   Wikipédia en Français

  • General protection fault — This article is about the x86 exception. For the webcomic, see General Protection Fault (webcomic). A general protection fault (GPF) in the Intel x86 and AMD x86 64 architectures, and other unrelated architectures, is a fault (a type of… …   Wikipedia

  • Segmention Fault — Bei Computern tritt eine Schutzverletzung (v. engl. segmentation fault oder segmentation violation, kurz auch segfault) auf, wenn ein Computerprogramm auf eine Ressource (insbesondere auf Speicher) zuzugreifen versucht, die vor einem solchen… …   Deutsch Wikipedia

  • Erreur De Segmentation — Pour les articles homonymes, voir Segmentation. Une erreur de segmentation (en anglais segmentation fault, parfois appelé en abrégé segfault), est un plantage d une application qui a tenté d accéder à un emplacement mémoire qui ne lui était pas… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”