Error fatal

Cuando un programa cualquier que tenemos instalado en nuestro ordenador se queda “colgado”, significa que algo ha ido mal durante la ejecución del software. El sistema operativo suele reconocer que hay un serio problema teniendo lugar y elimina la aplicación de una manera lo más limpia posible.

Cuando lo hace, el sistema operativo mostrará un mensaje poco tranquilizador diciendo que hay un error fatal de excepción, normalmente junto a una larga lista de números hexadecimales que nos dicen poco, aunque útiles para los programadores. La otra manera para que un programa pueda ser recuperado es el que solemos hacer muchas veces, que es reiniciar el ordenador y volver a arrancar la aplicación.

Aunque no hay nada que podamos hacer con estos mensajes informativos que nos aparecen en pantalla, puede ser interesante al menos saber lo que significan. Aunque hay muchos mensajes de este tipo, hay algunos que son más comunes y que posiblemente veremos con más frecuencias. Como se ha comentado, el que suele darnos un “susto” cuando estamos trabajando con nuestro equipo, es el error fatal de excepción. ¿Qué significa esto realmente?

Una aplicación cualquier que tengamos en nuestro ordenador, como por ejemplo el programa de office Excel, está construido con muchas capas y componentes. Hay un núcleo en el OS, una capa de servicios en el propio sistema operativo, una capa de encapsulación sobre el sistema de servicios, cientos de librerías de software, funciones internas y los conocidos archivos DLL, y finalmente la capa principal de la aplicación.

Muchos sistemas operativos modernos  y sus lenguajes, soportan conceptos de programación como las excepciones y el manejo de excepciones. Las excepciones permiten a las diferentes capas comunicarse los problemas entre ellos. Por ejemplo, digamos que un programa necesita memoria, por lo que le pregunta al sistema operativo el reservar un bloque de memoria.

Si el sistema operativo es incapaz de dar la memoria pedida (porque el bloque pedido es demasiado grande, o porque el sistema está bajo de memoria), lanzará una excepción de memoria a la capa que a hecho la petición. Varias capas pueden continuar lanzando la excepción a las capas superiores.

En algún punto del proceso, alguna de las capas necesita “capturar la excepción” y enfrentarse al problema. El programa necesita decir “tenemos un problema y nos estamos quedando sin memoria, y hay que informar al usuario con una ventana de error”.

Si el programa falla en capturar la excepción (porque el programador, por el motivo que sea, no escribió el código para manejar esa excepción en concreto), la excepción recorre todo el camino hasta las capas más altas, y el sistema operativo reconoce que tiene una excepción “sin manejar”. El OS entonces cierra el programa. Un software bien diseñado puede manejar estas excepciones sin problemas.

Otro error común es al fallo de página inválida. Un programa usa memoria RAM para almacenar datos. Por ejemplo, cuando cargas un documento de Word, las grandes partes del archivo que estás editando ocupan espacio en la memoria RAM. Según el programa necesita más memoria, pide más bloques de memoria de específicos tamaños al sistema operativo.

El programa recuerda la localización de cada bloque usando un puntero. Si el programa trata de escribir datos a una localización más allá de la terminación de un bloque de memoria, o el programa se queda confuso y trata de acceder a un bloque que no existe usando un puntero erróneo, el sistema operativo puede ver que eso ocurre y generar una “página de error” o “error de segmentación”. El sistema operativo cierra el programa por que la aplicación no sabe lo que está haciendo.

Un error de operación ilegal es otro de estos fallos que nos pueden aparecer en algún momento., Un microprocesador tiene un infinito número de instrucciones que puede comprender, y cada instrucción es representada por un número conocido por “opcode”. Dependiendo de la cifra de estos números, puede significar añadir, multiplicar o lo que sea. Si el microprocesador esta ejecutando un programa y llega a un opcode que no reconoce o que no puede ejecutar por el estado actual en el que está, entonces el microprocesador se detiene y se queja.

El sistema operativo gestiona esta queja cerrando el programa que ha iniciado el problema. Los opcode ilegales normalmente viene de un software saltando a una localización de memoria que no contiene una información de programa válida.

Todos estos problemas están causados por errores humanos por parte del programador. El programador puede no haber sido lo suficientemente cuidadoso de capturar la excepción o permitir el programa acceder a una memoria errónea.

Algunas veces, la raíz del problema es la incompetencia o la inexperiencia, pero en muchos casos es la complejidad de los programas que tenemos hoy en día. Hay cientos de excepciones y millones de bloques de memoria que un programa maneja en un entorno intrincado y formado por capas. Un movimiento en falso, y la aplicación puede hacer saltar un error fatal.

Dejar respuesta

Please enter your comment!
Please enter your name here

El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.