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 el conjunto básico de pruebas.

Detalles de detención de excepciones

Intente 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> : desemble el código culpable
  • Parámetro .exr3><: mostrar la información de excepción
  • Parámetro .cxr4><: mostrar la información del contexto de excepción
  • kb : muestra el seguimiento de la pila durante la hora 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 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: 650
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Controla los detalles de detención

Excepción de identificador no válida 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 las rutinas del sistema. Normalmente, un comando "kb" simple revelará 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 tiene un aspecto correcto, debe usar la extensión del depurador "!htrace" para obtener un historial de operaciones relativas a este valor de identificador. En la mayoría de los casos, el valor de identificador se usa después de cerrarse.

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: Manijas
  • Id. de detención: INVALID_HANDLE
  • Código de detención: 300
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 las rutinas del sistema TLS. Normalmente, un comando "kb" simple revelará 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 suponiendo que siempre obtiene el valor N y, por tanto, no es necesario llamar a "TlsAlloc". Con más frecuencia, se debe 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: Manijas
  • Id. de detención: INVALID_TLS_VALUE
  • Código de detención: 301
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 que se va a 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: Manijas
  • Id. de detención: INCORRECT_WAIT_CALL
  • Código de detención: 302
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 las rutinas del sistema. Normalmente, un comando "kb" simple revelará cuál es el valor del identificador pasado (debe ser uno de los parámetros, normalmente el primero).

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Uso del identificador NULL
  • Parámetro 2 - No se usa
  • Parámetro 3 - No se usa
  • Parámetro 4 - No se usa

Información adicional
  • Capa de prueba: Manijas
  • Id. de detención: NULL_HANDLE
  • Código de detención: 303
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Esperando 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 es lo más probable que lleve a un interbloqueo porque el identificador del subproceso no se indicará a menos que el segundo subproceso salga. Cuando el segundo subproceso llama a "ExitThread", intenta adquirir el bloqueo del cargador dll y, a continuación, llama a "DllMain" (DLL_THREAD_DETACH) para todos los archivos DLL del proceso actual. Dado que el bloqueo del cargador es propiedad del primer subproceso (el que está esperando en el identificador de subproceso), los dos subprocesos se interbloquean.

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: Manijas
  • Id. de detención: WAIT_IN_DLLMAIN
  • Código de detención: 304
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 genera esta detención. Para depurar esta detención:

  • kb : para mostrar el seguimiento de la pila actual. El culpable 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, esto muestra "Semáforo".
  • du <parameter3> : para mostrar el tipo de objeto esperado por la API. En el ejemplo anterior, este nombre es "Event".
  • !htrace <parameter1> : puede resultar útil, ya que muestra 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 - Handle value (Identificador de valor).
  • Parámetro 2 - Nombre del tipo de objeto. Use du para mostrarlo
  • Parámetro 3 - Se esperaba el nombre del tipo de objeto. Use du para mostrarlo
  • parámetro 4 : no se usa .

Información adicional
  • Capa de prueba: Manijas
  • Id. de detención: INCORRECT_OBJECT_TYPE
  • Código de detención: 305
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Detención de 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: 0x1
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 tocando 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 proporciona detalles sobre la naturaleza del error y qué bloque de montón se sobreeje. También proporciona el seguimiento de la pila para la asignación de bloques. Hay otras causas para esta detención, por ejemplo, el acceso a un bloque de montón después de liberarse. El mismo comando del depurador es ú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: 0x2
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

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

causa probable

Se supone que no se tiene acceso a un montón creado con HEAP_NO_SERIALIZE marca desde dos subprocesos. Si se detecta esta situación, recibirá este mensaje. La forma habitual de que esta situación se desencadece en un programa es vinculando con una versión de un solo subproceso del entorno de ejecución de C. Visual C++, por ejemplo, puede vincular estáticamente una biblioteca de este tipo cuando se usan las marcas adecuadas. A continuación, los desarrolladores 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 - Identificador de subproceso para el propietario actual de la sección crítica del montón.
  • Parámetro 3 - Identificador de subproceso del subproceso actual que intenta escribir el 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: 0x3
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 - Size 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: 0x4
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 el siguiente comando del depurador:

  • !montón -p

Tenga en cuenta que si simplemente cambia un identificador de montón válido con otro válido en una operación de montón, no obtendrá esta detención (el identificador es válido después de todo). Sin embargo, el comprobador del montón detecta esta situación e informa de esta situación con SWITCHED_HEAP_HANDLE detención.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador del 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: 0x5
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 del depurador "!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 usado en la llamada.
  • Parámetro 2 - Bloque 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: 0x6
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 alrededor durante un tiempo en una cola libre retrasada. Si un programa con errores intenta liberar de nuevo el bloque, se detectará esto, suponiendo que el bloque no se descargó de la cola libre retrasada y su memoria reutilizada para otras asignaciones. La profundidad de la cola de retraso libre está en el orden de miles de bloques, por lo que hay buenas posibilidades de que se detecte la mayoría de los libres dobles.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador del montón para el montón que posee el bloque.
  • Parámetro 2 - Bloque de montón que se libera de nuevo.
  • 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: 0x7
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 usado en la llamada.
  • Parámetro 2 - Bloque montón implicado en la operación.
  • Parámetro 3 - Tamaño del bloque del montón.
  • Parámetro 4 - Reserved

Información adicional
  • Capa de prueba: Montones
  • Id. de detención: CORRUPTED_HEAP_BLOCK
  • Código de detención: 0x8
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Intente 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 del montón usado 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: 0x9
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Excepción inesperada generada en el código 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 algunas 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:

  • dd parameter2 L2
  • .exr first_dword
  • .cxr second_dword

Normalmente, esta detención se produce si hay daños aleatorios 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: 0xA
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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. Por ejemplo, cuando la dirección del bloque del montón pasada a una operación libre de montón 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 del montón para el montón que posee el bloque.
  • Parámetro 2 - Bloque 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: 0xB
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 libre de montón pasa una dirección que apunta a un área de memoria no accesible. Esto también puede ocurrir para situaciones dobles libres 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 usado en la llamada.
  • Parámetro 2 - Bloque 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: 0xC
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

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

causa probable

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

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador del montón para el montón que posee el bloque.
  • Parámetro 2 - Bloque 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: 0xD
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 infringir (diferente detención del comprobador). En otros casos (por ejemplo, un 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 el código revisar el código que podría ser incorrecto.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador del montón para el montón que posee el bloque.
  • Parámetro 2 - Bloque montón que se libera.
  • 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: 0xE
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 las saturaciones de asignación y búfer provocará 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. Estos saltos pueden ser bastante difíciles de depurar porque no tiene el momento real en el que se produjo daños. Solo tiene acceso al momento libre (es decir, "detenerse aquí") 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 usado en la llamada.
  • Parámetro 2 - Bloque 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: 0xF
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

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

causa probable

Esto sucede para las infraejecuciones del búfer.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador del montón usado en la llamada.
  • Parámetro 2 - Bloque montón implicado en la operación.
  • Parámetro 3 - Tamaño del bloque del montón.
  • Parámetro 4 - Valor de sello dañado.

Información adicional
  • Capa de prueba: Montones
  • Id. de detención: CORRUPTED_HEAP_BLOCK_START_STAMP
  • Código de detención: 0x10
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

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

causa probable

Esto sucede para las infraejecuciones del búfer.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador del montón usado en la llamada.
  • Parámetro 2 - Bloque montón implicado en la operación.
  • Parámetro 3 - Tamaño del bloque del montón.
  • Parámetro 4 - Valor de sello dañado.

Información adicional
  • Capa de prueba: Montones
  • Id. de detención: CORRUPTED_HEAP_BLOCK_END_STAMP
  • Código de detención: 0x11
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

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

causa probable

Esto sucede para las infraejecuciones del búfer.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Identificador del montón usado en la llamada.
  • Parámetro 2 - Bloque 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: 0x12
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 tocando 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:

  • !montón -p -a ACCESS_ADDRESS

Este comando proporcionará detalles sobre la naturaleza del error y el bloque de montón que se sobreeje. También proporcionará el seguimiento de la pila para la asignación de bloques. Hay otras causas para esta detención, por ejemplo, el acceso a un bloque de montón después de liberarse. El mismo comando del depurador será útil para este caso.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección no válida que causa 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: 0x13
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

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

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 real del montón.
  • 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: 0x14
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Detalles de la detención de fugas

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 posee recursos.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección de la asignación filtrada. Ejecute !heap -p -a <address> para obtener información adicional sobre la asignación.
  • Parámetro 2 - Dirección al seguimiento de la pila de asignación. Ejecute dps address< (Dirección dps>) para ver la pila de asignación.
  • Parámetro 3 - Dirección del nombre dll del propietario. Ejecute du <address> para leer el nombre del archivo DLL.
  • Parámetro 4 - Base del archivo dll del propietario. Ejecute .reload <dll_name> = <address> 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: Fuga
  • Id. de detención: ASIGNACIÓN
  • Código de detención: 0x900
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Se ha filtrado un HANDLE.

causa probable

Esta detención se genera si el archivo DLL del propietario del identificador se descargó dinámicamente mientras posee recursos. Para depurar esta parada: ejecute el parámetro !htrace1 para obtener información adicional sobre el identificador.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Valor del identificador filtrado. Ejecute el identificador< !htrace >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 address< (Dirección dps>) para ver la pila de asignación.
  • Parámetro 3 - Dirección del nombre dll del propietario. Ejecute du <address> para leer el nombre del archivo DLL.
  • Parámetro 4 - Base del archivo dll del propietario. Ejecute .reload <dll_name> = <address> 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: Fuga
  • Id. de detención: ASA
  • Código de detención: 0x901
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 ha descargado dinámicamente mientras posee 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 address< (Dirección dps>) para ver la pila de asignación.
  • Parámetro 3 - Dirección del nombre dll del propietario. Ejecute du <address> para leer el nombre del archivo DLL.
  • Parámetro 4 - Base del archivo dll del propietario. Ejecute .reload <dll_name> = <address> 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: Fuga
  • Id. de detención: REGISTRO
  • Código de detención: 0x902
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 ha descargado dinámicamente mientras posee 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 address< (Dirección dps>) para ver la pila de asignación.
  • Parámetro 3 - Dirección del nombre dll del propietario. Ejecute du <address> para leer el nombre del archivo DLL.
  • Parámetro 4 - Base del archivo dll del propietario. Ejecute .reload <dll_name> = <address> 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: Fuga
  • Id. de detención: VIRTUAL_RESERVATION
  • Código de detención: 0x903
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Se filtró un BSTR.

causa probable

Esta detención se genera si el archivo DLL del propietario de SysString se ha descargado dinámicamente mientras posee recursos.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Dirección del BSTR filtrado. Ejecute !heap -p -a <address> para obtener información adicional sobre la asignación.
  • Parámetro 2 - Dirección al seguimiento de la pila de asignación. Ejecute dps address< (Dirección dps>) para ver la pila de asignación.
  • Parámetro 3 - Dirección del nombre dll del propietario. Ejecute du <address> para leer el nombre del archivo DLL.
  • Parámetro 4 - Base del archivo dll del propietario. Ejecute .reload <dll_name> = <address> 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: Fuga
  • Id. de detención: SYSSTRING
  • Código de detención: 0x904
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

No se ha registrado 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 y se descargó dinámicamente sin anular 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 address< (Dirección dps>) para ver la pila de asignación.
  • Parámetro 3 - Dirección del nombre dll del propietario. Ejecute du <address> para leer el nombre del archivo DLL.
  • Parámetro 4 - Base del archivo dll del propietario. Ejecute .reload <dll_name> = <address> 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: Fuga
  • Id. de detención: POWER_NOTIFICATION
  • Código de detención: 0x905
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Detalles de detención de bloqueos

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

causa probable

Esta detención se genera si un subproceso (el identificador de 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 culpable. 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 de memoria sobre esta sección crítica.
  • parámetro ln2><: 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.
  • parámetro dps4><: 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 - Identificador 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 - Critical section initialization stack trace( Seguimiento de pila de inicialización de sección crítica).

Información adicional
  • Capa de prueba: Cerraduras
  • Id. de detención: EXIT_THREAD_OWNS_LOCK
  • Código de detención: 0x200
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Descargar 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 culpable.
  • .reload dllname o .reload dllname = <parameter4> : para volver a cargar los símbolos de ese archivo DLL.
  • !cs -s <parameter1> : información de volcado de memoria sobre esta sección crítica.
  • parámetro ln1 <:> 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 - Critical section initialization stack trace( Seguimiento de pila de inicialización de sección crítica).
  • Parámetro 3 Dirección de nombre - DLL.
  • Parámetro 4 Dirección base de - DLL.

Información adicional
  • Capa de prueba: Cerraduras
  • Id. de detención: LOCK_IN_UNLOADED_DLL
  • Código de detención: 0x201
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Liberar bloque de montón que contenga 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.
  • parámetro ln1 <:> 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 - Critical section initialization stack trace( 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 del bloque del montón.

Información adicional
  • Capa de prueba: Cerraduras
  • Id. de detención: LOCK_IN_FREED_HEAP
  • Código de detención: 0x202
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 e inútiles. Para depurar esta detención:

  • !cs -s -d <parameter2> : información de volcado sobre esta sección crítica.
  • parámetro ln1 <:> 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 - Primer seguimiento de pila de inicialización.
  • Parámetro 4 - Segundo seguimiento de pila de inicialización.

Información adicional
  • Capa de prueba: Cerraduras
  • Id. de detención: LOCK_DOUBLE_INITIALIZE
  • Código de detención: 0x203
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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:</p.>

  • !cs -s -d <parameter2> : información de volcado 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 bloqueo detecta secciones críticas filtradas inmediatamente contenidas en una asignación de montón, un intervalo 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ó presionando "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 - Critical section initialization stack trace( Seguimiento de pila de inicialización de sección crítica).
  • parámetro 4 : no se usa .

Información adicional
  • Capa de prueba: Cerraduras
  • Id. de detención: LOCK_IN_FREED_MEMORY
  • Código de detención: 0x204
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Sección crítica dañada.

causa probable

Esta detención se genera si el campo DepurarInfo 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 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 confiable).
  • !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 confiable).
  • parámetro dps4><: para identificar la ruta de acceso del código para inicializar esta sección crítica.

Volque 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 pila de inicialización.

Información adicional
  • Capa de prueba: Cerraduras
  • Id. de detención: LOCK_CORRUPTED
  • Código de detención: 0x205
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 de memoria sobre esta sección crítica.
  • parámetro ln1 <:> 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 - Se esperaba un subproceso propietario.
  • Parámetro 4 - Dirección de información de depuración de sección crítica.

Información adicional
  • Capa de prueba: Cerraduras
  • Id. de detención: LOCK_INVALID_OWNER
  • Código de detención: 0x206
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

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

causa probable

Esta detención se genera si el campo 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 de memoria sobre esta sección crítica.
  • parámetro ln1 <:> 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 - Número de recursividad esperado.
  • Parámetro 4 - Dirección de información de depuración de sección crítica.

Información adicional
  • Capa de prueba: Cerraduras
  • Id. de detención: LOCK_INVALID_RECURSION_COUNT
  • Código de detención: 0x207
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 de memoria sobre esta sección crítica. Si el subproceso propietario es 0, no se ha inicializado la sección crítica.
  • parámetro ln1 <:> 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 - Se esperaba el recuento de bloqueos.
  • Parámetro 4 - Subproceso propietario.

Información adicional
  • Capa de prueba: Cerraduras
  • Id. de detención: LOCK_INVALID_LOCK_COUNT
  • Código de detención: 0x208
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Sección crítica superada o dañada.

causa probable

Esta detención se genera si se libera una sección crítica más veces que el subproceso actual lo adquirió. Para depurar esta detención:

  • !cs -s <parameter1> : información de volcado de memoria sobre esta sección crítica.
  • !cs -s -d <parameter4> : información de volcado sobre esta sección crítica.
  • parámetro ln1 <:> 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 - Se esperaba el recuento de bloqueos.
  • Parámetro 4 - Dirección de información de depuración de sección crítica.

Información adicional
  • Capa de prueba: Cerraduras
  • Id. de detención: LOCK_OVER_RELEASED
  • Código de detención: 0x209
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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:

  • parámetro ln1 <:> 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 sección crítica.
  • parámetro 3 : no se usa .
  • parámetro 4 : no se usa .

Información adicional
  • Capa de prueba: Cerraduras
  • Id. de detención: LOCK_NOT_INITIALIZED
  • Código de detención: 0x210
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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.
  • parámetro ln1 <:> 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 la 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 sección crítica.
  • Parámetro 3 - Primer seguimiento de pila de inicialización. Usar dps para volcarlo si no es NULL
  • parámetro 4 : no se usa .

Información adicional
  • Capa de prueba: Cerraduras
  • Id. de detención: LOCK_ALREADY_INITIALIZED
  • Código de detención: 0x211
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Liberar memoria virtual que contenga 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 culpable probable es el archivo DLL que llama a VirtualFree.
  • !cs -s <parameter1> : información de volcado de memoria 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 - Critical section initialization stack trace( 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 del bloque de memoria.

Información adicional
  • Capa de prueba: Cerraduras
  • Id. de detención: LOCK_IN_FREED_VMEM
  • Código de detención: 0x212
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 quitar el mapa de esta memoria.

  • kb : para mostrar el seguimiento de pila actual, que llama a UnmapViewOfFile . El culpable probable es el archivo DLL que llama a UnmapViewOfFile.
  • !cs -s <parameter1> : información de volcado de memoria 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 - Critical section initialization stack trace( 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 del bloque de memoria.

Información adicional
  • Capa de prueba: Cerraduras
  • Id. de detención: LOCK_IN_UNMAPPED_MEM
  • Código de detención: 0x213
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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. Intenta dejar una sección crítica que no entró, o quizás llame a LeaveCriticalSection más veces de lo 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: Cerraduras
  • Id. de detención: THREAD_NOT_LOCK_OWNER
  • Código de detención: 0x214
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 bloqueo privado que reside dentro de otro archivo DLL. Por ejemplo, a.dll intenta escribir 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: Cerraduras
  • Id. de detención: LOCK_PRIVATE
  • Código de detención: 0x215
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Detalles de detención de 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. Para depurar esta detención, use "kb" para obtener el seguimiento de la pila actual. Aquí es donde se usa el bloqueo SRW. El bloqueo SRW se debe inicializar con "InitializeSRWLock" antes de poder usarse.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - SRW Lock
  • 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: 0x250
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 y bloqueos. El seguimiento de la pila de inicialización puede mostrar una adquisición si el bloqueo SRW se inicializó estáticamente. Para depurar esta detención:

  • kb : para obtener el seguimiento de la pila actual. Aquí es donde se vuelve a inicializar el bloqueo SRW.
  • dps <parameter3> : para obtener el seguimiento de la pila de inicialización del 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 - SRW Lock
  • Parámetro 2 - ThreadId del subproceso que inicializó el bloqueo SRW.
  • Parámetro 3 - Dirección del seguimiento de la pila de inicialización. Use la dirección< dps >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: 0x251
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Acquire-Release no coincide 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 de SRW se adquirió para el acceso compartido y se libera mediante la API de versió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 y bloqueos. Para depurar esta detención:

  • kb : para obtener el seguimiento de la pila actual. Aquí es donde se libera el bloqueo de SRW mediante la API incorrecta.
  • dps <parameter3> : para obtener el seguimiento de la pila de adquisición del bloqueo SRW.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - SRW Lock
  • Parámetro 2 - ThreadId del subproceso que adquirió el bloqueo SRW.
  • Parámetro 3 - Dirección del seguimiento de la pila de adquisición. Use la dirección< dps >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: 0x252
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 waiter exclusivo (en este caso B). Dado que los bloqueos SRW no tienen hambre de escritura, el subproceso A espera detrás del subproceso B. Ahora, el subproceso B está esperando el subproceso A, que a su vez espera a que el subproceso B provoque una espera circular y, por tanto, un interbloqueo. Para depurar esta detención:

  • kb : para obtener el seguimiento de la pila actual. Aquí es donde el bloqueo SRW se adquiere de forma recursiva.
  • dps <parameter2> : para obtener el seguimiento de la pila para la primera adquisición.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - SRW Lock
  • Parámetro 2 - Dirección del primer seguimiento de la pila de adquisición. Use la dirección< dps >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: 0x253
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

El subproceso que sale o finaliza posee un bloqueo SRW.

causa probable

Esta parada 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 intentan adquirir este bloqueo se bloquearían indefinidamente. Para depurar su parada:

  • kb : para obtener el seguimiento de la pila actual. Aquí es donde el subproceso sale o se está finalizando.
  • dps< parameter3>: para obtener el seguimiento de la pila de adquisición del bloqueo SRW.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - SRW Lock
  • Parámetro 2 - ThreadId del subproceso que sale o finaliza.
  • Parámetro 3 - Dirección del seguimiento de la pila de adquisición. Use la dirección< dps >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: 0x254
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Este subproceso no adquirió el bloqueo SRW.

causa probable

Esta detención se genera si el subproceso (Param1) del subproceso (Param2) que no adquirió el bloqueo. Esto representa una práctica de programación incorrecta que es difícil de obtener correctamente y puede provocar un comportamiento impredecible por parte de la aplicación. Para depurar esta detención:

  • kb : para obtener el seguimiento de la pila actual. Aquí es donde el subproceso libera el bloqueo SRW que no adquirió.
  • parámetro dps4><: para obtener el seguimiento de la pila de adquisición del bloqueo SRW.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - SRW Lock
  • Parámetro 2 - ThreadId actual.
  • Parámetro 3 - ThreadId del subproceso que adquirió el bloqueo SRW.
  • Parámetro 4 - Dirección del seguimiento de la pila de adquisición. Use la dirección< dps >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: 0x255
  • gravedad de : advertencia de 
  • error único: 
  • Informe de errores de : Ninguno
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 y bloqueos. Para depurar esta detención:

  • kb : para obtener el seguimiento de la pila actual. Aquí es donde se libera la memoria que contiene un bloqueo DE SRW activo.
  • parámetro dps4><: para obtener el seguimiento de la pila de adquisición del bloqueo SRW.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - SRW Lock
  • Parámetro 2 - Dirección de la memoria que se libera.
  • Parámetro 3 - ThreadId del subproceso que adquirió el bloqueo SRW.
  • Parámetro 4 - Dirección del seguimiento de la pila de adquisición. Use la dirección< dps >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: 0x256
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 y bloqueos. Para depurar esta detención:

  • kb : para obtener el seguimiento de la pila actual. Aquí es donde se descarga el archivo DLL que contiene un bloqueo SRW activo.
  • du <parameter2> : para buscar el nombre del archivo DLL que se está descargando.
  • parámetro dps4><: para obtener el seguimiento de la pila de adquisición del bloqueo SRW.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - SRW Lock
  • Parámetro 2 - Dirección del nombre del archivo DLL que se descarga. Use du <address> para ver el nombre.
  • Parámetro 3 - ThreadId del subproceso que adquirió el bloqueo SRW.
  • Parámetro 4 - Dirección del seguimiento de la pila de adquisición. Use la dirección< dps >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: 0x257
  • gravedad de : advertencia de 
  • error único: 
  • Informe de errores de : Ninguno
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Detalles de detención de memoria

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

causa probable

Esta detención se genera si el comprobador de la aplicación detecta una descarga virtual o dll con una dirección de inicio o un tamaño de inicio 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 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 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_FREEMEM
  • Código de detención: 0x600
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Llamada de aocción virtual incorrecta.

causa probable

Esta detención se genera si el comprobador de la aplicación 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 pila actual (kb) y la dirección y el tamaño de memoria 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: 0x601
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Llamada incorrecta a la vista de mapa.

causa probable

Esta detención se genera si el comprobador de la aplicación detecta una llamada 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 y el tamaño de memoria 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 vista.
  • 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: 0x602
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Sondeo de una dirección no válida.

causa probable

Esta detención se genera si el comprobador de la aplicación 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 autor de la llamada de la función IsBadXXXPtr terminó con una dirección no válida. Muchas veces, la dirección es falsa sin formato, por ejemplo, un puntero no inicializado. MSDN Library enumera algunas razones por las que las aplicaciones no deben usar las API isBadXXXPtr: en un entorno de tareas múltiples preferentes, 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 primario, 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 esto 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 del 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: 0x603
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Sondeo de memoria libre.

causa probable

Esta detención se genera si el comprobador de la aplicación detecta una llamada IsBadXXXPtr para una asignación de memoria gratuita. Esto es muy malo 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 autor de la llamada de la función IsBadXXXPtr terminó sondeando memoria libre. La dirección podría ser simple falso (por ejemplo, puntero sin inicializar) o quizás ya libre memoria. Si una de las API 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 libre. 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. MSDN Library enumera algunas razones por las que las aplicaciones no deben usar las API isBadXXXPtr: en un entorno de tareas múltiples preferentes, 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 primario, 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 esto 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 del 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: 0x604
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 IsBadXXXPtr para una asignación de memoria que contiene al menos un GUARD_PAGE. Esto es muy malo porque es muy posible que este GUARD_PAGE sea el final de la pila actual de un subproceso. Como se documenta en MSDN Library: 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 primario, 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 autor de la llamada de la función IsBadXXXPtr terminó sondeando un GUARD_PAGE. MSDN Library enumera algunas razones por las que las aplicaciones no deben usar las API isBadXXXPtr: en un entorno de tareas múltiples preferentes, 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 primario, 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 esto 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 del 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: 0x605
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Sondeo de la dirección NULL.

causa probable

Esta detención se genera si el comprobador de la aplicación detecta una llamada IsBadXXXPtr con una dirección NULL. Para depurar esta detención, examine el seguimiento de pila actual (kb) e intente determinar por qué el autor de la llamada de la función IsBadXXXPtr terminó con la dirección NULL. Normalmente, este es el signo 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:

void Use(PVOID p);

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 como este:

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. 
    // 
} 

MSDN Library enumera algunas razones por las que las aplicaciones no deben usar las API isBadXXXPtr: en un entorno de tareas múltiples preferentes, 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 primario, 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 esto 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: 0x606
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

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

causa probable

Esta detención se genera si el comprobador de la aplicación 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 del modo de usuario normal) 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 autor de la llamada 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 falsas sin formato, por ejemplo, variables sin inicializar. MSDN Library enumera algunas razones por las que las aplicaciones no deben usar las API isBadXXXPtr: en un entorno de tareas múltiples preferentes, 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 primario, 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 esto 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 del 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: 0x607
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Descargar dll con un tamaño no válido o una dirección de inicio.

causa probable

Esta detención se genera si el comprobador de la aplicación detecta una descarga dll con una dirección de inicio o un tamaño de inicio 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 - DLL tamaño del intervalo de memoria.
  • Parámetro 3 Dirección de nombre - 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: 0x608
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Liberar 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ó VirtualFree pensó que el bloque de memoria se asignó dinámicamente o se asignó, 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 la región de memoria.
  • Parámetro 3 - Stack low limit address (Dirección de límite bajo de pila).
  • Parámetro 4 - Dirección de límite alto de pila.

Información adicional
  • Capa de prueba: Memoria
  • Id. de detención: FREE_THREAD_STACK_MEMORY
  • Código de detención: 0x609
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 este vistazo al seguimiento de pila actual (kb): el autor de la llamada de VirtualFree es probablemente el culpable.

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: 0x60A
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Intentando liberar el bloque de memoria virtual que ya está libre.

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á libre. Para depurar esta detención, examine el seguimiento de pila actual (kb) e intente determinar por qué la memoria ya está libre, 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: 0x60B
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 un 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 este vistazo al seguimiento de pila actual (kb): el autor de la llamada de VirtualFree es probablemente el culpable.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Tamaño incorrecto usado por la aplicación.
  • Parámetro 2 - Se esperaba un tamaño correcto (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: 0x60C
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 malo 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 de contexto de excepción y el seguimiento de la pila durante el momento en que se produjo la excepción. - **\<*parameter4*\>** es la dirección de una estructura de comprobador interna y no tiene ninguna importancia para la mayoría de los usuarios comprobadores.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - DLL name (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 - Verifier dll descriptor

Información adicional
  • Capa de prueba: Memoria
  • Id. de detención: DLL_UNEXPECTED_EXCEPTION
  • Código de detención: 0x60D
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 malo porque todo el proceso se matará. 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.
  • Parámetro .exr2><: para mostrar la información de excepción.
  • Parámetro .cxr3>< 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: 0x60E
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 autor de la llamada, 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> suele ser C0000005, una infracción de acceso
  • Parámetro .exr2><: para mostrar la información de excepción
  • Parámetro .cxr3>< 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: 0x60F
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Intentando 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: 0x610
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Liberar bloque de memoria del 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 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 la pila actual (kb) e intente comprender por qué la función que llamó HeapFree pensó que el bloque de memoria se asignó o 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 la región de memoria.
  • Parámetro 3 - Stack low limit address (Dirección de límite bajo de pila).
  • Parámetro 4 - Dirección de límite alto de pila.

Información adicional
  • Capa de prueba: Memoria
  • Id. de detención: FREE_THREAD_STACK_MEMORY_AS_HEAP
  • Código de detención: 0x612
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 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 o se asignó, 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 la región de memoria.
  • Parámetro 3 - Stack low limit address (Dirección de límite bajo de pila).
  • Parámetro 4 - Dirección de límite alto de pila.

Información adicional
  • Capa de prueba: Memoria
  • Id. de detención: FREE_THREAD_STACK_MEMORY_AS_MAP
  • Código de detención: 0x613
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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. *Parameter1* es la dirección incorrecta usada y el culpable está en el seguimiento de la pila (mostrarla con kb).

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Address.
  • 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: 0x614
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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. *Parameter1* es la dirección incorrecta usada y el culpable está en el seguimiento de la pila (mostrarla con kb).

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Address.
  • 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: 0x615
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Intente 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 desemblar el código culpable
  • Parámetro .exr3><: para mostrar la información de excepción
  • Parámetro .cxr4>< 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.

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 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: 0x616
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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:

  • Parámetro .exr3><: para mostrar la información de excepción.
  • Parámetro .cxr4>< 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: 0x617
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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:

  • Parámetro .exr3><: para mostrar el registro de excepciones.
  • Parámetro .cxr4>< 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: 0x618
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Liberar 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 pila actual, que llama a VirtualFree. El culpable probable 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 libera.
  • 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: 0x619
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

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

causa probable

Esta parada 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 pila actual, que llama a UnmapViewOfFile. El culpable probable 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á desasignación.
  • 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: 0x619
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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.
  • Parámetro .exr2><: para mostrar la información de excepción.
  • Parámetro .cxr3>< 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. Usar .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: 0x61B
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 desemblar el código culpable
  • Parámetro .exr3><: para mostrar la información de excepción
  • Parámetro .cxr4>< 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.

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 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: 0x61C
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Crear 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 de 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: 0x1D
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Asignar memoria ejecutable.

causa probable

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

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Protección de página especificada por el autor de la llamada.
  • 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: 0x1E
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Detalles de detención de 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 culpable
  • .reload xxx.dll=<parameter4> : volver a cargar símbolos para el archivo DLL culpable (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 - TLS index
  • Parámetro 2 - Dirección del código que asignó este índice TLS.
  • Parámetro 3 Dirección de nombre - 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: 0x350
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Estructura TLS del comprobador dañado.

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 - Identificador 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: 0x351
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 carga y TlsAlloc
  • T1: Devolución de llamada de cola
  • T1: Devolución de llamada omitida en espera o cancelada
  • 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 - TLS index
  • 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: 0x352
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Detalles de detención del 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 a threadpool.

información mostrada por el comprobador de aplicaciones
  • Formato: -  threadpool thread (%x) having executed Callback (%p) has an altered thread priority (%i -> %i)
  • Parámetro 1 - Callback (Función).
  • Parámetro 2 - Context.
  • Parámetro 3 - Threadpool Seguimiento de la pila de asignación de objetos, 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: 0x700
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 de subproceso cuando se devuelve a threadpool.

información mostrada por el comprobador de aplicaciones
  • Formato: - threadpool thread (%x) having executed Callback (%p) has an altered thread affinity mask (%p -> %p)
  • Parámetro 1 - Callback (Función).
  • Parámetro 2 - Context.
  • Parámetro 3 - Threadpool Seguimiento de la pila de asignación de objetos, 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: 0x701
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Msg 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 este subproceso de grupo de subprocesos al grupo. 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: - threadpool thread (%x) having executed Callback (%p) has outstanding window message (%x: %x)
  • Parámetro 1 - Callback (Función).
  • Parámetro 2 - Context.
  • Parámetro 3 - Threadpool Seguimiento de la pila de asignación de objetos, use dps para volcarlo.
  • Parámetro 4 - Threadpool thread id. 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: 0x702
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 de grupo de subprocesos al grupo.

información mostrada por el comprobador de aplicaciones
  • Formato: -  threadpool thread (%x) having executed Callback (%p) has valid hwnd (%x: %s) que podría recibir mensajes.
  • Parámetro 1 - Callback (Función).
  • Parámetro 2 - Context.
  • Parámetro 3 - Threadpool Seguimiento de la pila de asignación de objetos, use dps para volcarlo.
  • Parámetro 4 - Threadpool thread id.

Información adicional
  • Capa de prueba: Grupo de subprocesos
  • Id. de detención: ORPHANED_THREAD_WINDOW
  • Código de detención: 0x703
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

ExitThread() o TerminateThread() 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 - Callback (Función).
  • Parámetro 2 - Context.
  • Parámetro 3 - Threadpool Seguimiento de la pila de asignación de objetos, 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_TERMINATION
  • Código de detención: 0x704
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 - Callback (Función).
  • Parámetro 2 - Context.
  • Parámetro 3 - Threadpool Seguimiento de la pila de asignación de objetos, 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: 0x705
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 autor de la llamada.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Callback (Función).
  • Parámetro 2 - Context.
  • Parámetro 3 - Threadpool Seguimiento de la pila de asignación de objetos, 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: 0x706
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 - Callback (Función).
  • Parámetro 2 - Context.
  • Parámetro 3 - Threadpool Seguimiento de la pila de asignación de objetos, 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: 0x707
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Este estado de threadpool 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 desequilibrado.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Callback (Función).
  • Parámetro 2 - Context.
  • Parámetro 3 - Threadpool Seguimiento de la pila de asignación de objetos, 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: 0x708
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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 parada se genera si el período para indicar que el temporizador no es cero cuando el temporizador se establece en señal solo una vez con la marca WT_EXECUTEONLYONCE

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Period especificado.
  • Parámetro 2 - Flags especificados.
  • 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: 0x709
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

El subproceso threadpool 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 - Callback (Función).
  • Parámetro 2 - Context.
  • Parámetro 3 - Threadpool Seguimiento de la pila de asignación de objetos, 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: 0x7A
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

El idioma preferido lo establece el subproceso de 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 - Callback (Función).
  • Parámetro 2 - Context.
  • Parámetro 3 - Threadpool Seguimiento de la pila de asignación de objetos, 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: 0x7B
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

El subproceso de 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 está establecida dentro de la devolución de llamada y no está deshabilitada cuando el subproceso se devuelve al grupo de subprocesos.

información mostrada por el comprobador de aplicaciones
  • Parámetro 1 - Callback (Función).
  • Parámetro 2 - Context.
  • Parámetro 3 - Threadpool Seguimiento de la pila de asignación de objetos, 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: 0x7C
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: 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: 0x7D
  • gravedad : error de 
  • error único: 
  • Informe de errores de : interrupción de 
  • Archivo de inicio de sesión: sí
  • Crear retroceso: sí

Véase también

Comprobador de aplicaciones de : códigos de detención y definiciones

Comprobador de aplicaciones de : información general

Comprobador de aplicaciones de : características

Comprobador de aplicaciones de : pruebas de aplicaciones

Comprobador de aplicaciones: pruebas dentro del comprobador de aplicaciones

Comprobador de aplicaciones de : depuración del comprobador de aplicaciones detiene

Comprobador de aplicaciones de : preguntas más frecuentes