Crash (informática)
En informática, un crash es la condición en la cual una aplicación informática, ya sea un programa o parte o la totalidad del sistema operativo dejan de funcionar de la forma inesperada y dejan de responder a otras partes del sistema. A veces el programa simplemente aparece como "congelado", esto es: no responde a ninguna acción del usuario o del entorno operativo. Si el programa que falla es una parte crítica del núcleo del sistema operativo, el equipo completo puede dejar de responder (crash de sistema). En lenguaje coloquial, se dice de una aplicación que lo padece, que se "congeló", "colgó", "tildó" o "pasmó".
Muchos crashes son resultado de una sola instrucción ejecutada por el equipo de cómputo, pero las causas pueden ser múltiples. Algunas causas típicas son:
- El secuenciador de instrucciones de la unidad de proceso apunta a una dirección de memoria inválida. En este caso no es extraño que el procesador intente ejecutar instrucciones aleatorias o datos en la región inválida que pretende leer. Dado que la región de memoria o los mismos datos pueden resultar ser instrucciones válidas, el programa puede intentar ejecutarlas hasta que se produzca una excepción del procesador o se sobreescriba una región de memoria vital para el sistema.
- El programa ingresa en un bucle infinito impidiendo cualquier acción del usuario o el sistema sobre él.
- En dos o más procesos concurrentes se produce una condición de carrera, y entonces el programa espera indefinidamente sin parecer hacer nada ni responder.
Etimología
editarDel inglés crash, choque. En el artículo correspondiente en inglés se cita al choque de los cabezales de lectura y escritura de un disco duro (o head crash) como origen de su uso en informática.
Crash de aplicación
editarUn crash de aplicación sucede cuando un programa ejecuta una operación que no está permitida por el sistema operativo. Algunos crashes típicos son:
- Intentar leer o escribir memoria que no ha sido ubicada para su uso por la aplicación (error de protección general).
- Intentar ejecutar instrucciones privilegiadas o inválidas.
- Circunstancias no previstas o un código mal escrito que provoque un bucle infinito.
- Intentar operaciones de entrada o salida en un dispositivo de hardware para el cual no se tienen privilegios de uso.
- Pasar argumentos no válidos a una llamada al sistema.
- Intentar acceder a otros recursos del sistema para los cuales la aplicación no tiene privilegios de uso (error de bus).
Cuando la aplicación que falla es un servidor, los programas cliente también pueden fallar.
Crash de sistema operativo
editarUn crash de sistema operativo sucede cuando se presenta una excepción de hardware que no puede ser manejada por el sistema quedando éste o el hardware en un estado inestable. Adicionalmente un crash de sistema operativo puede suceder cuando el mismo sistema operativo detecta que hay inconsistencias en él mismo dándose de baja y apagando el equipo para no causar daños mayores; en versiones tempranas de algunos sistemas operativos, los crashes de sistemas operativos podían dar lugar a daño físico del equipo.