Desde los tiempos de Winning Eleven, he sido fiel seguidor de Pro Evolution Soccer (PES), primero en la consola de Play Station y luego en el PC hasta el son de hoy. Aunque ya no lo hago todos los días, con regularidad entro en las noches para jugar un rato después de trabajo. Para mi fortuna, casi nunca tengo problemas con la plataforma de Steam, sin importar que estoy instalando todas las compilaciones que salen del programa de Windows Insider; sin embargo, ayer iba a jugar en la noche y me di cuenta de que el juego no estaba entrando, solo aparecía la pantalla blanca y se cerraba:
Después de revisar actualizaciones de Windows y hacer un reinicio del equipo, probé yendo a las propiedades del juego en Steam, pestaña de Local Files y utilicé la opción de Verify itegrity of ame files:
En principio parece que iba a funcionar porque hace reparaciones si encuentra algo raro, pero la pantalla blanca solo se prolongó por unos segundos más antes de cerrarse inesperadamente otra vez. Como no estaba dispuesto a ponerme a descargar otra vez un juego tan pesado sin saber si solucionaría el inconveniente, decidí ponerme a diagnosticar para intentar encontrar la forma de volver a jugar.
Lo primero que hice fue verificar si el juego se estaba cerrando completamente, para eso abrí Process Explorer, fui al menú de Options, luego Difference Highlighting Duration y lo establecí a lo máximo, es decir, 9 segundos, para poder alcanzar a ver cuáles procesos se cerraban mientras cambiaba entre aplicaciones.
Efectivamente, me encontré con que el juego se estaba cerrando abruptamente después de que desaparecía la ventana en blanco:
El otro detalle importante es que también se estaba activando el reporte de errores de Windows, WerFault.exe, que me indicaba que estaba sucediendo un crash de la aplicación:
¿Qué estaba impidiendo la ejecución del juego? Pues bien, existen muchos motivos por los que una aplicación puede hacer crash al ejecutarse, incluso diferentes soluciones; una de las formas más productivas para encontrar la causa es obtener un volcado de memoria del proceso en el momento del fallo y proceder a analizarlo con un depurador como Windbg. No es una tarea muy sencilla por lo técnico que puede volverse, pero generalmente solo se necesitan algunos conocimientos básicos para dar con la pista del problema.
Procdump, al rescate
Procdump es una herramienta que hace parte de la suite de Sysinternals y que permite generar volcado de memoria según los parámetros que le indiquemos al proceso que debe de monitorear: excepciones, hangs, etc. Para no complicarme tanto organizando los parámetros, en parte porque no soy muy bueno con la herramienta, opté por utilizar el parámetro –i para instalar el controlador de Procdump indicando la ruta donde quería los volcados para que él mismo me escribiera uno cada que hubiese una excepción en Windows. El comando completo es:
procdump.exe –i C:Dumps
La ruta final puede ser cualquiera, yo traté de mantenerlo simple.
Tan pronto intenté jugar nuevamente, la pantalla se puso blanca, la aplicación se cerró y Procdump hizo lo suyo: crear el volcado de memoria que necesitaba.
Windbg
Con el volcado de memoria ya creado, procedí a ejecutar Windbg, abrir el .DMP que había generado el Procdump y finalmente corrí el comando de !analyze –v para que hiciera un análisis automático:
Normalmente el análisis que hace Windbg se acerca mucho al controlador o módulo que ocasiona la falla, aunque puede llegar a reportar varios que no están dentro de los símbolos:
Lo malo de esto es que muchas veces salen falsos positivos porque indica controladores o componentes propios del sistema operativo como desconocidos.
La forma más fácil de identificar el posible causante es mostrar la pila de ejecución que había al momento del crash y empezar desde la función que le indica a Windows que debe detenerse hacia abajo hasta encontrar controladores o módulos de terceros para analizar con más detalles. En mi caso, encontré dos: NvCamera64 y nvwgf2umx.
Windbg permite utilizar el comando lmvm para obtener detalles de cada controlador o módulo. Al ejecutarlo con cada uno, me di cuenta de que pertenecían a NVIDIA:
Aunque el primero no tenía la descripción, el segundo, nvwgf2umx, indicaba que era del controlador de D3D10.
Imagino yo que no funcionaba alguna actualización de PES 2019 o la última compilación de Windows, así que mi camino fue ir al GeForce Experience y buscar a ver si existía un nuevo controlador; efectivamente, no hace mucho habían liberado otra versión:
Después de hacer una instalación limpia desde el asistente y reiniciar Windows, ejecuté nuevamente el juego y, para mi tranquilidad, todo había vuelto a la normalidad:
Una vez más, todo salvado gracias a estas maravillosas herramientas y un poco de investigación.
Saludos,
—Checho
Source: https://geeks.ms/checho
Muchos tenemos ese problema, que no carga, apenas aparece la pantalla blanca, luego se cierra. Tanto en PES 2019, 2020.