Loading AI tools
Da Wikipédia, a enciclopédia livre
Falha de segmentação (segmentation fault, também referido por segfault) é um erro que ocorre em programa quando este tenta acessar (para leitura ou escrita) um endereço na memória RAM que está reservado para outro programa (ou o próprio sistema operativo) ou que não existe.
Este artigo não cita fontes confiáveis. (Dezembro de 2013) |
Nos sistemas Unix ou Unix-like quando acontece este tipo de erro, o sinal SIGSEGV é enviado ao programa, permitindo ao usuário saber que houve segmentation fault, normalmente depois disto as informações úteis para um futuro debug são gravadas no ficheiro core (core dump).
Esse tipo de falha pode indicar vulnerabilidades como Buffer Overflow numa aplicação.
O seguinte programa, escrito em Linguagem C, gera uma falha de segmentação ao ser executado
# include <stdlib.h>
int main(void)
{
char *p = NULL; /* p é um ponteiro para caractere que inicializa apontando para "lugar nenhum" */
* p = 'x'; /* Tenta gravar o caracter 'x' em endereço nenhum (o ponteiro p não aponta para qualquer endereço) */
return 0;
}
Compilado e executado no NetBSD ou no Linux, a seguinte saída (saída) é gerada:
$ cc -g3 -o segfault segfault.c
$ ./segfault
Segmentation fault
Executando o GDB para fazer o debug:
Program received signal SIGSEGV, Segmentation fault.
0x080487b0 in main () at segfault.c:4
4 *p = 'x';
(gdb) bt
# 0 0x080487b0 in main () at segfault.c:4
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.