Pantalla azul (Blue Screen of Death) de Windows, mitos, leyendas urbanas y realidades.
Un problema que ocurre con cierta frecuencia al utilizar Windows es la famosa “pantalla azul” o la “blue screen of death”. Aunque es un problema que ha disminuido su frecuencia, aún es común. La mayoría atribuye esto a un error de Windows concluyendo que es un sistema operativo poco fiable creando con esto una mala reputación que no necesariamente es real.
Pocos saben qué es lo que pasa realmente cuando ocurre este problema (y ciertamente no tendrían porque saberlo ni tener conocimientos técnicos profundos), pero la gran mayoría de las veces que se presenta este error es por causas completamente ajenas a Windows en sí mismo, y más bien es provocado por drivers defectuosos (desarrollados incorrectamente o incompatibles) o a errores de alguna aplicación de terceros.
No es el objetivo de este post hacer una apología, ya que al final del día un sistema operativo debería ser capaz de protegerse a sí mismo ante tales circunstancias y no dejar de funcionar por completo, sin embargo, sí es el objetivo demostrar que no siempre el error es Windows como tal. Esto utilizando herramientas disponibles para todos de forma gratuita y en un proceso que toma menos de 5 minutos. Es un proceso que puede parecer complicado, pero que en realidad es bastante sencillo y trataré de explicar de la forma más simple.
Entrando en materia, si se observa bien cuando ocurre este error, la pantalla azul además de desplegar mensajes indescifrables para cualquiera que no sea uno de los programadores de Windows, ejecuta un proceso que “vacía” el contenido de la memoria RAM a un archivo en el disco duro. El progreso de este proceso se puede ver en las líneas inferiores (“Beginning dump of physical memory”):
Por default, el archivo generado se guarda en la siguiente ruta:
%SystemRoot%\MEMORY.DMP
La mayoría de las veces:
“c:\Windows\MEMORY.DMP”
Este archivo contiene datos valiosos sobre el instante en que ocurrió el error que provocó la pantalla azul. De hecho, contiene información para hacer debugging (depuración) de Windows como tal. Cualquiera que haya programado alguna vez en su vida sabe que el objetivo de hacer debugging es encontrar errores en el código para corregirlos. En este caso, este archivo es utilizado por programadores que desarrollan drivers dispositivos de hardware por ejemplo para encontrar errores en sus productos.
Para poder analizar este archivo, es necesario utilizar la herramienta WinDebug (WinDbg) disponible para descarga gratuita en el sitio de Microsoft en http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx (Versiones para 32 bits y 64 bits).
Una vez instalada la herramienta, hay que localizar el archivo del dump (MEMORY.DMP). Después, abrir WinDbg y configurar los símbolos de la siguiente forma: File->Symbol File Path…
En la ventana que aparece despues, especificar la siguiente línea:
SRV*c:\symbols*http://msdl.microsoft.com/download/symbols
Para no agregar complejidad innecesaria al post omitiré la explicación de que son los "symbols", pero para más informaciónal respecto: http://msdn.microsoft.com/en-us/library/cc266473.aspx
Este paso es vital, ya que de esta forma estamos configurando WinDbg para que descargue archivos necesarios para la depuración y los guarde en nuestro disco duro en una carpeta existente.
Una vez configurados los símbolos, abrimos el archivo MEMORY.DMP:
Aparecerá un mensaje preguntando si queremos guardar el workspace. Como en este caso lo único que queremos es encontrar el culpable de la pantalla azul, damos clic en “No”:
A continuación empezará el cargado del archivo. Es necesario tener conexión a internet, ya que los simbolos se irán descargando conforme se vallan necesitando. Una vez terminada la carga del archivo del dump, tendremos una pantalla así:
En este momento Windbg está listo y en espera de un comando. Para nuestro fin, la mayoría de las veces bastara con teclear:
- !analyze -v
en la línea de comandos y después presionar la tecla <Enter>:
El resultado de la ejecución de este comando, es una pantalla donde se encuentra la información recaba en el momento de la pantalla azul. En este ejemplo, esta resaltado en amarillo las líneas que revelan al culpable de la pantalla azul: Un proceso llamado “avp.exe”, mejor conocido como Kaspersky Antivirus.
WinDbg brinda opciones mucho más avanzadas que salen del objetivo de este post, sin embargo, he aquí la liga desde la cual se puede partir:
Debugging Tools for Windows