Está en la página 1de 3

Uno de los problemas que más recibo y que pienso que más despista a la gente es un error del

tipo La instrucción en "0xnúmero_hexadecimal" hace referencia a la memoria en


"0xnúmero_hexadecimal". La memoria no se puede "written"/"read". Observe la siguiente
imagen que ilustra el error:

Mensaje de error de aplicación

Mucha gente asocia este mensaje de error con un problema con la memoria RAM, pensando
que pudiera estar dañada o que quede poca disponible. Probablemente el problema no se
deba a un módulo defectuoso de RAM.

Ese mensaje de error es la manera fea que tiene Windows XP de decir que ha ocurrido una
excepción en modo usuario porque alguna aplicación o componente ha intentado acceder a
una posición de memoria que no debería (por ejemplo, mediante un puntero erróneo). Esto se
denomina infracción de acceso y se identifica mediante el código de error c0000005.

Veamos un poco qué ocurre por dentro de Windows cuando sucede un error de este tipo

Windows debe tener un mecanismo interno que le permita actuar de algún modo cuando
ocurra una excepción no controlada en modo usuario. Para simplificar las cosas, supongamos
que se trata de un bloque try convencional que puede lanzar la excepción mediante la función
UnhandledExceptionFilter. En este momento, Windows examina el Registro para saber qué
hacer una vez ha ocurrido un error de aplicación. La clave
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug contiene un valor Auto
que le indica al sistema si debe iniciar automáticamente el depurador por defecto del sistema,
definido éste en el valor Debugger. El depurador por defecto de Windows XP es Dr Watson.

Nota: Si instala alguna aplicación relacionada con el desarrollo, es probable que ésta instale su
propio depurador. Quizá también lo establezca automáticamente como depurador por defecto
del sistema.

En este momento se carga la dll Faultrep.dll que examina el Registro para saber cómo desea el
usuario que se le informe de los errores de aplicación. La clave de Registro
HKLM\SOFTWARE\Microsoft\PCHealth\ErrorReporting contiene la información accesible desde
la interfaz gráfica de Windows en el panel Informe de errores, situado en la pestaña Opciones
avanzadas de Propiedades de sistema. Observe la siguiente imagen:
Panel Informe de errores de Windows XP

Si se desea que se muestre una intuitiva interfaz gráfica (valor ShowUI distinto de cero),
Windows cargará el proceso \WINDOWS\system32\Dwwin.exe en memoria, que es el que
muestra la típica pantalla de error de aplicación de Windows XP, mostrada en la siguiente
imagen:

Típica ventana de error de aplicación de Windows XP

Si el valor ShowUI es igual a cero, siempre obtendrá la pantalla mostrada al principio del
artículo, que no ofrece la posibilidad de ver el módulo afectado por el error ni de enviar la
información a Microsoft. Dependiendo de la aplicación que haya generado el error, es posible
que se le muestre esta pantalla pese a que utilice la configuración por defecto. No debe
preocuparse, se trata del mismo problema: una excepción no controlada en modo usuario.

¿Cómo solucionar el problema?

En primer lugar debe asegurarse de que el sistema esté libre de virus y ficheros espía. Un
sistema infectado puede producir excepciones de este tipo. En segundo lugar, revise la esquina
superior izquierda del título de la ventana de error, es posible que se haga referencia a un
fichero de terceros conocido, en cuyo caso habría que contactar con el fabricante para
informarse de si es un problema conocido o de si existe alguna solución al respecto.

Si el proceso referenciado fuese demasiado inespecífico (como por ejemplo Explorer.exe), no


queda más remedio que hacer pruebas iniciando el sistema en Modo seguro o realizar
sucesivos inicios limpios hasta dar con el posible culpable.

También es posible examinar la información registrada por el depurador de programa.

Nota: Si el proceso referenciado fuese Iexplore.exe, es posible que algún añadido (plug-in) sea
el que ha generado la excepción. Si usa Internet Explorer 7, ejecute el navegador sin
complementos y observe si se reproduce el problema. Para ejecutar el navegador sin
complementos abra Inicio, Ejecutar, escriba "%ProgramFiles%\Internet
Explorer\iexplore.exe" -extoff y pulse Aceptar.

En este caso deberá pulsar sobre Cancelar en la ventana de error para depurarlo. Abra Inicio,
Ejecutar, escriba "%AllUsers%\Datos de programa\Microsoft\Dr Watson" (con comillas) y
pulse Aceptar. Observará dos ficheros: Drwtsn32.log contiene un reporte con todos los errores
de aplicación que han sido administrados por Dr Watson. Los últimos errores recibidos se
sitúan al final de la lista. User.dmp suele ser un pequeño volcado de la memoria en el
momento del error. Este fichero se sobreescribe cada vez que ocurre un error de aplicación.
Puede cargar este fichero en cualquier depurador como Windbg
(http://www.microsoft.com/whdc/devtools/debugging/default.mspx) para examinarlo.

Espero que este artículo haya aclarado algunas dudas acerca de esa "extraña" ventana que nos
indica que la memoria no se puede "read" (o "written") y que nos podemos encontrar cuando
nos topamos con software mal diseñado en nuestro sistema.

Enviado por: Daniel Martín

También podría gustarte