Crash (informática) - Crash (computing)

Un pánico del kernel que se muestra en un iMac . Esta es la forma más común de falla del sistema operativo en sistemas similares a Unix.

En informática , un bloqueo , o bloqueo del sistema , ocurre cuando un programa de computadora, como una aplicación de software o un sistema operativo, deja de funcionar correctamente y se cierra . En algunos sistemas operativos o aplicaciones individuales, un servicio de informes de fallas informará la falla y cualquier detalle relacionado con ella (o le dará al usuario la opción de hacerlo), generalmente al desarrollador (es) de la aplicación. Si el programa es una parte crítica del sistema operativo, todo el sistema puede fallar o bloquearse, lo que a menudo resulta en un pánico del kernel o un error fatal del sistema .

La mayoría de los bloqueos son el resultado de un error de software . Las causas típicas incluyen acceder a direcciones de memoria no válidas , valores de dirección incorrectos en el contador del programa , desbordamiento del búfer , sobrescribir una parte del código del programa afectado debido a un error anterior, ejecutar instrucciones de máquina no válidas (un código de operación ilegal ) o desencadenar una excepción no controlada . El error de software original que inició esta cadena de eventos generalmente se considera la causa del bloqueo, que se descubre a través del proceso de depuración . El error original puede estar muy lejos del código que realmente provocó el bloqueo.

En las primeras computadoras personales, intentar escribir datos en direcciones de hardware fuera de la memoria principal del sistema podría dañar el hardware. Algunas fallas son explotables y permiten que un programa malintencionado o un pirata informático ejecute código arbitrario que permita la replicación de virus o la adquisición de datos que normalmente serían inaccesibles.

Fallos de la aplicación

Una pantalla en el aeropuerto de Frankfurt que ejecuta un programa bajo Windows XP que se ha bloqueado debido a una infracción de acceso de lectura de memoria

Una aplicación normalmente se bloquea cuando realiza una operación que no está permitida por el sistema operativo. A continuación, el sistema operativo activa una excepción o señal en la aplicación. Las aplicaciones Unix respondían tradicionalmente a la señal volcando el núcleo . La mayoría de las aplicaciones GUI de Windows y Unix responden mostrando un cuadro de diálogo (como el que se muestra a la derecha) con la opción de adjuntar un depurador si hay uno instalado. Algunas aplicaciones intentan recuperarse del error y continúan ejecutándose en lugar de salir .

Una aplicación también puede contener código que se bloquee después de detectar un error grave.

Los errores típicos que provocan fallas en la aplicación incluyen:

  • intentar leer o escribir memoria que no está asignada para lectura o escritura por esa aplicación (por ejemplo, falla de segmentación , falla de protección general específica de x86 )
  • intentar ejecutar instrucciones privilegiadas o inválidas
  • intentar realizar operaciones de E / S en dispositivos de hardware a los que no tiene permiso para acceder
  • pasar argumentos inválidos a las llamadas al sistema
  • intentar acceder a otros recursos del sistema a los que la aplicación no tiene permiso para acceder
  • intentar ejecutar instrucciones de máquina con malos argumentos (dependiendo de la arquitectura de la CPU): dividir por cero , operaciones en valores de números desnormales o NaN (no un número), acceso a la memoria a direcciones no alineadas , etc.

Crash en el escritorio

Se dice que un "bloqueo del escritorio" ocurre cuando un programa (comúnmente un videojuego ) se cierra inesperadamente, lo que lleva al usuario de regreso al escritorio de forma abrupta . Por lo general, el término se aplica solo a los bloqueos donde no se muestra ningún error, por lo tanto, todo lo que el usuario ve como resultado del bloqueo es el escritorio. Muchas veces no hay ninguna acción aparente que provoque un bloqueo en el escritorio. Durante el funcionamiento normal, el programa puede congelarse por un período de tiempo más corto y luego cerrarse solo. También durante el funcionamiento normal, el programa puede convertirse en una pantalla negra y reproducir repetidamente los últimos segundos de sonido (dependiendo del tamaño del búfer de datos ) que se estaba reproduciendo antes de que se bloquee en el escritorio. En otras ocasiones, puede parecer que se desencadena por una determinada acción, como cargar un área.

Los errores de bloqueo en el escritorio se consideran particularmente problemáticos para los usuarios. Dado que con frecuencia no muestran ningún mensaje de error, puede ser muy difícil rastrear la fuente del problema, especialmente si las veces que ocurren y las acciones que tienen lugar justo antes del accidente no parecen tener ningún patrón o terreno común. Una forma de localizar el origen del problema de los juegos es ejecutarlos en modo ventana. Windows Vista tiene una función que puede ayudar a localizar la causa de un problema CTD cuando ocurre en cualquier programa. Windows XP también incluyó una característica similar.

Algunos programas de computadora, como StepMania y Bamzooki de la BBC , también se bloquean en el escritorio si están en pantalla completa, pero muestran el error en una ventana separada cuando el usuario regresa al escritorio.

Fallos del servidor web

El software que ejecuta el servidor web detrás de un sitio web puede fallar, haciéndolo inaccesible por completo o proporcionando solo un mensaje de error en lugar del contenido normal.

Por ejemplo: si un sitio está usando una base de datos SQL (como MySQL ) para un script (como PHP ) y ese servidor de base de datos SQL falla, PHP mostrará un error de conexión.

Fallos del sistema operativo

Una pantalla azul de la muerte como se muestra en Windows XP, Vista y 7
Un pánico del kernel como se muestra en OS X Mountain Lion

Un bloqueo del sistema operativo ocurre comúnmente cuando ocurre una excepción de hardware que no se puede manejar . Los bloqueos del sistema operativo también pueden ocurrir cuando la lógica interna de verificación de cordura dentro del sistema operativo detecta que el sistema operativo ha perdido su autoconsistencia interna.

Los sistemas operativos multitarea modernos, como Linux y macOS , generalmente permanecen ilesos cuando un programa de aplicación falla.

Algunos sistemas operativos, por ejemplo, z / OS , tienen funciones de confiabilidad, disponibilidad y capacidad de servicio (RAS) y el sistema operativo puede recuperarse del bloqueo de un componente crítico, ya sea debido a una falla de hardware, por ejemplo, un error de ECC incorregible o una falla de software. , por ejemplo, una referencia a una página no asignada.

Implicaciones de seguridad y privacidad de los bloqueos

Dependiendo de la aplicación, el bloqueo puede contener información confidencial y privada del usuario. Además, muchos errores de software que causan bloqueos también se pueden aprovechar para la ejecución de código arbitrario y otros tipos de escalada de privilegios . Por ejemplo, un desbordamiento del búfer de pila puede sobrescribir la dirección de retorno de una subrutina con un valor no válido, lo que provocará, por ejemplo, una falla de segmentación , cuando la subrutina regrese. Sin embargo, si un exploit sobrescribe la dirección de retorno con un valor válido, se ejecutará el código en esa dirección.

Reproducción de choque

Cuando los choques se recopilan en el campo utilizando un reportero de choques , el siguiente paso para los desarrolladores es poder reproducirlos localmente. Para ello, existen varias técnicas: STAR utiliza ejecución simbólica, MuCrash muta el código de prueba de la aplicación que se ha bloqueado y EvoCrash realiza una búsqueda evolutiva.

Ver también

Notas

Referencias

enlaces externos