Pular para o conteúdo
Campanário dos Sinais

/static/campanario/sino/sigbus/

Menu

SIG-011 · Falhas do programa

SIGBUS

Erro de barramento: o endereço até existe — o acesso é que não pode.

O primo raro do SIGSEGV, com uma distinção fina: no SEGV o endereço não está mapeado; no BUS o mapeamento existe, mas o acesso físico é inválido. O nome vem das máquinas em que o barramento de memória recusava acessos desalinhados — coisa que o x86 tolera e outras arquiteturas, não.

No Linux de hoje, o jeito mais comum de ouvi-lo é via mmap: mapear um arquivo e tocar uma página além do fim — porque outro processo o truncou embaixo dos seus pés. Bancos de dados que mapeiam arquivos tratam este sino com respeito.

$ ./leitor-mmap dados.bin &
$ truncate -s 0 dados.bin
Bus error (core dumped)
(a página mapeada perdeu o arquivo que a sustentava)
O arquivo encolheu; o mapeamento ficou no ar.