Kernel panic
Kernel panic, em português Pânico do núcleo, é uma situação em que sistemas operacionais Unix e tipo Unix encontram um erro do qual não é possível recuperar-se de modo seguro. No sistema operacional Windows a mesma situação é apresentada com a Tela azul da morte (em inglês: Blue Screen of Death).
Há uma rotina no código fonte do Linux e dos sistemas BSD chamada panic()
, que trata uma situação de pânico do núcleo. Ela é projetada para mostrar uma mensagem no console, gravar uma imagem da memória do núcleo no disco para depuração após a falha e então aguardar o sistema ser reiniciado manualmente, ou reiniciar automaticamente. A informação fornecida para a tela é técnica, e é direcionada aos desenvolvedores de software e administradores de sistema para que possam diagnosticar o problema.
Fontes comuns de pânicos do núcleo são tentativas do sistema operacional ler endereços de memória não permitidos, ou falhas no hardware. Outro motivo é a existência de um erro no próprio sistema. Em muitos casos esta situação é induzida pelo próprio sistema, que pode continuar a operação, mesmo depois de violações de memória terem ocorrido. No entanto, nesta situação o estado do sistema é instável, e mais do que arriscar brechas de segurança ou corrupção de dados, é preferível terminar a operação para evitar mais danos, e facilitar o diagnóstico do erro.
O pânico do núcleo foi incluído numa versão inicial do Unix e demonstrou uma grande diferença de filosofia entre o Unix e o Multics. O desenvolvedor do Multics Tom van Vleck, relembra uma discussão com o desenvolvedor do Unix Dennis Ritchie:
Eu comentei com o Dennis que facilmente metade do código que eu estava escrevendo no Multics era para recuperação de erros. Ele disse: "Deixamos tudo isso de fora. Se houver um erro, temos uma rotina chamada panic, que quando é chamada, trava a máquina e você grita lá no corredor, 'Ei, reinicie.'"[1]
A função original permaneceu essencialmente inalterada desde a quinta edição do Unix até o Unix 32V baseado no VAX apenas emitindo uma mensagem de erro sem mais informações, deixando o sistema num looping infinito. Na medida em que o Unix foi melhorado, a função panic()
foi aprimorada para exibir várias informações úteis para depuração no console.