Crash (computação) - Crash (computing)

Um kernel panic exibido em um iMac . Esta é a forma mais comum de falha do sistema operacional em sistemas do tipo Unix.

Na computação , um travamento ou travamento do sistema ocorre quando um programa de computador, como um aplicativo de software ou sistema operacional, para de funcionar corretamente e é encerrado . Em alguns sistemas operacionais ou aplicativos individuais, um serviço de relatório de falha relatará a falha e quaisquer detalhes relacionados a ela (ou dará ao usuário a opção de fazê-lo), geralmente para o (s) desenvolvedor (es) do aplicativo. Se o programa for uma parte crítica do sistema operacional, todo o sistema pode travar ou travar, geralmente resultando em um kernel panic ou erro fatal do sistema .

A maioria das falhas é resultado de um bug de software . As causas típicas incluem acessar endereços de memória inválidos , valores de endereço incorretos no contador do programa , estouro de buffer , sobrescrever uma parte do código do programa afetado devido a um bug anterior, executar instruções de máquina inválidas (um opcode ilegal ) ou disparar uma exceção não tratada . O bug de software original que iniciou essa cadeia de eventos é normalmente considerado a causa da falha, que é descoberta por meio do processo de depuração . O bug original pode ser removido do código que realmente desencadeou a falha.

Nos primeiros computadores pessoais, a tentativa de gravar dados em endereços de hardware fora da memória principal do sistema poderia causar danos ao hardware. Algumas falhas podem ser exploradas e permitem que um programa malicioso ou hacker execute código arbitrário, permitindo a replicação de vírus ou a aquisição de dados que normalmente seriam inacessíveis.

O aplicativo trava

Um monitor no Aeroporto de Frankfurt executando um programa no Windows XP que falhou devido a uma violação de acesso de leitura de memória

Um aplicativo normalmente falha ao executar uma operação que não é permitida pelo sistema operacional. O sistema operacional então dispara uma exceção ou sinal no aplicativo. Os aplicativos Unix tradicionalmente respondiam ao sinal despejando o núcleo . A maioria dos aplicativos Windows e Unix GUI respondem exibindo uma caixa de diálogo (como a mostrada à direita) com a opção de anexar um depurador, se houver um instalado. Alguns aplicativos tentam se recuperar do erro e continuam a execução em vez de sair .

Um aplicativo também pode conter código para travar após detectar um erro grave.

Os erros típicos que resultam em travamentos de aplicativos incluem:

  • tentativa de ler ou gravar memória que não está alocada para leitura ou gravação por esse aplicativo (por exemplo, falha de segmentação , falha de proteção geral específica de x86 )
  • tentativa de executar instruções privilegiadas ou inválidas
  • tentativa de realizar operações de I / O em dispositivos de hardware para os quais não tem permissão de acesso
  • passando argumentos inválidos para chamadas de sistema
  • tentativa de acessar outros recursos do sistema para os quais o aplicativo não tem permissão para acessar
  • tentativa de executar instruções de máquina com argumentos incorretos (dependendo da arquitetura da CPU): divisão por zero , operações em número denormal ou valores NaN (não um número), acesso à memória para endereços não alinhados , etc.

Crash to desktop

Diz-se que uma "queda no desktop" ocorre quando um programa (normalmente um videogame ) é encerrado inesperadamente, levando o usuário de volta ao desktop de forma abrupta . Normalmente, o termo é aplicado apenas a travamentos onde nenhum erro é exibido, portanto, tudo o que o usuário vê como resultado do travamento é a área de trabalho. Muitas vezes, não há nenhuma ação aparente que cause um travamento na área de trabalho. Durante o funcionamento normal, o programa pode congelar por um período mais curto de tempo e, em seguida, fechar sozinho. Além disso, durante o funcionamento normal, o programa pode se tornar uma tela preta e reproduzir repetidamente os últimos segundos do som (dependendo do tamanho do buffer de dados ) que estava sendo reproduzido antes de travar na área de trabalho. Outras vezes, pode parecer que foi disparado por uma determinada ação, como carregar uma área.

Erros de travamento na área de trabalho são considerados particularmente problemáticos para os usuários. Como eles freqüentemente não exibem nenhuma mensagem de erro, pode ser muito difícil rastrear a origem do problema, especialmente se os momentos em que ocorrem e as ações que ocorrem imediatamente antes do acidente não parecem ter nenhum padrão ou terreno comum. Uma maneira de rastrear a origem do problema dos jogos é executá-los no modo de janela. O Windows Vista possui um recurso que pode ajudar a rastrear a causa de um problema de CTD quando ele ocorre em qualquer programa. O Windows XP também inclui um recurso semelhante.

Alguns programas de computador, como StepMania e Bamzooki da BBC , também travam na área de trabalho se estiverem em tela inteira, mas exibem o erro em uma janela separada quando o usuário retorna à área de trabalho.

Falha do servidor web

O software que executa o servidor da web por trás de um site pode travar, tornando-o totalmente inacessível ou fornecendo apenas uma mensagem de erro em vez do conteúdo normal.

Por exemplo: se um site estiver usando um banco de dados SQL (como MySQL ) para um script (como PHP ) e o servidor de banco de dados SQL travar, o PHP exibirá um erro de conexão.

Falha do sistema operacional

Uma tela azul da morte, conforme exibida no Windows XP, Vista e 7
Um kernel panic conforme exibido no OS X Mountain Lion

Uma falha do sistema operacional geralmente ocorre quando ocorre uma exceção de hardware que não pode ser tratada . As falhas do sistema operacional também podem ocorrer quando a lógica de verificação de integridade interna do sistema operacional detecta que o sistema operacional perdeu sua autoconsistência interna.

Os sistemas operacionais multitarefa modernos, como Linux e macOS , geralmente permanecem ilesos quando um programa de aplicativo falha.

Alguns sistemas operacionais, por exemplo, z / OS , têm recursos para confiabilidade, disponibilidade e capacidade de manutenção (RAS) e o sistema operacional pode se recuperar da falha de um componente crítico, seja devido a falha de hardware, por exemplo, erro ECC incorrigível ou falha de software , por exemplo, uma referência a uma página não atribuída.

Implicações de segurança e privacidade das falhas

Dependendo do aplicativo, a falha pode conter informações confidenciais e privadas do usuário. Além disso, muitos bugs de software que causam travamentos também podem ser explorados para execução arbitrária de código e outros tipos de escalonamento de privilégios . Por exemplo, um estouro de buffer de pilha pode sobrescrever o endereço de retorno de uma sub-rotina com um valor inválido, o que causará, por exemplo, uma falha de segmentação , quando a sub-rotina retornar. No entanto, se um exploit sobrescrever o endereço de retorno com um valor válido, o código naquele endereço será executado.

Reprodução de falhas

Quando as falhas são coletadas em campo usando um relator de falhas , a próxima etapa para os desenvolvedores é ser capaz de reproduzi-las localmente. Para isso, existem várias técnicas: o STAR usa execução simbólica, o MuCrash altera o código de teste do aplicativo que travou e o EvoCrash realiza uma busca evolutiva.

Veja também

Notas

Referências

links externos