Resolviendo los pantallazos azules en XP (Parte II)

Una vez instalado WinDbg lo ejecutamos, y antes de empezar el análisis del volcado de memoria generado automáticamente (si así configuramos tal y como vimos en la primer parte) vamos agregar dos líneas muy útiles en este programa.

Lo abrimos desde el menu Inicio > Todos los programas > Debugging Tools for Windows > WinDbg y tendremos una ventana vacía tal como esta:

001

Vamos al menú File > Symbol File Path y agregamos lo siguiente:
SRV*c:\symbols*http://msdl.microsoft.com/download/symbols

Luego en el mismo menú editamos Image File Path agregando de idéntica manera esto:
c:\windows\System32; c:\windows\system\System32; http://www.alexander.com/SymServe
002

No olvidar de presionar el botón OK en ambos casos, demás está decirles que debemos tener conexión a internet para usar este depurador, aunque si hacemos volcados completos ya dentro del archivo “.dump” estarán incluídos los binarios ejecutados en el momento del error, con lo que no bajaremos nada de internet.

Bueno, estamos listos para depurar.
Si configuramos todo correctamente lo que debemos hacer es cargar el volcado del error, si hemos seguido el tutorial, como dije anteriormente, en C:\Windows encontramos el mismo, llamado MEMORY.DUMP, para cargarlo una vez mas vamos al menú File y seleccionamos Open Crash Dump, navegamos a la carpeta nombrada y elegimos el archivo de volcado.

Comienza el depurado:
003

De esa información lo que mas me interesa es esto (en el ejemplo):
*** ERROR: Module load completed but symbols could not be loaded for RtkHDAud.sys
Probably caused by : RtkHDAud.sys ( RtkHDAud+1dff71 )

Es obvio que no me carga “symbols” porque el archivo sys que da el error no es un driver firmado de Microsoft, entonces me avisa que no lo descarga porque no está en el sitio de internet (Microsoft no almacena TODOS los drivers para poder descargarlos con esta herramienta, solo aquellos firmados por la empresa. Si hubiese hecho un volcado completo dispondría del archivo.

Seguimos con el análisis, aunque ya me ha dicho casi todo, con buscar en Google sobre el error obtendendré resultados que no me dirán ni mas ni menos mas que desinstale los controladores de mi placa de sonido e instale los mas nuevos. Si todo sale bien, el problema se resuelve.

Si quiero mas detalles en esa misma ventana, en el área de comando (donde dice 0: kd>, abajo a la izquierda) ponemos el comando !analyze -v, en mi caso me sale un texto como este:
*******************************************************************************
* *
* Bugcheck Analysis *
* *
********************************************************************************

DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1)
An attempt was made to access a pageable (or completely invalid) address at an
interrupt request level (IRQL) that is too high. This is usually
caused by drivers using improper addresses.
If kernel debugger is available get stack backtrace.
Arguments:
Arg1: b9ed0cf4, memory referenced
Arg2: 00000002, IRQL
Arg3: 00000000, value 0 = read operation, 1 = write operation
Arg4: b9c3af71, address which referenced memory
Debugging Details:
------------------

READ_ADDRESS: b9ed0cf4

CURRENT_IRQL: 2

FAULTING_IP:
RtkHDAud+1dff71
b9c3af71 f3a5 rep movs dword ptr es:[edi],dword ptr [esi]

DEFAULT_BUCKET_ID: DRIVER_FAULT

BUGCHECK_STR: 0xD1

PROCESS_NAME: Idle

TRAP_FRAME: 80557330 -- (.trap 0xffffffff80557330)
ErrCode = 00000000
eax=00000578 ebx=00000578 ecx=0000015e edx=0000001f esi=b9ed0cf4 edi=89536458
eip=b9c3af71 esp=805573a4 ebp=805573d0 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010202
RtkHDAud+0x1dff71:
b9c3af71 f3a5 rep movs dword ptr es:[edi],dword ptr [esi]
Resetting default scope

LAST_CONTROL_TRANSFER: from b9c3af71 to 804e0aac

STACK_TEXT:
80557330 b9c3af71 badb0d00 0000001f 8984fbd4 nt!KiTrap0E+0x238
WARNING: Stack unwind information not available. Following frames may be wrong.
805573d0 b9a3e945 80557401 00000578 80557400 RtkHDAud+0x1dff71
80557410 b9a387bf 000009d0 80561f20 ffdff000 portcls!CPortPinWaveCyclic::RequestService+0x298
80557428 804dcd22 891fd848 891fd838 00000000 portcls!CServiceGroup::ServiceDpc+0x2a
80557450 804dcc07 00000000 0000000e 00000000 nt!KiRetireDpcList+0x61
80557454 00000000 0000000e 00000000 00000000 nt!KiIdleLoop+0x28

STACK_COMMAND: kb

FOLLOWUP_IP:
RtkHDAud+1dff71
b9c3af71 f3a5 rep movs dword ptr es:[edi],dword ptr [esi]

SYMBOL_STACK_INDEX: 1

SYMBOL_NAME: RtkHDAud+1dff71

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: RtkHDAud

IMAGE_NAME: RtkHDAud.sys

DEBUG_FLR_IMAGE_TIMESTAMP: 45069981

FAILURE_BUCKET_ID: 0xD1_RtkHDAud+1dff71

BUCKET_ID: 0xD1_RtkHDAud+1dff71

Followup: MachineOwner---------

Lo cual me refiere mas precisamente el tipo de error y en que lugar de la memoria ha ocurrido.

Existe un comando mas que nos puede ser util: lm o lmv (la v corresponde a verbose o en castellano mas detallado) el cual nos da una lista con todos los módulos que se encontraban cargados en el momento del error.

El resto de la solución depende ya sólo de nuestra práctica y experiencia, saber buscar con Google y ser pacientes.

Resolviendo los pantallazos azules en XP (Parte I)

Completa esta lectura con:

Si te gustó este post, por favor considera dejar un comentario o suscribirte al feed y obtener artículos futuros en tu lector de feeds.

Comentarios (1)

puede alguien ayudarme por faaaaaaaaa

Deja un comentario

(requerido)

(requerido)