Crash (informática)

Salida inesperada del programa debido a un error

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

En informática , un fallo o caída del sistema se produce cuando un programa informático, 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 notificación de fallos informará del fallo y de cualquier detalle relacionado con él (o dará al usuario la opción de hacerlo), normalmente al desarrollador o desarrolladores de la aplicación. Si el programa es una parte crítica del sistema operativo, todo el sistema puede bloquearse o colgarse, lo que a menudo da como resultado un pánico del núcleo o un error fatal del sistema .

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

En las primeras computadoras personales, intentar escribir datos en direcciones de hardware fuera de la memoria principal del sistema podía causar daños al hardware. Algunas fallas se pueden aprovechar y permiten que un programa malicioso o un hacker ejecute código arbitrario , lo que permite la replicación de virus o la adquisición de datos que normalmente serían inaccesibles.

La aplicación se bloquea

Una pantalla en el aeropuerto de Frankfurt que ejecuta un programa con Windows XP que se ha bloqueado debido a una violació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. El sistema operativo entonces activa una excepción o señal en la aplicación. Las aplicaciones Unix tradicionalmente respondían 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 para bloquearse [b] después de detectar un error grave.

Los errores típicos que provocan bloqueos de 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 no válidas
  • Intentar realizar operaciones de E/S en dispositivos de hardware a los que no tiene permiso de acceso.
  • Pasar argumentos no válidos a las llamadas del sistema
  • Intentar acceder a otros recursos del sistema a los que la aplicación no tiene permiso de acceso.
  • intentar ejecutar instrucciones de máquina con argumentos incorrectos (dependiendo de la arquitectura de la CPU): dividir por cero , operaciones en valores numéricos desnormalizados o NaN (no un número), acceso a memoria a direcciones no alineadas , etc.

Bloqueo en el escritorio

Se dice que un "bloqueo en el escritorio" ocurre cuando un programa (comúnmente un videojuego ) se cierra inesperadamente, llevando abruptamente al usuario de regreso al escritorio . Por lo general, el término se aplica solo a bloqueos en los que 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 una acción aparente que cause 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 por sí 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 audio ) que se estaban reproduciendo antes de que se bloquee en el escritorio. Otras veces puede parecer que se activa 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 se llevan a cabo justo antes del bloqueo no parecen tener ningún patrón o punto en común. Una forma de rastrear la fuente del problema en los juegos es ejecutarlos en modo ventana. Windows Vista tiene una función que puede ayudar a rastrear la causa de un problema de CTD cuando ocurre en cualquier programa. [ aclaración necesaria ] Windows XP también incluía una función similar. [ aclaración necesaria ]

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.

El servidor web se bloquea

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

Por ejemplo: si un sitio utiliza 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.

El sistema operativo se bloquea

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

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

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

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

Final anormal

Un final anormal o ABEND es una terminación anormal del software o un bloqueo del programa. Los errores o bloqueos en el sistema operativo de red Novell NetWare se denominan normalmente ABEND. En Internet surgieron comunidades de administradores de NetWare , como abend.org.

Este uso deriva de la macro ABEND de los sistemas operativos IBM OS/360 , ..., z/OS . Generalmente se escribe con mayúscula, pero puede aparecer como "abend". Algunos códigos ABEND comunes son System ABEND 0C7 (excepción de datos) y System ABEND 0CB ( división por cero ). [1] [2] [3] Los Abend pueden ser "suaves" (permiten la recuperación automática) o "duros" (finalizan la actividad). [4] Se afirma jocosamente que el término deriva de la palabra alemana "Abend", que significa "tarde". [5]

Implicaciones de los accidentes en materia de seguridad y privacidad

Dependiendo de la aplicación, el fallo puede contener información confidencial y privada del usuario . [6] Además, muchos errores de software que causan fallos también son explotables para la ejecución de código arbitrario y otros tipos de escalada de privilegios . [7] [8] Por ejemplo, un desbordamiento de 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, un fallo 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 accidentes

Cuando se recopilan los fallos en el campo mediante un reportero de fallos , el siguiente paso para los desarrolladores es poder reproducirlos localmente. Para ello, existen varias técnicas: STAR utiliza la ejecución simbólica, [9] EvoCrash realiza una búsqueda evolutiva. [10]

Véase también

Notas

  1. ^ Los tipos de direcciones no válidas incluyen:
  2. ^ En OS/360 y sucesores, la aplicación normalmente utiliza una macro ABEND con un código de finalización de usuario.

Referencias

  1. ^ "ABEND" (PDF) . OS Release 21 - System/360 Operating System - Supervisor Services and Macro Instructions (PDF) (Octava edición). IBM . Septiembre de 1974. págs. 97–99. GC28-6646-7 . Consultado el 8 de julio de 2023 .
  2. ^ "0Cx - Códigos del sistema MVS de z/OS". IBM.
  3. ^ Lista de códigos ABEND Archivado el 16 de septiembre de 2018 en Wayback Machine en madisoncollege.edu
  4. ^ Parziale, Lydia (2008). Operaciones de z/VM y Linux para programadores de sistemas z/OS. IBM Redbooks. ISBN 9780738431598.página 352
  5. ^ "Abend" Archivado el 29 de septiembre de 2011 en Wayback Machine en dictionary.die.net
  6. ^ Satvat, Kiavash; Saxena, Nitesh (2018). "Privacidad en peligro: una autopsia de los informes de fallos filtrados de un navegador web". arXiv : 1808.01718 [cs.CR].
  7. ^ "Analice los fallos para encontrar vulnerabilidades de seguridad en sus aplicaciones". Msdn.microsoft.com. 26 de abril de 2007. Archivado desde el original el 11 de diciembre de 2011. Consultado el 26 de junio de 2014 .
  8. ^ "Jesse Ruderman » Errores de seguridad de memoria en código C++". Squarefree.com. 1 de noviembre de 2006. Archivado desde el original el 11 de diciembre de 2013. Consultado el 26 de junio de 2014 .
  9. ^ Chen, Ning; Kim, Sunghun (2015). "STAR: Reproducción automática de fallos basada en seguimiento de pila mediante ejecución simbólica". IEEE Transactions on Software Engineering . 41 (2): 198–220. doi :10.1109/TSE.2014.2363469. ISSN  0098-5589. S2CID  6299263.
  10. ^ Soltani, Mozhan; Panichella, Annibale; van Deursen, Arie (2017). "Un algoritmo genético guiado para la reproducción automatizada de fallos". 2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE). págs. 209–220. doi :10.1109/ICSE.2017.27. ISBN 978-1-5386-3868-2. S2CID  199514177. Archivado desde el original el 25 de enero de 2022 . Consultado el 21 de diciembre de 2020 .
  • Recoger los pedazos después de un fallo informático
Obtenido de "https://es.wikipedia.org/w/index.php?title=Crash_(informática)&oldid=1241370961"