Compartir a través de


Comprobador de aplicaciones - Códigos de detención - Aspectos básicos

Los siguientes códigos de detención se incluyen en este conjunto de pruebas básicas.

Detalles de detención por excepciones

Intento de ejecutar código en memoria no ejecutable (primera oportunidad).

Causa probable

Esta detención se genera si la aplicación intenta ejecutar código desde una dirección que no es ejecutable o libre. Para depurar esta detención: $ u parameter2 - para desensamblar el código causante $ .exr parameter3 - para mostrar la información de excepción; $ .cxr parameter4 seguido de kb - para mostrar la información del contexto de excepción y el seguimiento de la pila para el momento en que se generó la excepción.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección a la que se accede.
  • Parámetro 2 - Código que realiza el acceso no válido.
  • Parámetro 3 - Registro de excepción. Use .exr para mostrarlo.
  • Parámetro 4 - Registro de contexto. Use .cxr para mostrarlo.

Información adicional
  • Capa de prueba: Excepciones
  • ID de detención: FIRST_CHANCE_ACCESS_VIOLATION_CODE
  • Código de detención: 650NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Detalles de detención por identificadores

Excepción de identificador no válido para el seguimiento de pila actual.

Causa probable

Esta detención se genera si la función de la parte superior de la pila pasó un identificador no válido a rutinas del sistema. Normalmente, un comando kb simple mostrará cuál es el valor del identificador pasado (debe ser uno de los parámetros, normalmente el primero). Si el valor es null, esto es claramente incorrecto. Si el valor parece correcto, debe usar la extensión del depurador !htrace para obtener un historial de operaciones relacionadas con este valor de identificador. En la mayoría de los casos, debe ser que el valor de identificador se use después de cerrarse.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Código de excepción.
  • Parámetro 2 - Registro de excepción. Use .exr para mostrarlo.
  • Parámetro 3 - Registro de contexto. Use .cxr para mostrarlo.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Identificadores
  • ID de detención: INVALID_HANDLE
  • Código de detención: 300NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Índice TLS no válido usado para el seguimiento de la pila actual.

Causa probable

Esta detención se genera si la función de la parte superior de la pila pasó un índice TLS no válido a rutinas del sistema TLS. Normalmente, un comando kb simple mostrará lo que está mal. El error típico aquí es asumir un valor determinado para un índice TLS en lugar de llamar a TlsAlloc. Esto puede ocurrir por pensar que siempre se obtiene el valor N, por lo que no es necesario llamar a TlsAlloc o con más frecuencia debido a una variable no inicializada.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Índice TLS no válido.
  • Parámetro 2 - Se esperaba una parte inferior del índice.
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Identificadores
  • ID de detención: INVALID_TLS_VALUE
  • Código de detención: 300NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Parámetros no válidos para la llamada a WaitForMultipleObjects.

Causa probable

Esta detención se genera si la función de la parte superior de la pila denominada WaitForMultipleObjects con NULL como dirección de la matriz de identificadores debe esperar o con cero como el número de identificadores. Un comando kb simple mostrará la función que llama a esta API incorrectamente.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección del vector de identificadores de objeto.
  • Parámetro 2 - Número de identificadores.
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Identificadores
  • ID de detención: INCORRECT_WAIT_CALL
  • Código de detención: 300NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Identificador NULL pasado como parámetro. Se debe usar un identificador válido.

Causa probable

Esta detención se genera si la función de la parte superior de la pila pasó un identificador NULL a rutinas del sistema.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - No se usa.
  • Parámetro 2 - No se usa.
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Identificadores
  • ID de detención: NULL_HANDLE
  • Código de detención: 300NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

A la espera de un identificador de subproceso en DllMain.

Causa probable

Esta detención se genera si el subproceso actual está ejecutando código dentro de la función DllMain de uno de los archivos DLL cargados en el proceso actual y llama a WaitForSingleObject o WaitForMultipleObjects para esperar en un identificador de subproceso en el mismo proceso. Esto probablemente provocaría un interbloqueo porque el identificador del subproceso no se señalará a menos que el segundo subproceso salga. Cuando el segundo subproceso llame a ExitThread, intentará adquirir el bloqueo del cargador DLL y, a continuación, llamará a DllMain (DLL_THREAD_DETACH) para todos los DLL del proceso actual. Pero el bloqueo del cargador es propiedad del primer subproceso (el que está esperando en el identificador de subproceso) por lo que los dos subprocesos se interbloquearán.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador de subproceso.
  • Parámetro 2 - No se usa.
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Identificadores
  • ID de detención: WAIT_IN_DLLMAIN
  • Código de detención: 300NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Tipo de objeto incorrecto para el identificador.

Causa probable

Esta detención se genera si el subproceso actual llama a una API con un identificador a un objeto con un tipo de objeto incorrecto. Por ejemplo, llamar a SetEvent con un identificador de semáforo como parámetro generará esta detención. Para depurar esta detención: $ kb - para mostrar el seguimiento de la pila actual. El causante es probablemente el archivo DLL que llama a verifier.dll; $ du parameter2 - para mostrar el tipo real del identificador. El valor de identificador es parameter1. En el ejemplo anterior, se mostrará: Semáforo. $ du parameter3 - para mostrar el tipo de objeto esperado por la API. En el ejemplo anterior, este nombre será: Evento. $!htrace parameter1 puede resultar útil porque mostrará el seguimiento de la pila para las operaciones recientes de apertura y cierre en este identificador.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Valor del identificador.
  • Parámetro 2 - Nombre de tipo de objeto. Use du para mostrarlo
  • Parámetro 3 - Nombre de tipo de objeto esperado. Use du para mostrarlo
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Identificadores
  • ID de detención: INCORRECT_OBJECT_TYPE
  • Código de detención: 300NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Detalles de detención por montones

Error desconocido.

Causa probable

Este mensaje puede ocurrir si el error encontrado no se puede clasificar de ninguna otra manera. No se usa ahora mismo.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - No se usa
  • Parámetro 2 - No se usa
  • Parámetro 3 - No se usa
  • Parámetro 4 - No se usa

Información adicional
  • Capa de prueba: Montones
  • ID de detención: UNKNOWN_ERROR
  • Código de detención: 0NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Excepción de infracción de acceso.

Causa probable

Esta es la detención del comprobador de aplicaciones más común. Normalmente, se debe a un error de saturación del búfer. El comprobador del montón coloca una página no accesible al final de una asignación de montón y una saturación del búfer provocará una excepción al tocar esta página. Para depurar esta detención, identifique la dirección de acceso que provocó la excepción y, a continuación, use el siguiente comando del depurador: !heap -p -a ACCESS_ADDRESS Este comando proporcionará detalles sobre la naturaleza del error y qué bloque de montón está saturado. También proporcionará el seguimiento de la pila para la asignación de bloques. Hay otras causas para esta detención. Por ejemplo, acceso a un bloque de montón después de liberarse. El mismo comando del depurador también será útil para este caso.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección no válida que provoca la excepción
  • Parámetro 2 - Dirección de código que ejecuta el acceso no válido
  • Parámetro 3 - Registro de excepción
  • Parámetro 4 - Registro de contexto

Información adicional
  • Capa de prueba: Montones
  • ID de detención: ACCESS_VIOLATION
  • Código de detención: 0NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Acceso multiproceso en un montón creado con la marca HEAP_NO_SERIALIZE.

Causa probable

Se supone que no se tiene acceso a un montón creado con la marca HEAP_NO_SERIALIZE desde dos subprocesos simultáneamente. Si se detecta esta situación, recibirá este mensaje. La forma habitual de que esta situación se desencadene en un programa es vinculando con una versión de un solo subproceso del entorno de ejecución de C. Visual C++ puede, por ejemplo, vincular estáticamente una biblioteca de este tipo cuando se usan las marcas adecuadas. A continuación, los usuarios olvidan este detalle y usan varios subprocesos. El error es muy difícil de depurar en la vida real porque se mostrará como misteriosos daños en los datos.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Montón en el que se produce la operación.
  • Parámetro 2 - ID de subproceso para el propietario actual de la sección crítica del montón.
  • Parámetro 3 - ID del subproceso actual que intenta acceder al montón.
  • Parámetro 4 - No se usa

Información adicional
  • Capa de prueba: Montones
  • ID de detención: UNSYNCHRONIZED_ACCESS
  • Código de detención: 0NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Solicitud de tamaño extremo.

Causa probable

Este mensaje se generará si en una operación HeapAlloc() o HeapReAlloc() el tamaño del bloque está por encima de cualquier valor razonable. Normalmente, este valor es 0x80000000 en plataformas de 32 bits y mucho más grande en plataformas de 64 bits.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Montón en el que se produce la operación.
  • Parámetro 2 - Tamaño solicitado
  • Parámetro 3 - No se usa
  • Parámetro 4 - No se usa

Información adicional
  • Capa de prueba: Montones
  • ID de detención: EXTREME_SIZE_REQUEST
  • Código de detención: 0NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Identificador del montón con firma incorrecta.

Causa probable

Las estructuras del montón se etiquetan con un valor mágico. Si el identificador del montón usado en la llamada a una interfaz de montón no tiene este patrón, se generará esta detención. Este error puede ocurrir si la estructura interna del montón se ha dañado (daños aleatorios) o simplemente se usa un valor falso como identificador de montón. Para obtener una lista de valores de identificador de montón válidos, use los siguientes comandos del depurador: !heap -p Tenga en cuenta que si simplemente cambia un identificador de montón válido por otro válido en una operación de montón, no obtendrá esta detención (al fin y al cabo, el identificador es válido). Sin embargo, el comprobador del montón detecta esta situación e informa de esta situación con la detención SWITCHED_HEAP_HANDLE.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador de montón usado en la llamada a una interfaz de montón
  • Parámetro 2 - No se usa
  • Parámetro 3 - No se usa
  • Parámetro 4 - No se usa

Información adicional
  • Capa de prueba: Montones
  • ID de detención: BAD_HEAP_HANDLE
  • Código de detención: 0NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Puntero de montón dañado o uso de montón incorrecto.

Causa probable

Normalmente esto sucede si un bloque se asigna en un montón y se libera en otro. Use el comando !heap -p para obtener una lista de todos los valores de identificador de montón válidos. El ejemplo más común es una asignación de msvcrt mediante malloc() emparejada con una desasignación kernel32 mediante HeapFree().

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador del montón que se usa en la llamada.
  • Parámetro 2 - Bloque de montón implicado en la operación.
  • Parámetro 3 - Tamaño del bloque del montón.
  • Parámetro 4 - Montón donde se asignó originalmente el bloque.

Información adicional
  • Capa de prueba: Montones
  • ID de detención: SWITCHED_HEAP_HANDLE
  • Código de detención: 0NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Bloque de montón ya liberado.

Causa probable

Esta situación se produce si el bloque se libera dos veces. Los bloques liberados se marcan de forma especial y se mantienen durante un tiempo en una cola de liberación retardada. Si un programa con errores intenta liberar de nuevo el bloque, se detectará suponiendo que el bloque no se retiró de la cola de liberación retrasada y su memoria se ha reutilizado para otras asignaciones. La profundidad de la cola de liberación retardada está en el orden de miles de bloques, por lo que hay muchas posibilidades de que se detecte la mayoría de las liberaciones dobles.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador de montón para el montón que posee el bloque.
  • Parámetro 2 - Se vuelve a liberar el bloque de montón.
  • Parámetro 3 - Tamaño del bloque del montón.
  • Parámetro 4 - No se usa

Información adicional
  • Capa de prueba: Montones
  • ID de detención: DOUBLE_FREE
  • Código de detención: 0NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Bloque de montón dañado.

Causa probable

Se trata de un error genérico emitido si los daños en el bloque del montón no se pueden colocar en una categoría más específica.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador del montón que se usa en la llamada.
  • Parámetro 2 - Bloque de montón implicado en la operación.
  • Parámetro 3 - Tamaño del bloque del montón.
  • Parámetro 4 - Reservado

Información adicional
  • Capa de prueba: Montones
  • ID de detención: CORRUPTED_HEAP_BLOCK
  • Código de detención: 0NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Intento de destruir el montón de procesos.

Causa probable

Se trata de un error al intentar destruir el montón de procesos predeterminado (el devuelto por la interfaz GetProcessHeap().

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador de montón que se usa con HeapDestroy.
  • Parámetro 2 - No se usa
  • Parámetro 3 - No se usa
  • Parámetro 4 - No se usa

Información adicional
  • Capa de prueba: Montones
  • ID de detención: DESTROY_PROCESS_HEAP
  • Código de detención: 0NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Se produjo una excepción inesperada al ejecutar código de administración del montón.

Causa probable

Esta detención se genera si al ejecutar el código del administrador del montón se genera una infracción de acceso en situaciones ilegítimas. Hay muy pocas situaciones en las que esto es correcto, por ejemplo, al llamar a HeapValidate() o HeapSize(). La información del registro de excepciones (tercer parámetro) se puede usar para buscar el contexto exacto de la excepción. Use los siguientes comandos del depurador para esto: $ .exr STOP-PARAMETER-2 $ .cxr STOP-PARAMETER-3 Normalmente, esta detención puede ocurrir si hay algún daño aleatorio en las estructuras de montón internas.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Montón implicado en la operación.
  • Parámetro 2 - Registro de excepción.
  • Parámetro 3 - Registro de contexto.
  • Parámetro 4 - Código de excepción (C0000005 - infracción de acceso)

Información adicional
  • Capa de prueba: Montones
  • ID de detención: UNEXPECTED_EXCEPTION
  • Código de detención: 0NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Excepción generada al comprobar el encabezado de bloque del montón.

Causa probable

Esta situación sucede si realmente no podemos determinar ningún tipo determinado de daños para el bloque. Lo más probable es que esta detención se produzca cuando la dirección del bloque del montón pasada a un montón libre apunta a un área de memoria no accesible (puntero dañado, puntero no inicializado, etc.).

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador de montón para el montón que posee el bloque.
  • Parámetro 2 - Bloque de montón dañado.
  • Parámetro 3 - Tamaño del bloque o cero si no se puede determinar el tamaño.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Montones
  • ID de detención: CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_HEADER
  • Código de detención: 0NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Excepción generada al comprobar el bloque del montón.

Causa probable

Esta situación sucede si realmente no podemos determinar ningún tipo determinado de daños para el bloque. Por ejemplo, obtendrá esto si durante una operación de liberación del montón pasa una dirección que apunta a un área de memoria no accesible. Esto también puede ocurrir para situaciones de liberaciones dobles si no encontramos el bloque entre bloques de montón de página completa y lo sondeamos como un bloque de montón de páginas ligeras.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador del montón que se usa en la llamada.
  • Parámetro 2 - Bloque de montón implicado en la operación.
  • Parámetro 3 - Tamaño del bloque del montón.
  • Parámetro 4 - Reservado.

Información adicional
  • Capa de prueba: Montones
  • ID de detención: CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_PROBING
  • Código de detención: 0NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Bloque de montón dañado después de liberarse.

Causa probable

Esta situación se produce si se escribe en un bloque de memoria después de liberarse.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador de montón para el montón que posee el bloque.
  • Parámetro 2 - Bloque de montón dañado.
  • Parámetro 3 - Tamaño del bloque o cero si no se puede determinar el tamaño.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Montones
  • ID de detención: CORRUPTED_HEAP_BLOCK_HEADER
  • Código de detención: 0NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Patrón de infijo dañado para el bloque de montón liberado.

Causa probable

Los bloques liberados a veces se marcan como no accesibles y un programa al tocarlos accederá a ellos como infracción (diferente detención del comprobador). En otros casos (montón de páginas ligeras), el bloque se marca con un patrón mágico y se mantendrá durante un tiempo. Finalmente, en un FIFO, los bloques se liberan realmente. En este momento, se comprueba el patrón de infijo y, si se ha modificado, obtendrá esta interrupción. La pila en el momento de interrupción no es relevante. Debe averiguar la naturaleza del bloque y revisar el código que podría ser incorrecto.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador de montón para el montón que posee el bloque.
  • Parámetro 2 - Se libera el bloque de montón.
  • Parámetro 3 - Tamaño del bloque del montón.
  • Parámetro 4 - Reservado.

Información adicional
  • Capa de prueba: Montones
  • ID de detención: CORRUPTED_FREED_HEAP_BLOCK
  • Código de detención: 0NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Patrón de sufijo dañado para el bloque de montón.

Causa probable

Normalmente esto sucede con errores de saturación del búfer. A veces, el comprobador de aplicaciones coloca páginas no accesibles al final de la asignación y las saturaciones de búfer provocarán una infracción de acceso y, a veces, el bloque del montón va seguido de un patrón mágico. Si se cambia este patrón cuando se libera el bloque, obtendrá esta interrupción. Estas saltos pueden ser bastante difíciles de depurar porque no se dispone del momento real en que se produjo el daño. Solo se dispone del momento de liberación (aquí se produjo la detención) y el seguimiento de la pila de asignación (!heap -p -a HEAP_ADDRESS)

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador del montón que se usa en la llamada.
  • Parámetro 2 - Bloque de montón implicado en la operación.
  • Parámetro 3 - Tamaño del bloque del montón.
  • Parámetro 4 - Reservado.

Información adicional
  • Capa de prueba: Montones
  • ID de detención: CORRUPTED_HEAP_BLOCK_SUFFIX
  • Código de detención: 0NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Marca de inicio dañada para el bloque de montón.

Causa probable

Esto sucede para infrautilizaciones de búfer.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador del montón que se usa en la llamada.
  • Parámetro 2 - Bloque de montón implicado en la operación.
  • Parámetro 3 - Tamaño del bloque del montón.
  • Parámetro 4 - Valor de marca de tiempo dañado.

Información adicional
  • Capa de prueba: Montones
  • ID de detención: CORRUPTED_HEAP_BLOCK_START_STAMP
  • Código de detención: 0NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Marca de fin dañada para el bloque de montón.

Causa probable

Esto sucede para infrautilizaciones de búfer.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador del montón que se usa en la llamada.
  • Parámetro 2 - Bloque de montón implicado en la operación.
  • Parámetro 3 - Tamaño del bloque del montón.
  • Parámetro 4 - Valor de marca de tiempo dañado.

Información adicional
  • Capa de prueba: Montones
  • ID de detención: CORRUPTED_HEAP_BLOCK_END_STAMP
  • Código de detención: 0NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Patrón de prefijo dañado para el bloque de montón.

Causa probable

Esto sucede para infrautilizaciones de búfer.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador del montón que se usa en la llamada.
  • Parámetro 2 - Bloque de montón implicado en la operación.
  • Parámetro 3 - Tamaño del bloque del montón.
  • Parámetro 4 - Reservado.

Información adicional
  • Capa de prueba: Montones
  • ID de detención: CORRUPTED_HEAP_BLOCK_PREFIX
  • Código de detención: 0NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Primera infracción de acceso para el seguimiento de pila actual.

Causa probable

Esta es la detención del comprobador de aplicaciones más común. Normalmente, se debe a un error de saturación del búfer. El comprobador del montón coloca una página no accesible al final de una asignación de montón y una saturación del búfer provocará una excepción al tocar esta página. Para depurar esta detención, identifique la dirección de acceso que provocó la excepción y, a continuación, use el siguiente comando del depurador: !heap -p -a ACCESS_ADDRESS Este comando proporcionará detalles sobre la naturaleza del error y qué bloque de montón está saturado. También proporcionará el seguimiento de la pila para la asignación de bloques. Hay otras causas para esta detención. Por ejemplo, acceso a un bloque de montón después de liberarse. El mismo comando del depurador también será útil para este caso.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección no válida que provoca la excepción.
  • Parámetro 2 - Dirección de código que ejecuta el acceso no válido.
  • Parámetro 3 - Registro de excepción.
  • Parámetro 4 - Registro de contexto.

Información adicional
  • Capa de prueba: Montones
  • ID de detención: FIRST_CHANCE_ACCESS_VIOLATION
  • Código de detención: 0NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Recuento de listas de montón de procesos no válido.

Causa probable

Este mensaje puede ocurrir si al llamar a GetProcessHeaps, el administrador del montón de páginas detecta algunas incoherencias internas. Esto puede deberse a daños aleatorios en el espacio del proceso.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Recuento de montón real.
  • Parámetro 2 - Recuento de montón de páginas.
  • Parámetro 3 - No se usa
  • Parámetro 4 - No se usa

Información adicional
  • Capa de prueba: Montones
  • ID de detención: CORRUPTED_HEAP_LIST
  • Código de detención: 0NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Detalles de detención por filtraciones

Se ha filtrado una asignación de montón.

Causa probable

Esta detención se genera si el archivo dll del propietario de la asignación se descargó dinámicamente mientras era propietario de recursos.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de la asignación filtrada. Ejecute !heap -p -a <dirección> para obtener información adicional sobre la asignación.
  • Parámetro 2 - Dirección al seguimiento de la pila de asignación. Ejecute dps <dirección> para ver la pila de asignación.
  • Parámetro 3 - Dirección del nombre de dll del propietario. Ejecute du <dirección> para leer el nombre del archivo dll.
  • Parámetro 4 - Base del archivo dll del propietario. Ejecute .reload <dll_name> = <dirección> para volver a cargar el archivo dll del propietario. Use "lm" para obtener más información sobre los módulos cargados y descargados.

Información adicional
  • Capa de prueba: Filtración
  • ID de detención: ALLOCATION
  • Código de detención: 900NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Se ha filtrado un HANDLE.

Causa probable

Esta detención se genera si el archivo dll propietario del identificador se descargó dinámicamente mientras era propietario de recursos. Para depurar esta detención: ejecute !htrace parameter1 para obtener información adicional sobre el identificador.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Valor del identificador filtrado. Ejecute !htrace <identificador> para obtener información adicional sobre el identificador si está habilitado el seguimiento de identificadores.
  • Parámetro 2 - Dirección al seguimiento de la pila de asignación. Ejecute dps <dirección> para ver la pila de asignación.
  • Parámetro 3 - Dirección del nombre de dll del propietario. Ejecute du <dirección> para leer el nombre del archivo dll.
  • Parámetro 4 - Base del archivo dll del propietario. Ejecute .reload <dll_name> = <dirección> para volver a cargar el archivo dll del propietario. Use "lm" para obtener más información sobre los módulos cargados y descargados.

Información adicional
  • Capa de prueba: Filtración
  • ID de detención: HANDLE
  • Código de detención: 900NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Se ha filtrado un HKEY.

Causa probable

Esta detención se genera si el archivo dll del propietario de la clave del registro se descargó dinámicamente mientras era propietario de recursos.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Valor de la HKEY filtrada.
  • Parámetro 2 - Dirección al seguimiento de la pila de asignación. Ejecute dps <dirección> para ver la pila de asignación.
  • Parámetro 3 - Dirección del nombre de dll del propietario. Ejecute du <dirección> para leer el nombre del archivo dll.
  • Parámetro 4 - Base del archivo dll del propietario. Ejecute .reload <dll_name> = <dirección> para volver a cargar el archivo dll del propietario. Use "lm" para obtener más información sobre los módulos cargados y descargados.

Información adicional
  • Capa de prueba: Filtración
  • ID de detención: REGISTRY
  • Código de detención: 900NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Se ha filtrado una reserva virtual.

Causa probable

Esta detención se genera si el archivo dll del propietario de la reserva virtual se descargó dinámicamente mientras era propietario de recursos.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de reserva filtrada.
  • Parámetro 2 - Dirección al seguimiento de la pila de asignación. Ejecute dps <dirección> para ver la pila de asignación.
  • Parámetro 3 - Dirección del nombre de dll del propietario. Ejecute du <dirección> para leer el nombre del archivo dll.
  • Parámetro 4 - Base del archivo dll del propietario. Ejecute .reload <dll_name> = <dirección> para volver a cargar el archivo dll del propietario. Use "lm" para obtener más información sobre los módulos cargados y descargados.

Información adicional
  • Capa de prueba: Filtración
  • ID de detención: VIRTUAL_RESERVATION
  • Código de detención: 900NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Se filtró un BSTR.

Causa probable

Esta detención se genera si el archivo dll de SysString se descargó dinámicamente mientras era propietario de recursos.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de BSTR filtrado. Ejecute !heap -p -a <dirección> para obtener información adicional sobre la asignación.
  • Parámetro 2 - Dirección al seguimiento de la pila de asignación. Ejecute dps <dirección> para ver la pila de asignación.
  • Parámetro 3 - Dirección del nombre de dll del propietario. Ejecute du <dirección> para leer el nombre del archivo dll.
  • Parámetro 4 - Base del archivo dll del propietario. Ejecute .reload <dll_name> = <dirección> para volver a cargar el archivo dll del propietario. Use "lm" para obtener más información sobre los módulos cargados y descargados.

Información adicional
  • Capa de prueba: Filtración
  • ID de detención: SYSSTRING
  • Código de detención: 900NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

No se ha anulado el registro de una notificación de energía.

Causa probable

Esta detención se genera si el archivo dll registrado para la notificación de energía se descargó dinámicamente sin haber anulado el registro.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección del registro de notificaciones de energía.
  • Parámetro 2 - Dirección al seguimiento de la pila de registro. Ejecute dps <dirección> para ver la pila de asignación.
  • Parámetro 3 - Dirección del nombre de dll del propietario. Ejecute du <dirección> para leer el nombre del archivo dll.
  • Parámetro 4 - Base del archivo dll del propietario. Ejecute .reload <dll_name> = <dirección> para volver a cargar el archivo dll del propietario. Use "lm" para obtener más información sobre los módulos cargados y descargados.

Información adicional
  • Capa de prueba: Filtración
  • ID de detención: POWER_NOTIFICATION
  • Código de detención: 900NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Detalles de detención por bloqueos

El subproceso no puede poseer una sección crítica.

Causa probable

Esta detención se genera si un subproceso (el ID del subproceso es parameter1) finaliza, se suspende o está en un estado (el subproceso de trabajo ha finalizado un elemento de trabajo) en el que no puede contener una sección crítica. El subproceso actual es el causante. Para depurar esta detención, use los siguientes comandos del depurador: $ kb - para obtener el seguimiento de la pila actual. Si el subproceso actual es el propietario de la sección crítica, probablemente llame a ExitThread. El subproceso actual debe haber liberado la sección crítica antes de salir. Si el subproceso actual llama a TerminateThread o SuspendThread, no debe hacerlo para un subproceso que contenga una sección crítica. $ !cs -s parameter2 - información de volcado sobre esta sección crítica. $ ln parameter2 - para mostrar símbolos cerca de la dirección de la sección crítica. Esto debería ayudar a identificar la sección crítica filtrada. $ dps parameter4 - para volcar el seguimiento de la pila de esta inicialización de sección crítica.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - ID de subproceso.
  • Parámetro 2 - Dirección de sección crítica.
  • Parámetro 3 - Dirección de información de depuración de sección crítica.
  • Parámetro 4 - Seguimiento de pila de inicialización de sección crítica .

Información adicional
  • Capa de prueba: Bloqueos
  • ID de detención: EXIT_THREAD_OWNS_LOCK
  • Código de detención: 200NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Descarga de DLL que contiene una sección crítica activa.

Causa probable

Esta detención se genera si un archivo DLL tiene una variable global que contiene una sección crítica y el archivo DLL se descarga, pero no se ha eliminado la sección crítica. Para depurar esta detención, use los siguientes comandos del depurador: $ du parameter3 - para volcar el nombre del archivo DLL causante. $ .reload dllname o .reload dllname = parameter4 - para volver a cargar los símbolos de ese archivo DLL. $ !cs -s parameter1 - información de volcado sobre esta sección crítica. $ ln parameter1 - para mostrar símbolos cerca de la dirección de la sección crítica. Esto debería ayudar a identificar la sección crítica filtrada. $ dps parameter2 - para volcar el seguimiento de la pila de esta inicialización de sección crítica.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de sección crítica.
  • Parámetro 2 - Seguimiento de pila de inicialización de sección crítica .
  • Parámetro 3 - Dirección de nombre de DLL.
  • Parámetro 4 - Dirección base de DLL.

Información adicional
  • Capa de prueba: Bloqueos
  • ID de detención: LOCK_IN_UNLOADED_DLL
  • Código de detención: 200NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Liberación de bloque de montón que contiene una sección crítica activa.

Causa probable

Esta detención se genera si una asignación de montón contiene una sección crítica, la asignación se libera y la sección crítica no se ha eliminado. Para depurar esta detención, use los siguientes comandos del depurador: $ !cs -s parameter1 - información de volcado de memoria sobre esta sección crítica. $ ln parameter1 - para mostrar símbolos cerca de la dirección de la sección crítica. Esto debería ayudar a identificar la sección crítica filtrada. $ dps parameter2 - para volcar el seguimiento de la pila de esta inicialización de sección crítica. $ parameter3 y parameter4 podrían ayudar a comprender dónde se asignó este bloque de montón (el tamaño de la asignación probablemente sea significativo).

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de sección crítica.
  • Parámetro 2 - Seguimiento de pila de inicialización de sección crítica .
  • Parámetro 3 - Dirección de bloque del montón.
  • Parámetro 4 - Tamaño de bloque del montón.

Información adicional
  • Capa de prueba: Bloqueos
  • ID de detención: LOCK_IN_FREED_HEAP
  • Código de detención: 200NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Doble sección crítica inicializada o dañada.

Causa probable

Normalmente, esta detención se genera si se ha inicializado una sección crítica más de una vez. En este caso, parameter3 y parameter4 son las direcciones de seguimiento de pila para dos de estas inicializaciones. Otras veces es posible obtener esta detención si se ha dañado la sección crítica o su estructura de información de depuración. En este segundo caso, es posible que parameter3 y parameter4 no sean válidos y no sirvan. Para depurar esta detención: $ !cs -s -d parameter2 - información de volcado sobre esta sección crítica. $ ln parameter1 - para mostrar símbolos cerca de la dirección de la sección crítica. Esto puede ayudar a identificar la sección crítica si se trata de una variable global. $ dps parameter3 y dps parameter4 - para identificar las dos rutas de acceso de código para inicializar esta sección crítica.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de sección crítica.
  • Parámetro 2 - Dirección de la estructura de información de depuración que se encuentra en la lista activa.
  • Parámetro 3 - Seguimiento de pila de la primera inicialización.
  • Parámetro 4 - Seguimiento de pila de la segunda inicialización.

Información adicional
  • Capa de prueba: Bloqueos
  • ID de detención: LOCK_DOUBLE_INITIALIZE
  • Código de detención: 200NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Memoria libre que contiene una sección crítica activa.

Causa probable

Esta detención se genera si se liberó la memoria que contiene una sección crítica, pero la sección crítica no se ha eliminado mediante DeleteCriticalSection. Para depurar esta detención, use los siguientes comandos del depurador: $ !cs -s -d parameter2 - información de volcado de memoria sobre esta sección crítica. $ dps parameter3 - para identificar la ruta de acceso del código para inicializar esta sección crítica. En la mayoría de los casos, el comprobador de bloqueos detecta secciones críticas filtradas inmediatamente contenidas en una asignación de montón, un intervalo de DLL, una asignación de memoria virtual o un intervalo de memoria asignado MapViewOfFile y emite diferentes detenciones en estos casos. Por lo tanto, quedan muy pocos casos para esta detención del comprobador. El bloqueo debe estar en un intervalo de memoria liberado por código en modo kernel o liberado entre procesos por API como VirtualFreeEx. Normalmente, esta detención se encontrará si una detención anterior (por ejemplo, LOCK_IN_FREED_HEAP o LOCK_IN_UNLOADED_DLL) se continuó pulsando "g" en la consola del depurador.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de sección crítica.
  • Parámetro 2 - Dirección de información de depuración de sección crítica.
  • Parámetro 3 - Seguimiento de pila de inicialización de sección crítica .
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Bloqueos
  • ID de detención: LOCK_IN_FREED_MEMORY
  • Código de detención: 200NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Sección crítica dañada.

Causa probable

Esta detención se genera si el campo DebugInfo de la sección crítica apunta a memoria libre. Normalmente, se encuentra otra estructura DebugInfo válida en la lista de secciones críticas activas. Sin daños, los dos punteros deben ser idénticos. Para depurar esta detención, use los siguientes comandos del depurador: $ !cs -s -d parameter3 - información de volcado de memoria sobre esta sección crítica basada en el contenido actual de la estructura de información de depuración que se encuentra en la lista activa (esta estructura rara vez está dañada, por lo que normalmente esta información es fiable). $ !cs -s parameter1 - información de volcado sobre esta sección crítica basada en el contenido actual de la estructura de sección crítica (la estructura ya está dañada, por lo que a veces esta información no es fiable). $ dps parameter4 - para identificar la ruta de acceso del código para inicializar esta sección crítica. Vuelque la sección crítica en address parameter1 y busque el patrón de daños. Con buenos símbolos para ntdll.dl puede usar los siguientes comandos: $ dt ntdll!_RTL_CRITICAL_SECTION LOCK_ADDRESS $ dt ntdll!_RTL_CRITICAL_SECTION_DEBUG DEBUG_ADDRESS

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de sección crítica.
  • Parámetro 2 - Dirección de información de depuración no válida de esta sección crítica.
  • Parámetro 3 - Dirección de la información de depuración que se encuentra en la lista activa.
  • Parámetro 4 - Seguimiento de la pila de inicialización.

Información adicional
  • Capa de prueba: Bloqueos
  • ID de detención: LOCK_CORRUPTED
  • Código de detención: 200NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Subproceso de propietario de sección crítica no válido.

Causa probable

Esta detención se genera si el identificador del subproceso del propietario no es válido en el contexto actual. Para depurar esta detención: $ !cs -s parameter1 - información de volcado sobre esta sección crítica. $ ln parameter1 - para mostrar símbolos cerca de la dirección de la sección crítica. Esto debería ayudar a identificar la sección crítica.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de sección crítica.
  • Parámetro 2 - Subproceso propietario.
  • Parámetro 3 - Subproceso propietario esperado.
  • Parámetro 4 - Dirección de información de depuración de la sección crítica.

Información adicional
  • Capa de prueba: Bloqueos
  • ID de detención: LOCK_INVALID_OWNER
  • Código de detención: 200NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Recuento de recursividad de sección crítica no válido.

Causa probable

Esta detención se genera si el campo de recuento de recursividad de la estructura de sección crítica no es válido en el contexto actual. Para depurar esta detención: $ !cs -s parameter1 - información de volcado sobre esta sección crítica. $ ln parameter1 - para mostrar símbolos cerca de la dirección de la sección crítica. Esto debería ayudar a identificar la sección crítica.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de sección crítica.
  • Parámetro 2 - Recuento de recursividad.
  • Parámetro 3 - Recuento de recursividad esperado.
  • Parámetro 4 - Dirección de información de depuración de la sección crítica.

Información adicional
  • Capa de prueba: Bloqueos
  • ID de detención: LOCK_INVALID_RECURSION_COUNT
  • Código de detención: 200NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Eliminación de la sección crítica con recuento de bloqueos no válidos.

Causa probable

Esta detención se genera si una sección crítica es propiedad de un subproceso si se elimina o si la sección crítica no está inicializada. Para depurar esta detención: $ !cs -s parameter1 - información de volcado sobre esta sección crítica. Si el subproceso propietario es 0, no se ha inicializado la sección crítica. $ ln parameter1 - para mostrar símbolos cerca de la dirección de la sección crítica. Esto debería ayudar a identificar la sección crítica.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de sección crítica.
  • Parámetro 2 - Recuento de bloqueos.
  • Parámetro 3 - Recuento de bloqueos esperado.
  • Parámetro 4 - Subproceso propietario.

Información adicional
  • Capa de prueba: Bloqueos
  • ID de detención: LOCK_INVALID_LOCK_COUNT
  • Código de detención: 200NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Sección crítica liberada en exceso o dañada.

Causa probable

Esta detención se genera si se libera una sección crítica más veces de las que el subproceso actual la adquirió. Para depurar esta detención: $ !cs -s parameter1 - información de volcado sobre esta sección crítica. $ !cs -s -d parameter4 - información de volcado sobre esta sección crítica. $ ln parameter1 - para mostrar símbolos cerca de la dirección de la sección crítica. Esto debería ayudar a identificar la sección crítica.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de sección crítica.
  • Parámetro 2 - Recuento de bloqueos.
  • Parámetro 3 - Recuento de bloqueos esperado.
  • Parámetro 4 - Dirección de información de depuración de la sección crítica.

Información adicional
  • Capa de prueba: Bloqueos
  • ID de detención: LOCK_OVER_RELEASED
  • Código de detención: 200NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Sección crítica no inicializada.

Causa probable

Esta detención se genera si se usa una sección crítica sin inicializarse o después de eliminarla. Para depurar esta detención: $ ln parameter1 - para mostrar símbolos cerca de la dirección de la sección crítica. Esto debería ayudar a identificar la sección crítica.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de sección crítica.
  • Parámetro 2 - Dirección de información de depuración de la sección crítica.
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Bloqueos
  • ID de detención: LOCK_NOT_INITIALIZED
  • Código de detención: 200NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Ya se ha inicializado la sección crítica.

Causa probable

Esta detención se genera si el subproceso actual reinicializa una sección crítica. Para depurar esta detención: $ !cs -s parameter1 o !cs -s -d parameter2 - información de volcado sobre esta sección crítica. $ ln parameter1 - para mostrar símbolos cerca de la dirección de la sección crítica. Esto puede ayudar a identificar la sección crítica si se trata de una variable global. $ dps parameter3 - para identificar la ruta de acceso del código para la primera inicialización de esta sección crítica. $ kb - para mostrar el seguimiento de pila actual, que reinicializa esta sección crítica.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de sección crítica.
  • Parámetro 2 - Dirección de información de depuración de la sección crítica.
  • Parámetro 3 - Seguimiento de pila de la primera inicialización. Use dps para el volcado si no es NULL
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Bloqueos
  • ID de detención: LOCK_ALREADY_INITIALIZED
  • Código de detención: 200NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Liberación de memoria virtual que contiene una sección crítica activa.

Causa probable

Esta detención se genera si el subproceso actual llama a VirtualFree en un bloque de memoria que contiene una sección crítica activa. La aplicación debe llamar a DeleteCriticalSection en esta sección crítica antes de liberar esta memoria. $ kb - para mostrar el seguimiento de pila actual, que llama a VirtualFree. El posible causante es el archivo DLL que llama a VirtualFree. $ !cs -s parameter1 - información de volcado sobre esta sección crítica. $ dps parameter2 - para identificar la ruta de acceso del código para la inicialización de esta sección crítica.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de sección crítica.
  • Parámetro 2 - Seguimiento de pila de inicialización de sección crítica .
  • Parámetro 3 - Dirección de bloque de memoria.
  • Parámetro 4 - Tamaño de bloque de memoria.

Información adicional
  • Capa de prueba: Bloqueos
  • ID de detención: LOCK_IN_FREED_VMEM
  • Código de detención: 200NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Desasignación de la región de memoria que contiene una sección crítica activa.

Causa probable

Esta detención se genera si el subproceso actual llama a UnmapViewOfFile en un bloque de memoria que contiene una sección crítica activa. La aplicación debe llamar a DeleteCriticalSection en esta sección crítica antes de desasignar esta memoria. $ kb - para mostrar el seguimiento de pila actual, que llama a UnmapViewOfFile. El posible causante es el archivo DLL que llama a UnmapViewOfFile. $ !cs -s parameter1 - información de volcado sobre esta sección crítica. $ dps parameter2 - para identificar la ruta de acceso del código para la inicialización de esta sección crítica.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de sección crítica.
  • Parámetro 2 - Seguimiento de pila de inicialización de sección crítica .
  • Parámetro 3 - Dirección de bloque de memoria.
  • Parámetro 4 - Tamaño de bloque de memoria.

Información adicional
  • Capa de prueba: Bloqueos
  • ID de detención: LOCK_IN_UNMAPPED_MEM
  • Código de detención: 200NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

El subproceso actual no posee ninguna sección crítica.

Causa probable

Esta detención se genera si el subproceso actual llama a LeaveCriticalSection, pero, según la contabilidad del comprobador interno, no posee ninguna sección crítica. Si parameter2 es cero, probablemente se trata de un error en el subproceso actual. O bien intenta salir de una sección crítica en la que no entró, o tal vez está llamando a LeaveCriticalSection más veces de las que llamó a EnterCriticalSection para la misma sección crítica. Si parameter2 no es cero (es un número entero negativo), es probable que las estructuras de datos del comprobador interno estén dañadas.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de sección crítica.
  • Parámetro 2 - Número de secciones críticas que pertenecen al subproceso actual.
  • Parámetro 3 - No se usa
  • Parámetro 4 - No se usa

Información adicional
  • Capa de prueba: Bloqueos
  • ID de detención: THREAD_NOT_LOCK_OWNER
  • Código de detención: 200NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Uso de la sección crítica que es privada para otro archivo DLL.

Causa probable

Esta detención se genera si el subproceso actual intenta usar un bloque privado que reside dentro de otro archivo DLL. Por ejemplo, a.dll intenta acceder a una sección crítica definida dentro de ntdll.dll. Los bloqueos privados no se pueden usar en archivos DLL.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de sección crítica.
  • Parámetro 2 - No se usa.
  • Parámetro 3 - No se usa
  • Parámetro 4 - No se usa

Información adicional
  • Capa de prueba: Bloqueos
  • ID de detención: LOCK_PRIVATE
  • Código de detención: 200NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Detalles de detención por SRWLock

El bloqueo SRW no se inicializa.

Causa probable

Esta detención se genera si un subproceso intenta usar el bloqueo SRW (Param1) que no se inicializa. $ kb - para obtener el seguimiento de la pila actual. Aquí es donde se usa el bloqueo SRW. El bloqueo SRW debe inicializarse mediante InitializeSRWLock antes de poder usarlo.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Bloqueo SRW
  • Parámetro 2 - No se usa
  • Parámetro 3 - No se usa
  • Parámetro 4 - No se usa

Información adicional
  • Capa de prueba: SRWLock
  • ID de detención: NOT_INITIALIZED
  • Código de detención: 250NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

El bloqueo SRW ya se ha inicializado.

Causa probable

Esta detención se genera si se vuelve a inicializar el bloqueo SRW (Param1). Si otros subprocesos usan activamente el bloqueo SRW, volver a inicializar el bloqueo provocará un comportamiento impredecible por parte de la aplicación, incluidos bloqueos. El seguimiento de la pila de inicialización puede mostrar una adquisición si el bloqueo SRW se inicializó estáticamente. $ kb - para obtener el seguimiento de la pila actual. Aquí es donde se vuelve a inicializar el bloqueo SRW. $ dps Param3 - para obtener el seguimiento de la pila de inicialización de bloqueo SRW. Este seguimiento de pila puede mostrar una adquisición si el bloqueo se inicializó estáticamente.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Bloqueo SRW
  • Parámetro 2 - ThreadId del subproceso que inicializó el bloqueo SRW.
  • Parámetro 3 - Dirección del seguimiento de pila de la inicialización. Use dps <dirección> para ver dónde se inicializó el bloqueo SRW.
  • Parámetro 4 - No se usa

Información adicional
  • Capa de prueba: SRWLock
  • ID de detención: ALREADY_INITIALIZED
  • Código de detención: 250NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Adquisición-liberación no coincidente en el bloqueo SRW.

Causa probable

Esta detención se genera si el bloqueo SRW (Param1) se está liberando con una API de versión incorrecta. Si el bloqueo SRW se adquirió para el acceso compartido y se libera mediante la API de liberación exclusiva o el bloqueo de SRW se adquirió para acceso exclusivo y se está liberando mediante la API de versión compartida. Esto puede dar lugar a un comportamiento imprevisible por parte de la aplicación, incluidos bloqueos. $ kb - para obtener el seguimiento de la pila actual. Aquí es donde se libera el bloqueo de SRW mediante la API incorrecta. $ dps Param3 - para obtener el seguimiento de la pila de adquisición de bloqueo SRW.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Bloqueo SRW
  • Parámetro 2 - ThreadId del subproceso que adquirió el bloqueo SRW.
  • Parámetro 3 - Dirección del seguimiento de pila de adquisición. Use dps <dirección> para ver dónde se adquirió el bloqueo SRW.
  • Parámetro 4 - No se usa

Información adicional
  • Capa de prueba: SRWLock
  • ID de detención: MISMATCHED_ACQUIRE_RELEASE
  • Código de detención: 250NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

El mismo subproceso adquiere el bloqueo SRW de forma recursiva.

Causa probable

Esta detención se genera si el mismo subproceso adquiere el bloqueo SRW (Param1) de forma recursiva. Esto provocará un interbloqueo y el subproceso se bloquearía indefinidamente. La adquisición recursiva de un bloqueo SRW en modo exclusivo provocará un interbloqueo. La adquisición recursiva de un bloqueo SRW en modo compartido provocará un interbloqueo cuando haya un subproceso esperando acceso exclusivo. Considere el ejemplo siguiente: - El subproceso A adquiere el bloqueo SRW en modo compartido - El subproceso B intenta adquirir el bloqueo SRW en modo exclusivo y espera - El subproceso A intenta adquirir el bloqueo SRW en modo compartido de forma recursiva. Esto se realizará correctamente siempre y cuando no haya ningún elemento en espera exclusivo (en este caso B). Dado que los bloqueos SRW no tienen bloqueo de escritura, el subproceso A espera detrás del subproceso B. Ahora, el subproceso B está esperando al subproceso A, que a su vez está esperando al subproceso B, lo que provoca una espera circular y, por tanto, un interbloqueo. $ kb - para obtener el seguimiento de la pila actual. Aquí es donde el bloqueo SRW se adquiere de forma recursiva. $ dps Param2 - para obtener el seguimiento de la pila para la primera adquisición.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Bloqueo SRW
  • Parámetro 2 - Dirección del seguimiento de pila de la primera adquisición. Use dps <dirección> para ver dónde se adquirió el bloqueo SRW.
  • Parámetro 3 - No se usa
  • Parámetro 4 - No se usa

Información adicional
  • Capa de prueba: SRWLock
  • ID de detención: RECURSIVE_ACQUIRE
  • Código de detención: 250NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

El subproceso que sale o finaliza posee un bloqueo SRW.

Causa probable

Esta detención se genera si el subproceso (Param2) que posee el bloqueo SRW (Param1) se está cerrando o finalizando. Esto provocará un bloqueo SRW huérfano y los subprocesos que intenten adquirir este bloqueo se bloquearían indefinidamente. $ kb - para obtener el seguimiento de la pila actual. Aquí es donde el subproceso sale o está finalizando. $ dps Param3 - para obtener el seguimiento de la pila de adquisición de bloqueo SRW.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Bloqueo SRW
  • Parámetro 2 - ThreadId del subproceso que sale o finaliza.
  • Parámetro 3 - Dirección del seguimiento de pila de adquisición. Use dps <dirección> para ver dónde se adquirió el bloqueo SRW.
  • Parámetro 4 - No se usa

Información adicional
  • Capa de prueba: SRWLock
  • ID de detención: EXIT_THREAD_OWNS_LOCK
  • Código de detención: 250NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Este subproceso no adquirió el bloqueo SRW.

Causa probable

Esta detención se genera si el bloqueo SRW (Param1) lo está liberando el subproceso (Param2) que no adquirió el bloqueo. Esto representa una mala práctica de programación que es difícil de hacer bien y puede conducir a un comportamiento impredecible de la aplicación. $ kb - para obtener el seguimiento de la pila actual. Aquí es donde el subproceso libera el bloqueo SRW que no adquirió. $ dps Param4 - para obtener el seguimiento de la pila de adquisición de bloqueo SRW.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Bloqueo SRW
  • Parámetro 2 - ThreadId actual.
  • Parámetro 3 - ThreadId del subproceso que adquirió el bloqueo SRW.
  • Parámetro 4 - Dirección del seguimiento de pila de adquisición. Use dps <dirección> para ver dónde se adquirió el bloqueo SRW.

Información adicional
  • Capa de prueba: SRWLock
  • ID de detención: INVALID_OWNER
  • Código de detención: 250NAN
  • Gravedad:  advertencia
  • Error único: 
  • Informe de errores: Ninguno
  • Registrar en archivo: sí
  • Crear seguimiento: sí

La memoria que se libera contiene un bloqueo SRW activo.

Causa probable

Esta detención se genera si la dirección de memoria (Param1) que se libera contiene un bloqueo SRW activo que todavía está en uso. Esto puede dar lugar a un comportamiento imprevisible por parte de la aplicación, incluidos bloqueos. $ kb - para obtener el seguimiento de la pila actual. Aquí es donde se libera la memoria que contiene un bloqueo SRW activo. $ dps Param4 - para obtener el seguimiento de la pila de adquisición de bloqueo SRW.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Bloqueo SRW
  • Parámetro 2 - Dirección de la memoria que se está liberando.
  • Parámetro 3 - ThreadId del subproceso que adquirió el bloqueo SRW.
  • Parámetro 4 - Dirección del seguimiento de pila de adquisición. Use dps <dirección> para ver dónde se adquirió el bloqueo SRW.

Información adicional
  • Capa de prueba: SRWLock
  • ID de detención: IN_FREED_MEMORY
  • Código de detención: 250NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

El archivo DLL que se descarga contiene un bloqueo SRW activo.

Causa probable

Esta detención se genera si el archivo DLL que se descarga (Param2) contiene un bloqueo SRW activo (Param1) que todavía está en uso. Esto puede dar lugar a un comportamiento imprevisible por parte de la aplicación, incluidos bloqueos. $ kb - para obtener el seguimiento de la pila actual. Aquí es donde se descarga el archivo DLL que contiene un bloqueo SRW activo. $ du Param2 - para buscar el nombre del archivo DLL que se está descargando. $ dps Param4 - para obtener el seguimiento de la pila de adquisición de bloqueo SRW.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Bloqueo SRW
  • Parámetro 2 - Dirección del nombre del archivo DLL que se descarga. Use du <dirección> para ver el nombre.
  • Parámetro 3 - ThreadId del subproceso que adquirió el bloqueo SRW.
  • Parámetro 4 - Dirección del seguimiento de pila de adquisición. Use dps <dirección> para ver dónde se adquirió el bloqueo SRW.

Información adicional
  • Capa de prueba: SRWLock
  • ID de detención: IN_UNLOADED_DLL
  • Código de detención: 250NAN
  • Gravedad:  advertencia
  • Error único: 
  • Informe de errores: Ninguno
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Detalles de detención por memoria

Liberación de bloque de memoria virtual con un tamaño o una dirección de inicio no válidos.

Causa probable

Esta detención se genera si el comprobador de aplicaciones detecta VirtualFree o una descarga de DLL con una dirección de inicio o un tamaño no válidos de la asignación de memoria. En el caso de la descarga de DLL, esto probablemente significa un daño en la memoria dentro de la lista de DLL cargada. Para depurar esta detención, examine el seguimiento de la pila actual y la dirección de memoria y el tamaño que está a punto de liberarse e intente determinar por qué no son válidos.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección base de asignación.
  • Parámetro 2 - Tamaño de región de memoria.
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: INVALID_FREEMEM
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Llamada de asignación virtual incorrecta.

Causa probable

Esta detención se genera si el comprobador de aplicaciones detecta una llamada a VirtualAlloc con una dirección de inicio o tamaño no válidos de la asignación de memoria. Para depurar esta detención, examine el seguimiento de la pila actual (kb) y la dirección de memoria y el tamaño que está a punto de asignarse e intente determinar por qué no son válidos.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Puntero a la dirección base de asignación.
  • Parámetro 2 - Puntero al tamaño de la región de memoria.
  • Parámetro 3 - No se usa
  • Parámetro 4 - No se usa

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: INVALID_ALLOCMEM
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Llamada incorrecta a la vista de mapa.

Causa probable

Esta detención se genera si el comprobador de aplicaciones detecta una llamada a MapViewOfFile con una dirección base o un tamaño no válidos de la asignación. Para depurar esta detención, examine el seguimiento de la pila actual (kb) y la dirección de memoria y el tamaño que está a punto de asignarse e intente determinar por qué no son válidos.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Puntero a la dirección base de asignación.
  • Parámetro 2 - Puntero para ver el tamaño.
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: INVALID_MAPVIEW
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Sondeo de dirección no válida.

Causa probable

Esta detención se genera si el comprobador de aplicaciones detecta una llamada a IsBadXXXPtr con una dirección no válida (por ejemplo, una dirección en modo kernel, en lugar de una dirección normal en modo de usuario) para que se sondee el búfer de memoria. Para depurar esta detención, examine el seguimiento de pila actual (kb) e intente determinar por qué el llamador de la función IsBadXXXPtr terminó con una dirección no válida. Muchas veces, la dirección es simplemente falsa, por ejemplo, un puntero no inicializado. En la biblioteca de MSDN se enumeran algunas razones por las que las aplicaciones no deben usar las API IsBadXXXPtr: en un entorno de multitarea preferente, es posible que algún otro subproceso cambie el acceso del proceso a la memoria que se está probando. La desreferenciación de punteros potencialmente no válidos puede deshabilitar la expansión de la pila en otros subprocesos. Un subproceso que agota su pila, cuando se ha deshabilitado la expansión de la pila, da como resultado la finalización inmediata del proceso principal, sin ventana de error emergente ni información de diagnóstico. Se espera que los subprocesos de un proceso cooperen de tal manera que uno no libere memoria que el otro necesite. El uso de esta función no niega la necesidad de hacerlo. Si no se hace, la aplicación puede producir un error de forma impredecible. Por todas estas razones, se recomienda no usar nunca estas API.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de inicio.
  • Parámetro 2 - Tamaño de bloque de memoria.
  • Parámetro 3 - Dirección no válida.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: PROBE_INVALID_ADDRESS
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Sondeo de memoria libre.

Causa probable

Esta detención se genera si el comprobador de aplicaciones detecta una llamada a IsBadXXXPtr para una asignación de memoria libre. Esto es muy perjudicial porque es posible que, en algunos otros casos, esta memoria ya se haya reutilizado para alguna otra asignación. Dado que la ruta de acceso de código actual (kb) no posee esa memoria, podría acabar dañando la memoria de otra persona, con efectos desastrosos. Para depurar esta detención, examine el seguimiento de pila actual (kb) e intente determinar por qué el llamador de la función IsBadXXXPtr terminó con el sondeo de una memoria libre. La dirección podría ser simplemente falsa (por ejemplo, puntero sin inicializar) o quizás ya tenga liberada la memoria. Si una de las API de VirtualFree o UnmapViewOfFile ya liberó la memoria, '!avrf -vs -a parameter3' buscará un registro de seguimientos de pila de las rutas de acceso de código que asignaron o liberaron esa dirección y mostrarán estos seguimientos de pila si están disponibles. Esto podría mostrar el seguimiento de la pila que liberó esta memoria. Con más frecuencia, la memoria es una asignación de montón ya liberado. Para comprobar esa posibilidad, '!avrf -hp -a parameter3' buscará un registro de seguimientos de pila de las rutas de acceso de código que asignaron o liberaron esa dirección desde el montón y mostrarán estos seguimientos de pila si están disponibles. En la biblioteca de MSDN se enumeran algunas razones por las que las aplicaciones no deben usar las API IsBadXXXPtr: en un entorno de multitarea preferente, es posible que algún otro subproceso cambie el acceso del proceso a la memoria que se está probando. La desreferenciación de punteros potencialmente no válidos puede deshabilitar la expansión de la pila en otros subprocesos. Un subproceso que agota su pila, cuando se ha deshabilitado la expansión de la pila, da como resultado la finalización inmediata del proceso principal, sin ventana de error emergente ni información de diagnóstico. Se espera que los subprocesos de un proceso cooperen de tal manera que uno no libere memoria que el otro necesite. El uso de esta función no niega la necesidad de hacerlo. Si no se hace, la aplicación puede producir un error de forma impredecible. Por todas estas razones, se recomienda no usar nunca estas API.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de inicio.
  • Parámetro 2 - Tamaño de bloque de memoria.
  • Parámetro 3 - Dirección de la página de memoria libre.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: PROBE_FREE_MEM
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Sondeo de una página de protección.

Causa probable

Esta detención se genera si el comprobador de la aplicación detecta una llamada a IsBadXXXPtr para una asignación de memoria que contiene al menos una GUARD_PAGE. Esto es muy perjudicial porque es muy posible que esta GUARD_PAGE sea el final de la pila actual de un subproceso. Como se documenta en la biblioteca de MSDN: la desreferenciación de punteros potencialmente no válidos puede deshabilitar la expansión de la pila en otros subprocesos. Un subproceso que agota su pila, cuando se ha deshabilitado la expansión de la pila, da como resultado la finalización inmediata del proceso principal, sin ventana de error emergente ni información de diagnóstico. Para depurar esta detención, examine el seguimiento de pila actual (kb) e intente determinar por qué el llamador de la función IsBadXXXPtr terminó con el sondeo de una GUARD_PAGE. En la biblioteca de MSDN se enumeran algunas razones por las que las aplicaciones no deben usar las API IsBadXXXPtr: en un entorno de multitarea preferente, es posible que algún otro subproceso cambie el acceso del proceso a la memoria que se está probando. La desreferenciación de punteros potencialmente no válidos puede deshabilitar la expansión de la pila en otros subprocesos. Un subproceso que agota su pila, cuando se ha deshabilitado la expansión de la pila, da como resultado la finalización inmediata del proceso principal, sin ventana de error emergente ni información de diagnóstico. Se espera que los subprocesos de un proceso cooperen de tal manera que uno no libere memoria que el otro necesite. El uso de esta función no niega la necesidad de hacerlo. Si no se hace, la aplicación puede producir un error de forma impredecible. Por todas estas razones, se recomienda no usar nunca estas API.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de inicio.
  • Parámetro 2 - Tamaño de bloque de memoria.
  • Parámetro 3 - Dirección de la página de protección.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: PROBE_GUARD_PAGE
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Sondeo de dirección NULL.

Causa probable

Esta detención se genera si el comprobador de la aplicación detecta una llamada a IsBadXXXPtr con una dirección NULL. Para depurar esta detención, examine el seguimiento de pila actual (kb) e intente determinar por qué el llamador de la función IsBadXXXPtr terminó con una dirección NULL. Normalmente, es señal de que alguien no comprueba el valor devuelto de una de las funciones de asignación de memoria. Por ejemplo, el código siguiente es incorrecto: int main (void) { PVOID p; p = malloc (1024); Use (p); return 0; } void Use (PVOID p) { if (IsBadReadPtr (p)) { return; } // // p is safe to be used here. // } // } Este código debe volver a escribirse así: int main (void) { PVOID p; p = malloc (1024); if (NULL == p)) { return -1; } Use (p); return 0; } void Use (PVOID p) { // // p is safe to be used here. // } En la biblioteca de MSDN se enumeran algunas razones por las que las aplicaciones no deben usar las API IsBadXXXPtr: en un entorno de multitarea preferente, es posible que algún otro subproceso cambie el acceso del proceso a la memoria que se está probando. La desreferenciación de punteros potencialmente no válidos puede deshabilitar la expansión de la pila en otros subprocesos. Un subproceso que agota su pila, cuando se ha deshabilitado la expansión de la pila, da como resultado la finalización inmediata del proceso principal, sin ventana de error emergente ni información de diagnóstico. Se espera que los subprocesos de un proceso cooperen de tal manera que uno no libere memoria que el otro necesite. El uso de esta función no niega la necesidad de hacerlo. Si no se hace, la aplicación puede producir un error de forma impredecible. Por todas estas razones, se recomienda no usar nunca estas API.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - No se usa.
  • Parámetro 2 - No se usa.
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: PROBE_NULL
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Sondeo de bloque de memoria con una dirección de inicio o tamaño no válidos.

Causa probable

Esta detención se genera si el comprobador de aplicaciones detecta una llamada a IsBadXXXPtr con una dirección de inicio no válida (por ejemplo, una dirección en modo kernel, en lugar de una dirección normal en modo de usuario) o un tamaño no válido para que se sondee el búfer de memoria. Para depurar esta detención, examine el seguimiento de pila actual (kb) e intente determinar por qué el llamador de la función IsBadXXXPtr terminó con una dirección o tamaño no válidos. Muchas veces, la dirección o el tamaño son simplemente falsos, por ejemplo, variables sin inicializar. En la biblioteca de MSDN se enumeran algunas razones por las que las aplicaciones no deben usar las API IsBadXXXPtr: en un entorno de multitarea preferente, es posible que algún otro subproceso cambie el acceso del proceso a la memoria que se está probando. La desreferenciación de punteros potencialmente no válidos puede deshabilitar la expansión de la pila en otros subprocesos. Un subproceso que agota su pila, cuando se ha deshabilitado la expansión de la pila, da como resultado la finalización inmediata del proceso principal, sin ventana de error emergente ni información de diagnóstico. Se espera que los subprocesos de un proceso cooperen de tal manera que uno no libere memoria que el otro necesite. El uso de esta función no niega la necesidad de hacerlo. Si no se hace, la aplicación puede producir un error de forma impredecible. Por todas estas razones, se recomienda no usar nunca estas API.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de inicio.
  • Parámetro 2 - Tamaño de bloque de memoria.
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: PROBE_INVALID_START_OR_SIZE
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Descarga de DLL con un tamaño o una dirección de inicio no válidos.

Causa probable

Esta detención se genera si el comprobador de la aplicación detecta una descarga de DLL con una dirección de inicio o un tamaño no válidos del intervalo de memoria DLL. Esto probablemente significa que hay daños en la memoria dentro de la lista de DLL cargada de ntdll.dll interna.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección base de memoria DLL .
  • Parámetro 2 - Tamaño del intervalo de memoria DLL.
  • Parámetro 3 - Dirección de nombre de DLL. Use du para volcarlo.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: INVALID_DLL_RANGE
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Liberación de bloque de memoria dentro del intervalo de direcciones de pila del subproceso actual.

Causa probable

Esta detención se genera si el comprobador de la aplicación detecta un elemento VirtualFree para un bloque de memoria que forma parte realmente de la pila del subproceso actual (!). Para depurar esta detención, examine el seguimiento de pila actual (kb) e intente comprender por qué la función que llamó a VirtualFree pensó que el bloque de memoria se asignó dinámicamente, pero que realmente era memoria asignada desde la pila.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección base de asignación.
  • Parámetro 2 - Tamaño de región de memoria.
  • Parámetro 3 - Dirección de límite inferior de pila.
  • Parámetro 4 - Dirección de límite superior de pila.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: FREE_THREAD_STACK_MEMORY
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Parámetro FreeType incorrecto para la operación VirtualFree.

Causa probable

Esta detención se genera si el comprobador de la aplicación detecta un elemento VirtualFree con un valor incorrecto para el parámetro FreeType. Los dos únicos valores aceptables para este parámetro son MEM_DECOMMIT y MEM_RELEASE. Si se llama a VirtualFree con cualquier otro valor excepto estos dos, VirtualFree no liberará la memoria. Para depurar esta detención, consulte el seguimiento de pila actual (kb): el llamador de VirtualFree es probablemente el causante.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Valor incorrecto usado por la aplicación.
  • Parámetro 2 - Se esperaba el valor correcto 1.
  • Parámetro 3 - Se esperaba el valor correcto 2.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: INVALID_FREE_TYPE
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Intento de liberar el bloque de memoria virtual que ya está liberado.

Causa probable

Esta detención se genera si el comprobador de la aplicación detecta un elemento VirtualFree para una dirección que ya está liberada. Para depurar esta detención, examine el seguimiento de pila actual (kb) e intente determinar por qué la memoria ya está liberada, pero la aplicación está intentando liberarla de nuevo. '!avrf -vs -a parameter1' buscará un registro de seguimientos de pila de las rutas de acceso de código que asignaron o liberaron esa dirección y mostrarán estos seguimientos de pila si están disponibles. Esto podría mostrar el seguimiento de la pila que liberó esta memoria.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de bloque de memoria.
  • Parámetro 2 - No se usa.
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: MEM_ALREADY_FREE
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Parámetro Size incorrecto para la operación VirtualFree (MEM_RELEASE).

Causa probable

Esta detención se genera si el comprobador de la aplicación detecta VirtualFree (MEM_RELEASE) con un valor distinto de cero para el parámetro dwSize. Cuando se usa MEM_RELEASE , el único valor aceptable para este parámetro es 0. Si se llama a VirtualFree con cualquier otro valor excepto 0, VirtualFree no liberará la memoria. Para depurar esta detención, consulte el seguimiento de pila actual (kb): el llamador de VirtualFree es probablemente el causante.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Tamaño incorrecto usado por la aplicación.
  • Parámetro 2 - Tamaño correcto esperado (0).
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: INVALID_FREE_SIZE
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Excepción inesperada generada en la rutina de punto de entrada DLL.

Causa probable

Esta detención se genera si la función de punto de entrada (DllMain) de un archivo DLL genera una excepción. Un ejemplo por el que esto es perjudicial es: si DllMain(DLL_PROCESS_ATTACH) genera una excepción, el cargador de DLL de Windows: - Detectar y ocultar la excepción; - Descargar el archivo DLL sin llamar a su DllMain(DLL_PROCESS_DETACH). Por lo tanto, en muchos casos, el archivo DLL ya asignó algunos recursos, después generó la excepción y no tendrá la oportunidad de liberar estos recursos en DllMain (DLL_PROCESS_DETACH). Para depurar esta detención: $ du parameter1 - para mostrar el nombre del archivo DLL; $ .exr parameter2 - para mostrar la información de excepción; $ .cxr parameter3 seguido de kb - para mostrar la información del contexto de excepción y el seguimiento de la pila durante el tiempo en que se generó la excepción; $ parameter4 es la dirección de una estructura de comprobador interno y no tiene ninguna importancia para la mayoría de los usuarios comprobadores.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Nombre de DLL (use du para volcarlo).
  • Parámetro 2 - Registro de excepción. Use .exr para mostrarlo.
  • Parámetro 3 - Registro de contexto. Use .cxr para mostrarlo.
  • Parámetro 4 - Descriptor de dll del comprobador

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: DLL_UNEXPECTED_EXCEPTION
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Excepción inesperada generada en la función de subproceso.

Causa probable

Esta detención se genera si una función de subproceso genera una excepción. Esto es perjudicial porque todo el proceso finalizará. Para depurar esta detención: $ parameter1 puede ser significativo para el tipo de excepción. Por ejemplo, un código de excepción C0000005 significa infracción de acceso; $ .exr parameter2 - para mostrar la información de excepción; $ .cxr parameter3 seguido de kb - para mostrar la información del contexto de excepción;

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Código de excepción.
  • Parámetro 2 - Registro de excepción. Use .exr para mostrarlo.
  • Parámetro 3 - Registro de contexto. Use .cxr para mostrarlo.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: THREAD_UNEXPECTED_EXCEPTION
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Excepción inesperada generada al sondear la memoria.

Causa probable

Esta detención se genera si se obtiene una excepción durante una llamada a IsBadXXXPtr. Esto significa que el búfer de memoria que estamos sondeando no tiene realmente la protección asumida por el llamador, o que la memoria ya se liberó, etc. Consulte la explicación anterior sobre otro código de detención (PROBE_INVALID_ADDRESS, PROBE_FREE_MEM, PROBE_GUARD_PAGE, PROBE_NULL, PROBE_INVALID_START_OR_SIZE) para obtener más ejemplos de por qué no se recomienda usar las API IsBadXXXPtr. Para depurar esta detención: $parameter1 normalmente será C0000005 y eso significa infracción de acceso; $ .exr parameter2 - para mostrar la información de excepción; $ .cxr parameter3 seguido de kb - para mostrar la información del contexto de excepción y el seguimiento de la pila en el momento en que se generó la excepción;

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Código de excepción.
  • Parámetro 2 - Registro de excepción. Use .exr para mostrarlo.
  • Parámetro 3 - Registro de contexto. Use .cxr para mostrarlo.
  • Parámetro 4 - No se usa

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: PROBE_UNEXPECTED_EXCEPTION
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Intento de restablecer la dirección NULL.

Causa probable

Esta detención se genera si el comprobador de la aplicación detecta una llamada a VirtualFree (MEM_RESET) con un primer parámetro NULL. MEM_RESET solo se debe usar para la memoria ya asignada, por lo que NULL no es un primer parámetro válido en este caso.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - No se usa.
  • Parámetro 2 - No se usa.
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: INVALID_MEM_RESET
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Liberación de bloque de memoria de montón dentro del intervalo de direcciones de pila del subproceso actual.

Causa probable

Esta detención se genera si el comprobador de la aplicación detecta un elemento HeapFree para un bloque de memoria que forma parte realmente de la pila del subproceso actual (!). Para depurar esta detención, examine el seguimiento de pila actual (kb) e intente comprender por qué la función que llamó a HeapFree pensó que el bloque de memoria se asignó dinámicamente, pero que realmente era memoria asignada desde la pila.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección base de asignación.
  • Parámetro 2 - Tamaño de región de memoria.
  • Parámetro 3 - Dirección de límite inferior de pila.
  • Parámetro 4 - Dirección de límite superior de pila.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: FREE_THREAD_STACK_MEMORY_AS_HEAP
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Desasignación de la región de memoria dentro del intervalo de direcciones de pila del subproceso actual.

Causa probable

Esta detención se genera si el comprobador de la aplicación detecta un elemento UnmapViewOfFile para un bloque de memoria que forma parte realmente de la pila del subproceso actual (!). Para depurar esta detención, examine el seguimiento de pila actual (kb) e intente comprender por qué la función que llamó a UnmapViewOfFile pensó que el bloque de memoria se asignó dinámicamente, pero que realmente era memoria asignada desde la pila.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección base de asignación.
  • Parámetro 2 - Tamaño de región de memoria.
  • Parámetro 3 - Dirección de límite inferior de pila.
  • Parámetro 4 - Dirección de límite superior de pila.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: FREE_THREAD_STACK_MEMORY_AS_MAP
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Dirección RTL_RESOURCE incorrecta.

Causa probable

Esta detención se genera si la aplicación intenta usar NULL o alguna otra dirección incorrecta (por ejemplo, una dirección en modo kernel) como dirección de un objeto válido. RtlInitializeResource (NULL) es una llamada API incorrecta que desencadenará este tipo de detención del comprobador. param1 es la dirección incorrecta usada y el causante está en el seguimiento de la pila (mostrarlo con kb).

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección.
  • Parámetro 2 - No se usa.
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: INVALID_RESOURCE_ADDRESS
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Dirección de sección crítica no válida.

Causa probable

Esta detención se genera si la aplicación intenta usar NULL o alguna otra dirección incorrecta (por ejemplo, una dirección en modo kernel) como dirección de un objeto válido. EnterCriticalSection(NULL) es una llamada API incorrecta que desencadenará este tipo de detención del comprobador. param1 es la dirección incorrecta usada y el causante está en el seguimiento de la pila (mostrarlo con kb).

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección.
  • Parámetro 2 - No se usa.
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: INVALID_CRITSECT_ADDRESS
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Intento de ejecutar código en memoria no ejecutable.

Causa probable

Esta detención se genera si la aplicación intenta ejecutar código desde una dirección que no es ejecutable o libre. Para depurar esta detención: $ u parameter2 - para desensamblar el código causante $ .exr parameter3 - para mostrar la información de excepción; $ .cxr parameter4 seguido de kb - para mostrar la información del contexto de excepción y el seguimiento de la pila para el momento en que se generó la excepción.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección a la que se accede.
  • Parámetro 2 - Código que realiza el acceso no válido.
  • Parámetro 3 - Registro de excepción. Use .exr para mostrarlo.
  • Parámetro 4 - Registro de contexto. Use .cxr para mostrarlo.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: THREAD_UNEXPECTED_EXCEPTION_CODE
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Excepción inesperada generada al inicializar el búfer de salida.

Causa probable

Esta detención se genera si se obtiene una excepción al inicializar un búfer especificado como parámetro de salida para una API de Win32 o CRT. Esto suele significar que el tamaño del búfer de salida especificado es incorrecto. Para depurar esta detención: $ .exr parameter3 - para mostrar la información de excepción; $ .cxr parameter4 seguido de kb - para mostrar la información del contexto de excepción y el seguimiento de la pila en el momento en que se generó la excepción.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de inicio del búfer.
  • Parámetro 2 - Tamaño del búfer.
  • Parámetro 3 - Registro de excepción. Use .exr para mostrarlo.
  • Parámetro 4 - Registro de contexto. Use .cxr para mostrarlo.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: OUTBUFF_UNEXPECTED_EXCEPTION
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Excepción inesperada al intentar encontrar el tamaño del bloque del montón.

Causa probable

Esta detención se genera si se obtiene una excepción al llamar a HeapSize para un bloque de montón que se está liberando. Esto normalmente significa que la dirección de bloque del montón especificada es incorrecta o que el montón está dañado. Para depurar esta detención: $ .exr parameter3 - para mostrar el registro de excepción; $ .cxr parameter4 seguido de kb - para mostrar la información del contexto de excepción y el seguimiento de la pila en el momento en que se generó la excepción.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección del bloque del montón que se libera.
  • Parámetro 2 - Identificador del montón.
  • Parámetro 3 - Registro de excepción. Use .exr para mostrarlo.
  • Parámetro 4 - Registro de contexto. Use .cxr para mostrarlo.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: SIZE_HEAP_UNEXPECTED_EXCEPTION
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Liberación de bloque de memoria con una dirección de inicio no válida.

Causa probable

Esta detención se genera si el programa llama a VirtualFree (MEM_RELEASE) con un parámetro lpAddress que no es la dirección base devuelta por la función VirtualAlloc o VirtualAllocEx cuando se reservó la región de las páginas. Para depurar esta detención: $ kb - para mostrar el seguimiento de la pila actual, que llama a VirtualFree. El posible causante es el archivo DLL que llama a VirtualFree.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección del bloque de memoria que se está liberando.
  • Parámetro 2 - Se esperaba una dirección de bloque de memoria correcta.
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: INVALID_FREEMEM_START_ADDRESS
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Desasignación del bloque de memoria con una dirección de inicio no válida.

Causa probable

Esta detención se genera si el programa llama a UnmapViewOfFile con un parámetro lpBaseAddress que no es idéntico al valor devuelto por una llamada anterior a la función MapViewOfFile o MapViewOfFileEx. Para depurar esta detención: $ kb - para mostrar el seguimiento de la pila actual, que llama a UnmapViewOfFile. El posible causante es el archivo DLL que llama a UnmapViewOfFile.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección del bloque de memoria que se está desasignando.
  • Parámetro 2 - Se esperaba una dirección de bloque de memoria correcta.
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: INVALID_UNMAPVIEW_START_ADDRESS
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

excepción inesperada generada en la función de devolución de llamada de grupo de subprocesos.

Causa probable

Esta detención se genera si una función de devolución de llamada en el subproceso del grupo de subprocesos genera una excepción. Para depurar esta detención: $ parameter1 puede ser significativo para el tipo de excepción. Por ejemplo, un código de excepción C0000005 significa infracción de acceso. $ .exr parameter2 - para mostrar la información de excepción. $ .cxr parameter3 seguido de kb - para mostrar la información del contexto de excepción.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Código de excepción
  • Parámetro 2 - Registro de excepción. Use .exr para mostrarlo
  • Parámetro 3 - Registro de contexto. Use .cxr para mostrarlo
  • Parámetro 4 - No se usa

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: THREADPOOL_UNEXPECTED_EXCEPTION
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

código en memoria no ejecutable

Causa probable

Esta detención se genera si la aplicación intenta ejecutar código desde una dirección que no es ejecutable o libre. Para depurar esta detención: $ u parameter2 - para desensamblar el código causante $ .exr parameter3 - para mostrar la información de excepción $ .cxr parameter4 seguido de kb - para mostrar la información del contexto de excepción y el seguimiento de la pila para el momento en que se generó la excepción.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección a la que se accede
  • Parámetro 2 - Código que realiza el acceso no válido
  • Parámetro 3 - Registro de excepción. Use .exr para mostrarlo.
  • Parámetro 4 - Registro de contexto. Use .cxr para mostrarlo.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: THREADPOOL_UNEXPECTED_EXCEPTION_CODE
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Creación de montón ejecutable.

Causa probable

Esta detención se genera si la aplicación está creando un montón ejecutable. Esto puede ser un riesgo para la seguridad.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - No se usa.
  • Parámetro 2 - No se usa.
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: EXECUTABLE_HEAP
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Asignación de memoria ejecutable.

Causa probable

Esta detención se genera si la aplicación asigna memoria ejecutable. Esto puede ser un riesgo para la seguridad.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Protección de página especificada por el llamador.
  • Parámetro 2 - No se usa.
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Memoria
  • ID de detención: EXECUTABLE_MEMORY
  • Código de detención: 600NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Detalles de detención por TLS

Descarga del archivo DLL que asignó el índice TLS que no se liberó.

Causa probable

Esta detención se genera si se descarga un archivo DLL que asignó un índice TLS antes de liberar ese índice TLS. Para depurar esta detención: $ du parameter3 - mostrar el nombre del archivo DLL causante; $ .reload xxx.dll=parameter4 - volver a cargar símbolos para el archivo DLL causante (si es necesario). xxx.dll es el nombre del archivo DLL que se muestra en el paso anterior; $ u parameter2 - desensamblar el código que asignó TLS. Esto debe apuntar a la función que asignó TLS pero olvidó liberarla antes de que se descargara el archivo DLL.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Índice TLS
  • Parámetro 2 - Dirección del código que asignó este índice TLS.
  • Parámetro 3 - Dirección de nombre de DLL. Use du para volcarlo.
  • Parámetro 4 - Dirección base de DLL.

Información adicional
  • Capa de prueba: TLS
  • ID de detención: TLS_LEAK
  • Código de detención: 350NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Estructura TLS del comprobador dañada.

Causa probable

Esta detención se genera si las estructuras de comprobador internas usadas para almacenar el estado de las ranuras TLS para el subproceso están dañadas. Es muy probable que esto se deba a daños aleatorios en el proceso.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección TEB.
  • Parámetro 2 - Dirección TEB esperada.
  • Parámetro 3 - ID de subproceso.
  • Parámetro 4 - ID de subproceso esperado.

Información adicional
  • Capa de prueba: TLS
  • ID de detención: CORRUPTED_TLS
  • Código de detención: 350NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Uso de un índice TLS no válido.

Causa probable

Esta detención se genera si se usa un índice TLS no válido. En la mayoría de los casos, se debe a que el código sigue usando este índice cuando se llama a TlsFree. Este es un ejemplo para el subproceso de grupo de subprocesos. T1: Dll se carga y TlsAlloc T1: Devolución de llamada de cola T1: Devolución de llamada en espera/cancelada omitida T1: TlsFree T2: La devolución de llamada se ejecuta y llama a TlsSetValue T1: Descarga de Dll

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Índice TLS
  • Parámetro 2 - No se usa.
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: TLS
  • ID de detención: INVALID_TLS_INDEX
  • Código de detención: 350NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Detalles de detención por grupo de subprocesos

Se ha cambiado la prioridad de este subproceso de grupo de subprocesos.

Causa probable

Esta detención se genera si se cambia la prioridad del subproceso cuando se devuelve al grupo de subprocesos.

Información mostrada por el comprobador de aplicaciones
  • Formato: -  el subproceso del grupo de subprocesos (%x) que ha ejecutado la devolución de llamada (%p) tiene una prioridad de subproceso modificada (%i -> %i)
  • Parámetro 1 - Función de devolución de llamada.
  • Parámetro 2 - Contexto.
  • Parámetro 3 - Seguimiento de la pila de asignación de objetos de grupo de subprocesos, use dps para volcarlo.
  • Parámetro 4 - Prioridad actual.

Información adicional
  • Capa de prueba: Grupo de subprocesos
  • ID de detención: INCONSISTENT_PRIORITY
  • Código de detención: 700NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Se ha cambiado la afinidad de este subproceso de grupo de subprocesos.

Causa probable

Esta detención se genera si se cambia la afinidad del subproceso cuando se devuelve al grupo de subprocesos.

Información mostrada por el comprobador de aplicaciones
  • Formato: - el subproceso del grupo de subprocesos (%x) que ha ejecutado la devolución de llamada (%p) tiene una máscara de afinidad de subproceso modificada (%p -> %p)
  • Parámetro 1 - Función de devolución de llamada.
  • Parámetro 2 - Contexto.
  • Parámetro 3 - Seguimiento de la pila de asignación de objetos de grupo de subprocesos, use dps para volcarlo.
  • Parámetro 4 - Afinidad actual.

Información adicional
  • Capa de prueba: Grupo de subprocesos
  • ID de detención: INCONSISTENT_AFFINITY_MASK
  • Código de detención: 700NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Mensaje sin procesar en el grupo de mensajes del subproceso actual.

Causa probable

Esta detención se genera si se deja algún mensaje como no procesado cuando se devuelve al grupo este subproceso del grupo de subprocesos. Es peligroso, ya que se procesará en un contexto totalmente diferente. Use !avrf -tp <Param4> para ver los mensajes publicados en este subproceso.

Información mostrada por el comprobador de aplicaciones
  • Formato: - el subproceso del grupo de subprocesos (%x) que ha ejecutado la devolución de llamada (%p) tiene un mensaje de ventana pendiente (%x: %x)
  • Parámetro 1 - Función de devolución de llamada.
  • Parámetro 2 - Contexto.
  • Parámetro 3 - Seguimiento de la pila de asignación de objetos de grupo de subprocesos, use dps para volcarlo.
  • Parámetro 4 - ID de subproceso del grupo de subprocesos. Use !avrf -tp <threadid> para ver los mensajes publicados en este subproceso.

Información adicional
  • Capa de prueba: Grupo de subprocesos
  • ID de detención: ORPHANED_THREAD_MESSAGE
  • Código de detención: 700NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

La ventana no cerrada pertenece al subproceso actual.

Causa probable

Esta detención se genera si alguna ventana se mantiene activa cuando se devuelve este subproceso del grupo de subprocesos al grupo.

Información mostrada por el comprobador de aplicaciones
  • Formato: -  el subproceso de grupo de subprocesos (%x) que ha ejecutado la devolución de llamada (%p) tiene hwnd válido (%x: %s) que podría recibir mensajes
  • Parámetro 1 - Función de devolución de llamada.
  • Parámetro 2 - Contexto.
  • Parámetro 3 - Seguimiento de la pila de asignación de objetos de grupo de subprocesos, use dps para volcarlo.
  • Parámetro 4 - ID de subproceso del grupo de subprocesos.

Información adicional
  • Capa de prueba: Grupo de subprocesos
  • ID de detención: ORPHANED_THREAD_WINDOW
  • Código de detención: 700NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

ExitThread() en un subproceso de grupo de subprocesos.

Causa probable

Esta detención se genera si se llama a ExitThread en un subproceso de grupo de subprocesos. Está prohibido, ya que hará que el sistema sea inestable. Provocará pérdida de recursos, inmovilización o AV.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Función de devolución de llamada.
  • Parámetro 2 - Contexto.
  • Parámetro 3 - Seguimiento de la pila de asignación de objetos de grupo de subprocesos, use dps para volcarlo.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Grupo de subprocesos
  • ID de detención: ILLEGAL_THREAD_EXIT
  • Código de detención: 700NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

El subproceso está en estado de suplantación cuando se devuelve a un subproceso de grupo de subprocesos.

Causa probable

Esta detención se genera si la función de devolución de llamada cambia el token de subproceso para suplantar a otro usuario y se olvidó de restablecerlo antes de devolverlo al grupo de subprocesos.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Función de devolución de llamada.
  • Parámetro 2 - Contexto.
  • Parámetro 3 - Seguimiento de la pila de asignación de objetos de grupo de subprocesos, use dps para volcarlo.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Grupo de subprocesos
  • ID de detención: THREAD_IN_IMPERSONATION
  • Código de detención: 700NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Se llama a una función que requiere un subproceso persistente.

Causa probable

Es necesario llamar a algunas API de Microsoft Windows dentro de un subproceso dedicado o persistente. En el grupo de subprocesos, normalmente debe evitar el uso del almacenamiento local de subprocesos y las llamadas asincrónicas que requieren un subproceso persistente, como la función RegNotifyChangeKeyValue. Sin embargo, estas funciones se pueden poner en cola en un subproceso de trabajo persistente mediante QueueUserWorkItem con la opción WT_EXECUTEINPERSISTENTTHREAD. Un kb en el depurador mostrará el llamador.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Función de devolución de llamada.
  • Parámetro 2 - Contexto.
  • Parámetro 3 - Seguimiento de la pila de asignación de objetos de grupo de subprocesos, use dps para volcarlo.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Grupo de subprocesos
  • ID de detención: PERSISTED_THREAD_NEEDED
  • Código de detención: 700NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

El subproceso está en estado de transacción sucia.

Causa probable

Esta detención se genera si la función de devolución de llamada olvidó cerrar o restablecer el identificador de transacción actual.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Función de devolución de llamada.
  • Parámetro 2 - Contexto.
  • Parámetro 3 - Seguimiento de la pila de asignación de objetos de grupo de subprocesos, use dps para volcarlo.
  • Parámetro 4 - Identificador de transacción.

Información adicional
  • Capa de prueba: Grupo de subprocesos
  • ID de detención: DIRTY_TRANSACTION_CONTEXT
  • Código de detención: 700NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Este estado del grupo de subprocesos tiene llamadas CoInit y CoUnInit desequilibradas.

Causa probable

Esta detención se genera si la función de devolución de llamada llama a CoInit y CoUnInit desequilibrados.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Función de devolución de llamada.
  • Parámetro 2 - Contexto.
  • Parámetro 3 - Seguimiento de la pila de asignación de objetos de grupo de subprocesos, use dps para volcarlo.
  • Parámetro 4 - Recuentos de llamadas equilibradas.

Información adicional
  • Capa de prueba: Grupo de subprocesos
  • ID de detención: DIRTY_COM_STATE
  • Código de detención: 700NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Los parámetros del objeto de temporizador son incoherentes. El período debe ser 0 cuando se especifica WT_EXECUTEONLYONCE al crear el temporizador

Causa probable

Esta detención se genera si el período para señalar el temporizador no es cero cuando el temporizador está configurado para señalar solo una vez con la marca WT_EXECUTEONLYONCE

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Período especificado.
  • Parámetro 2 - Marcas especificadas.
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Grupo de subprocesos
  • ID de detención: INCONSISTENT_TIMER_PARAMS
  • Código de detención: 700NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

El subproceso del grupo de subprocesos mantiene el bloqueo del cargador dentro de la devolución de llamada.

Causa probable

Esta detención se genera si el bloqueo del cargador se mantiene dentro de la devolución de llamada y no se libera cuando el subproceso se devuelve al grupo de subprocesos.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Función de devolución de llamada.
  • Parámetro 2 - Contexto.
  • Parámetro 3 - Seguimiento de la pila de asignación de objetos de grupo de subprocesos, use dps para volcarlo.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Grupo de subprocesos
  • ID de detención: LOADER_LOCK_HELD
  • Código de detención: 700NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

El idioma preferido lo establece el subproceso del grupo de subprocesos dentro de la devolución de llamada.

Causa probable

Esta detención se genera si el idioma preferido se establece dentro de la devolución de llamada y no se borra cuando el subproceso se devuelve al grupo de subprocesos.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Función de devolución de llamada.
  • Parámetro 2 - Contexto.
  • Parámetro 3 - Seguimiento de la pila de asignación de objetos de grupo de subprocesos, use dps para volcarlo.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Grupo de subprocesos
  • ID de detención: PREFERRED_LANGUAGES_SET
  • Código de detención: 700NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

El subproceso del grupo de subprocesos establece la prioridad en segundo plano dentro de la devolución de llamada.

Causa probable

Esta detención se genera si la prioridad en segundo plano se establece dentro de la devolución de llamada y no se deshabilita cuando el subproceso se devuelve al grupo de subprocesos.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Función de devolución de llamada.
  • Parámetro 2 - Contexto.
  • Parámetro 3 - Seguimiento de la pila de asignación de objetos de grupo de subprocesos, use dps para volcarlo.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Grupo de subprocesos
  • ID de detención: BACKGROUND_PRIORITY_SET
  • Código de detención: 700NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

TerminateThread() en un subproceso de grupo de subprocesos.

Causa probable

Esta detención se genera si se llama a TerminateThread en un subproceso de grupo de subprocesos. Está prohibido, ya que hará que el sistema sea inestable. Provocará pérdida de recursos, inmovilización o AV.

Información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - No se usa.
  • Parámetro 2 - No se usa.
  • Parámetro 3 - No se usa.
  • Parámetro 4 - No se usa.

Información adicional
  • Capa de prueba: Grupo de subprocesos
  • ID de detención: ILLEGAL_THREAD_TERMINATION
  • Código de detención: 700NAN
  • Gravedad: Error
  • Error único: 
  • Informe de errores: Interrumpir
  • Registrar en archivo: sí
  • Crear seguimiento: sí

Consulte también

Comprobador de aplicaciones - Códigos de detención y definiciones

Comprobador de aplicaciones - Información general

Comprobador de aplicaciones - Características

Comprobador de aplicaciones - Pruebas de aplicaciones

Comprobador de aplicaciones - Pruebas dentro del comprobador de aplicaciones

Comprobador de aplicaciones - Depuración de las detenciones del comprobador de aplicaciones

Comprobador de aplicaciones - Preguntas más frecuentes