Publicado por Javier Guerrero, 28 Abril, 2010
Una de las características de Windows más odiadas, temidas y vilipendiadas por cualquier usuario, es el pantallazo azul, también conocido como BSOD, siglas de “Blue Screen Of Death”. Efectivamente, el BSOD es todo un incordio, y no sólo para el usuario sino también para nosotros, los desarrolladores : -)
En este artículo explicaremos de forma relativamente sencilla qué son los BSOD y qué los puede provocar, pero por desgracia no podremos garantizar la forma de evitarlos, algo prácticamente imposible debido a su propia naturaleza.
Una cuestión de error
Cualquier software que se ejecuta en un ordenador, ya sea una aplicación, un controlador de dispositivos, un antivirus, o el mismo sistema operativo, es susceptible de fallar, por los motivos más diversos: un error de programación, una situación de corrupción de archivos, un escenario no contemplado por el código, o incluso algún problema de hardware. Algunos errores son considerados como “leves” (entendiendo el término “leve” como “asumible por el software que lo sufre”) y otros de mayor importancia e incluso críticos. Los BSOD pertenecen a este último grupo de errores.
Normalmente, cuando un error “crítico” se produce a nivel de aplicación, en lo que conocemos como la “capa de usuario”, la situación suele manejarse sin problemas, apareciendo algún mensaje de error y finalizando el proceso en cuestión.
Sin embargo, cuando el error crítico ocurre en el nivel más “interno” del sistema operativo, en lo que conocemos como la “capa de kernel”, la cosa es muy diferente, ya que se está produciendo una situación anómala en la parte más frágil de todo el sistema operativo, lo que establece un escenario de inestabilidad y le impide continuar con garantías su flujo de proceso. Es entonces cuando el sistema nos lanza su pantalla azul, que es la forma que tiene Windows de notificar esta circunstancia.
¿Se puede sacar algo en claro de un BSOD?
En un pantallazo azul, el sistema intenta aportar cierta información sobre el problema; lo malo es que su contenido es tan técnico y tan específico y dependiente del error en cuestión, que para cualquier usuario sin los conocimientos adecuados, no es más que un galimatías sin sentido.
No obstante, algo sí que se puede sacar en claro, y es el nombre del módulo que ha causado (o en cuyo contexto se ha producido) el fallo.
Para cualquier usuario este último dato, sin ser fidedigno al cien por cien, es el más útil ya que nos aporta una pista de dónde puede estar la causa del problema.
Por ejemplo, si obtenemos un pantallazo azul que haga referencia al driver de la tarjeta gráfica, eso nos permite descartar otras posibilidades y centrarnos en dicho componente; es posible que se deba a un error de programación en el controlador que maneja el dispositivo, pero también el BSOD puede ser realmente un síntoma de posible problema físico en dicho dispositivo.
¿Por qué tengo que reiniciar después de un BSOD?
Es razonable preguntarse por qué Windows no ignora el error y continúa el flujo de ejecución del kernel. Pues sencillamente, para evitar males mayores. El sistema prefiere ir sobre seguro y no arriesgar en una parte tan sensible como es el kernel del sistema operativo.
Algunos datos curiosos o poco conocidos
Para terminar este artículo, me ha parecido interesante comentar algunos aspectos curiosos sobre los BSOD.
¿Sabías que….?
- En contra de lo que muchos pueden pensar, Microsoft se toma muy en serio los errores que se producen en el sistema. Tienen una enorme infraestructura para la recogida de errores, y un departamento dedicado exclusivamente a estudiar los informes de problemas enviados por los usuarios, y las cifras que maneja la empresa son mareantes: se analizan los errores remitidos por una cantidad brutal de máquinas, cuya media es superior a 400 millones de PCS.
- Las conclusiones de dichos estudios son bastante sorprendentes: por ejemplo, la inmensa mayoría de BSODs son causados por drivers (ya sean filtros de monitorización o auténticos controladores de dispositivos) pertenecientes a productos ajenos a la compañía, incluso por ejemplares de malware que se ejecuta en la capa kernel. El resto son producidos por fallos de hardware, y una mínima parte son bugs del propio sistema operativo. De esto se deduce que Windows por sí mismo no es tan inestable como habitualmente se cree.
- Existe la posibilidad de que el módulo cuyo nombre se muestra en el BSOD no sea el auténtico causante del problema. Efectivamente, no es inusual que la responsabilidad de un error crítico sea achacada a drivers cuyas especiales características de funcionamiento les hace estar “en el peor sitio y en el peor momento”; en la Unidad de Interceptación de Panda ya nos hemos encontrado varias veces con esta situación.
- Es perfectamente posible que, como usuario, nunca hayas visto un pantallazo azul en tu sistema, pero ¿en alguna ocasión no te ha pasado que el PC se ha reiniciado solo? Pues eso significa que has experimentado un error crítico, sólo que no has podido verlo porque tu Windows está configurado para reiniciarse automáticamente ante un error crítico. Este comportamiento es configurable desde el Panel de Control en la opción Sistema desde la pestaña Inicio y recuperación utilizando la opción Reiniciar automáticamente.
Pues hasta aquí el artículo sobre los tan odiados pantallazos azules.
Si tenéis dudas o comentarios, este blog queda a vuestra entera disposición.
Un saludo,
Javier Guerrero
Dept. Desarrollo I+D
18 comments
Hola Luis Enrique:
Gracias por participar en nuestro blog. Si tu consulta está relacionada con la instalación de un producto antivirus Panda en tu equipo y te da problemas de BSOD dirígete a nuestro Foro de Soporte Técnico, y los técnicos de Panda te ayudarán http://soporte.pandasecurity.com/foro.
Un saludo,
Blanca Carton
ola que tal se ve qque sabes mucho sobre esto nomas una pregunta como hago apra reparar mi maquina ya que tambine sufre de los pantallasos azules i como me doy cuenta de que programa es el que esta fallando o como me doy cuenta de que programa no es compatible mi maquina es una acer, 32 bits, 3gb ram le instale el windows 7 ultimate espero tu respuesta gracias!!!
Hola Luis Enrique:
Gracias por participar en nuestro blog. Si tu consulta está relacionada con la instalación de un producto antivirus Panda en tu equipo y te da problemas de BSOD dirígete a nuestro Foro de Soporte Técnico, y los técnicos de Panda te ayudarán http://soporte.pandasecurity.com/foro.
Un saludo,
Blanca Carton
Hola de nuevo Javier y muchas gracias por tus consejos.
Al final el problema está en win32k.sys aunque googleando un poco este fallo es muy genérico ya que es del sistema operativo y no parece que tenga que ver mucho con factores “externos”.
Estoy mirando (http://multingles.net/docs/jmt/bsod.htm) para ver si saco algo en claro.
Gracias de nuevo
Un saludo
Hola Mario,
Pues lo primero debe ser determinar cuál es el componente que está provocando el problema; para ello puedes tratar de localizarlo tú mismo, aprovechando la información que expongo en el post. Si no encuentras el módulo responsable del problema, puedes emplear alguna de esas herramientas que comentas.
Y en el peor de los casos, puedes aplicar el viejo método de ensayo y error: ir desinstalando aplicaciones y probando hasta que el problema desaparezca. Con un poco de suerte, descubrirás al culpable.
Suerte!
Hola Mario,
Pues lo primero debe ser determinar cuál es el componente que está provocando el problema; para ello puedes tratar de localizarlo tú mismo, aprovechando la información que expongo en el post. Si no encuentras el módulo responsable del problema, puedes emplear alguna de esas herramientas que comentas.
Y en el peor de los casos, puedes aplicar el viejo método de ensayo y error: ir desinstalando aplicaciones y probando hasta que el problema desaparezca. Con un poco de suerte, descubrirás al culpable.
Suerte!
Gracias por la información Javier, pero podrías decirme si hay alguna herramienta que no requiera muchos conocimientos (WinDbg) para investigar sobre los BSODS,
Tengo una licencia (comprada obviamente) para Windows 7 Ultimate para 32 bits y no sé si el problema se lo tengo que comunicar al soporte técnico de MS o el problema lo he provocado yo al instalar algún driver o programa externo como tú comentas.
El problema del BSOD en Windows 7 siempre me pasa cuando tengo Internet Explorer 8 abierto con muchas ventanas y por lo que parece crashea porque consume toda la memoria ram 😉
¿Es esto normal? Que debería de hacer? Por lo visto en nirsoft.net hay varios programas para saber que proceso ha podido fallar.
Y eso sería todo 😉
Muchas gracias
He aquí una curiosa comparación de cómo se organizan los procesos vitales de un organismo vivo y los de un kernel de sistema operativo más bien monolítico (aunque modular): http://www.microsiervos.com/archivo/ciencia/por-que-ordenadores-cuelgan-mas-a-menudo-que-tu.html
Es bastante curioso descubrir que la forma en que se estructura un núcleo de sistema operativo de tipo microkernel se parezca más a la de un organismo vivo: Un número limitado de funciones controla una amplia base de procesos que actúan de forma independiente.
Hola Carlos,
Sí, es curioso el paralelismo.
Gracias por comentar.
Olvidaba comentar una cosa: Si es cierto que buena parte de los servicios corren en el espacio de núcleo, la única respuesta que se me ocurre es que se hace así para reducir la latencia. En ese caso, mi opinión es que, con las máquinas que manejamos hoy en día, es preferible perder algo de eficiencia y ganar en estabilidad.
Hoy en día encontramos muchos sistemas operativos que trabajan con microkernels que tienen muy en cuenta esta separación, y que seguramente les permite ser más estables (Hurd, L4, y hasta el propio Amiga OS, entre otros). Mac OS X utiliza, de hecho, la combinación Mach/BSD, y creo que la plataforma Windows NT posee un núcleo híbrido parecido a Mach.
Olvidaba comentar una cosa: Si es cierto que buena parte de los servicios corren en el espacio de núcleo, la única respuesta que se me ocurre es que se hace así para reducir la latencia. En ese caso, mi opinión es que, con las máquinas que manejamos hoy en día, es preferible perder algo de eficiencia y ganar en estabilidad.
Hoy en día encontramos muchos sistemas operativos que trabajan con microkernels que tienen muy en cuenta esta separación, y que seguramente les permite ser más estables (Hurd, L4, y hasta el propio Amiga OS, entre otros). Mac OS X utiliza, de hecho, la combinación Mach/BSD, y creo que la plataforma Windows NT posee un núcleo híbrido parecido a Mach.
Hola Carlos,
Gracias por tus comentarios.
Efectivamente, de hecho si no recuerdo mal, Microsoft tenía un prototipo de sistema operativo (no recuerdo su nombre) cuyo kernel se reducía a la mínima expresión, y los controladores corrían en la capa de usuario.
Y en cuanto a lo comentas de la latencia, efectivamente el tener tantos controladores en el núcleo mejora el rendimiento; de hecho, antes de NT 4, el manejo de la parte gráfica se hacía en usuario, pero se trasladó a kernel para ganar en rendimiento. Esa decisión, por cierto, fue muy criticada en su momento, por lo que podía significar para la estabilidad del sistema.
Excelente artículo, Javier.
O mucho me equivoco, o esto se podría evitar aún más si la mayoría de los servicios se ejecutasen en el espacio de usuario. Con un microkernel y los servicios corriendo de este modo, la solución drástica de tener que reiniciar el equipo sería probablemente menos necesaria, y probablemente bastaría con reiniciar el driver conflictivo.
Creo que Windows actualmente usa un núcleo híbrido, pero no tengo claro por qué se siguen ejecutando tantos drivers en el espacio núcleo. ¿Acaso las aplicaciones y drivers no tienen suficiente con las interfaces provistas por el sistema? ¿Alumbras un poco el camino para los que conocemos poco el modo en que funcionan los sistemas Windows a bajo nivel?
Brillante, claro y didáctico. Felicitaciones para Javier.
Lo utilizaré para distribuirlo en los canales de la región.
Un saludo. Marcelo
Gracias Marcelo. No dudes en utilizarlo y distribuirlo de la manera que consideres oportuno.