Compartilhar via


Verificador de Aplicativos – Parar Códigos – Diversos

Os seguintes códigos de parada estão contidos neste conjunto de testes.

Chamada perigosa para TerminateThread.

Causa provável

Essa parada será gerada se um thread (a ID do thread for parameter1) for encerrado explicitamente usando TerminateThread.Essa função é muito perigosa porque introduz dados corrompidos e deadlocks (de acordo com o MSDN).

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - ID do thread para o chamador de Terminatethread.
  • Parâmetro 2  - Não usado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Perigoso
  • ID de parada:  TERMINATE_THREAD_CALL
  • Parar código:  100NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

Potencial estouro de pilha em condições de memória baixa.

Causa provável

Essa parada será gerada se o tamanho de confirmação de pilha inicial de um thread for de modo que um estouro de pilha possa ser gerado em condições de memória baixa se a pilha não puder ser estendida.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Não usado.
  • Parâmetro 2  - Não usado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Perigoso
  • ID de parada:  STACK_OVERFLOW
  • Parar código:  100NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

ExitProcess chamado enquanto vários threads ainda estão em execução.

Causa provável

Essa parada será gerada se um thread chamar ExitProcess enquanto houver vários threads em execução. Nesse caso, internalmente TerminateThread será chamado para cada thread e isso pode criar deadlocks ou corrupção de dados.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Número de threads em execução.
  • Parâmetro 2  - Não usado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Perigoso
  • ID de parada:  INVALID_EXIT_PROCESS_CALL
  • Parar código:  100NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

LoadLibrary é chamado durante DllMain.

Causa provável

Essa parada será gerada se o código dentro de DllMain chamar LoadLibrary ou FreeLibary. É o comportamento proibido pelo MSDN.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Dll Name (use du para despejar).
  • Parâmetro 2  - Endereço base da DLL.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Perigoso
  • ID de parada:  INVALID_LOAD_LIBRARY_CALL
  • Parar código:  100NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

FreeLibrary é chamado durante DllMain.

Causa provável

Essa parada será gerada se o código dentro de DllMain chamar LoadLibrary ou FreeLibary. É o comportamento proibido pelo MSDN.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Dll Name (use du para despejar).
  • Parâmetro 2  - Endereço base da DLL.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Perigoso
  • ID de parada:  INVALID_FREE_LIBRARY_CALL
  • Parar código:  100NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

SetProcessWorkingSetSize é chamado com MinimumWorkingSetSize = 0xFFFFFFFF.

Causa provável

Use MinimumWorkingSetSize = (SIZE_T) -1.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Não usado.
  • Parâmetro 2  - Não usado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Perigoso
  • ID de parada:  INVALID_MINIMUM_PROCESS_WORKING_SIZE
  • Parar código:  100NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

SetProcessWorkingSetSize é chamado com MaximumWorkingSetSize = 0xFFFFFFFF.

Causa provável

Use MaximumWorkingSetSize = (SIZE_T) -1.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Não usado.
  • Parâmetro 2  - Não usado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Perigoso
  • ID de parada:  INVALID_MAXIMUM_PROCESS_WORKING_SIZE
  • Parar código:  100NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

SetProcessWorkingSetSizeEx é chamado com MinimumWorkingSetSize = 0xFFFFFFFF.

Causa provável

Use MinimumWorkingSetSize = (SIZE_T) -1.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Não usado.
  • Parâmetro 2  - Não usado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Perigoso
  • ID de parada:  INVALID_MINIMUM_PROCESS_WORKING_SIZE_EX
  • Parar código:  100NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

SetProcessWorkingSetSizeEx é chamado com MaximumWorkingSetSize = 0xFFFFFFFF.

Causa provável

Use MaximumWorkingSetSize = (SIZE_T) -1.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Não usado.
  • Parâmetro 2  - Não usado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Perigoso
  • ID de parada:  INVALID_MAXIMUM_PROCESS_WORKING_SIZE_EX
  • Parar código:  100NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

O Thread não pode ter uma seção crítica.

Causa provável

Essa parada será gerada se um thread (a ID do thread for parameter1) for encerrado, suspenso ou estiver em um estado (thread de trabalho terminou um item de trabalho) no qual ele não pode manter uma seção crítica. O thread atual é o culpado. Para depurar essa parada, use os seguintes comandos de depurador: $ kb – para obter o rastreamento de pilha atual. Se o thread atual for o proprietário da seção crítica, ele provavelmente chamará ExitThread. O thread atual deve ter liberado a seção crítica antes de sair. Se o thread atual estiver chamando TerminateThread ou SuspendThread, ele não deverá fazer isso para um thread que contém uma seção crítica. $ !cs -s parameter2 - despejo de informações sobre esta seção crítica. $ ln parameter2 – para mostrar símbolos próximos ao endereço da seção crítica. Isso deve ajudar a identificar a seção crítica vazada. $ dps parameter4 – para despejar o rastreamento de pilha para esta inicialização de seção crítica.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - ID do thread.
  • Parâmetro 2  - Endereço de seção crítico.
  • Parâmetro 3  - Endereço de informações de depuração de seção crítica.
  • Parâmetro 4  -Rastreamento de pilha de  inicialização de seção crítica.

Informações adicionais
  • Camada de teste:  Fechaduras
  • ID de parada:  EXIT_THREAD_OWNS_LOCK
  • Parar código:  200NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

Descarregando a DLL que contém uma seção crítica ativa.

Causa provável

Essa parada será gerada se uma DLL tiver uma variável global contendo uma seção crítica e a DLL for descarregada, mas a seção crítica não tiver sido excluída. Para depurar essa parada, use os seguintes comandos de depurador: $ du parameter3 – para despejar o nome da DLL culpada. $ .reload dllname ou .reload dllname = parameter4 – para recarregar os símbolos dessa DLL. $ !cs -s parameter1 – despejo de informações sobre esta seção crítica. $ ln parameter1 – para mostrar símbolos próximos ao endereço da seção crítica. Isso deve ajudar a identificar a seção crítica vazada. $ dps parameter2 – para despejar o rastreamento de pilha para esta inicialização de seção crítica.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço da seção crítica.
  • Parâmetro 2  - Rastreamento de pilha de inicialização de seção crítica.
  • Parâmetro 3  - Endereço do nome da DLL.
  • Parâmetro 4  - Endereço base da DLL.

Informações adicionais
  • Camada de teste:  Fechaduras
  • ID de parada:  LOCK_IN_UNLOADED_DLL
  • Código de parada:  200NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Liberando o bloco de heap que contém uma seção crítica ativa.

Causa provável

Essa parada será gerada se uma alocação de heap contiver uma seção crítica, a alocação for liberada e a seção crítica não tiver sido excluída. Para depurar essa parada, use os seguintes comandos do depurador: $ !cs -s parameter1 - despejar informações sobre esta seção crítica. $ ln parameter1 – para mostrar símbolos próximos ao endereço da seção crítica. Isso deve ajudar a identificar a seção crítica vazada. $ dps parameter2 – para despejar o rastreamento de pilha para essa inicialização crítica da seção. $ parameter3 e parameter4 podem ajudar a entender onde esse bloco de heap foi alocado (o tamanho da alocação provavelmente é significativo).

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço da seção crítica.
  • Parâmetro 2  - Rastreamento de pilha de inicialização de seção crítica.
  • Parâmetro 3  - Endereço de bloco de heap.
  • Parâmetro 4  - Tamanho do bloco de heap.

Informações adicionais
  • Camada de teste:  Fechaduras
  • ID de parada:  LOCK_IN_FREED_HEAP
  • Código de parada:  200NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Seção crítica inicializada ou corrompida dupla.

Causa provável

Normalmente, essa parada será gerada se uma seção crítica tiver sido inicializada mais de uma vez. Nesse caso, parameter3 e parameter4 são os endereços de rastreamento de pilha para duas dessas inicializações. Algumas outras vezes é possível obter essa parada se a seção crítica ou sua estrutura de informações de depuração tiver sido corrompida. Nesse segundo caso, é possível que parameter3 e parameter4 sejam inválidos e inúteis. Para depurar essa parada: $ !cs -s -d parameter2 - despejar informações sobre esta seção crítica. $ ln parameter1 – para mostrar símbolos próximos ao endereço da seção crítica. Isso pode ajudar a identificar a seção crítica se essa for uma variável global. $ dps parameter3 e dps parameter4 – para identificar os dois caminhos de código para inicializar esta seção crítica.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço da seção crítica.
  • Parâmetro 2  - Endereço da estrutura de informações de depuração encontrada na lista ativa.
  • Parâmetro 3  -Primeiro rastreamento de pilha de  inicialização.
  • Parâmetro 4  -Segundo rastreamento de pilha de  inicialização.

Informações adicionais
  • Camada de teste:  Fechaduras
  • ID de parada:  LOCK_DOUBLE_INITIALIZE
  • Código de parada:  200NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Memória livre que contém uma seção crítica ativa.

Causa provável

Essa parada será gerada se a memória que contém uma seção crítica tiver sido liberada, mas a seção crítica não tiver sido excluída usando DeleteCriticalSection. Para depurar essa parada, use os seguintes comandos do depurador: $ !cs -s -d parameter2 - informações de despejo sobre esta seção crítica. $ dps parameter3 – para identificar o caminho do código para inicializar esta seção crítica. Na maioria dos casos, o verificador de bloqueio detecta seções críticas imediatamente vazadas contidas em uma alocação de heap, um intervalo de DLL, uma alocação de memória virtual ou um intervalo de memória mapviewOfFile mapeado e emite paradas diferentes nesses casos. Portanto, há muito poucos casos restantes para essa parada de verificador. O bloqueio deve estar em um intervalo de memória liberado pelo código do modo kernel ou liberado entre processos por APIs como VirtualFreeEx. Normalmente, essa parada será encontrada se uma parada anterior (por exemplo, LOCK_IN_FREED_HEAP ou LOCK_IN_UNLOADED_DLL) tiver sido continuada pressionando 'g' no console do depurador.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço da seção crítica.
  • Parâmetro 2  - Endereço de informações de depuração de seção crítica.
  • Parâmetro 3  - Rastreamento de pilha de inicialização de seção crítica.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Fechaduras
  • ID de parada:  LOCK_IN_FREED_MEMORY
  • Código de parada:  200NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Seção crítica corrompida.

Causa provável

Essa parada será gerada se o campo DebugInfo da seção crítica estiver apontando a memória liberada. Normalmente, outra estrutura DebugInfo válida é encontrada na lista de seções críticas ativas. Sem corrupção, os dois ponteiros devem ser idênticos. Para depurar essa parada, use os seguintes comandos do depurador: $ !cs -s -d parameter3 – despejar informações sobre essa seção crítica com base no conteúdo atual da estrutura de informações de depuração encontrada na lista ativa (essa estrutura raramente é corrompida, portanto, geralmente essas informações são confiáveis). $ !cs -s parameter1 - despejo de informações sobre esta seção crítica com base no conteúdo atual da estrutura de seção crítica (a estrutura já está corrompida, portanto, às vezes essas informações NÃO são confiáveis). $ dps parameter4 – para identificar o caminho do código para inicializar esta seção crítica. Despeje a seção crítica no parâmetro de endereço1 e procure o padrão de corrupção. Com bons símbolos para ntdll.dl, você pode usar os seguintes comandos: $ dt ntdll!_RTL_CRITICAL_SECTION LOCK_ADDRESS $ dt ntdll!_RTL_CRITICAL_SECTION_DEBUG DEBUG_ADDRESS

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço da seção crítica.
  • Parâmetro 2  - Endereço de informações de depuração inválidas desta seção crítica.
  • Parâmetro 3  - Endereço das informações de depuração encontradas na lista ativa.
  • Parâmetro 4  -Rastreamento de pilha de  inicialização.

Informações adicionais
  • Camada de teste:  Fechaduras
  • ID de parada:  LOCK_CORRUPTED
  • Código de parada:  200NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Thread de proprietário da seção crítica inválido.

Causa provável

Essa parada será gerada se a ID do thread do proprietário for inválida no contexto atual. Para depurar essa parada: $ !cs -s parameter1 - despejar informações sobre esta seção crítica. $ ln parameter1 – para mostrar símbolos próximos ao endereço da seção crítica. Isso deve ajudar a identificar a seção crítica.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço da seção crítica.
  • Parâmetro 2  - Propriedade do thread.
  • Parâmetro 3  -  Thread proprietário esperado.
  • Parâmetro 4  - Endereço de informações de depuração de seção crítica.

Informações adicionais
  • Camada de teste:  Fechaduras
  • ID de parada:  LOCK_INVALID_OWNER
  • Código de parada:  200NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Contagem de recursão de seção crítica inválida.

Causa provável

Essa parada será gerada se o campo contagem de recursão da estrutura de seção crítica for inválido no contexto atual. Para depurar essa parada: $ !cs -s parameter1 - despejar informações sobre esta seção crítica. $ ln parameter1 – para mostrar símbolos próximos ao endereço da seção crítica. Isso deve ajudar a identificar a seção crítica.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço da seção crítica.
  • Parâmetro 2  - Contagem de recursão.
  • Parâmetro 3  - Contagem de recursão esperada.
  • Parâmetro 4  - Endereço de informações de depuração de seção crítica.

Informações adicionais
  • Camada de teste:  Fechaduras
  • ID de parada:  LOCK_INVALID_RECURSION_COUNT
  • Código de parada:  200NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Excluindo a seção crítica com contagem de bloqueio inválida.

Causa provável

Essa parada será gerada se uma seção crítica pertencer a um thread se ela for excluída ou se a seção crítica não for inicializada. Para depurar essa parada: $ !cs -s parameter1 - despejar informações sobre esta seção crítica. Se o thread proprietário for 0, a seção crítica não foi inicializada. $ ln parameter1 – para mostrar símbolos próximos ao endereço da seção crítica. Isso deve ajudar a identificar a seção crítica.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço da seção crítica.
  • Parâmetro 2  - Contagem de bloqueios.
  • Parâmetro 3  -  Contagem de bloqueios esperada.
  • Parâmetro 4  - Propriedade do thread.

Informações adicionais
  • Camada de teste:  Fechaduras
  • ID de parada:  LOCK_INVALID_LOCK_COUNT
  • Código de parada:  200NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Seção crítica superlusada ou corrompida.

Causa provável

Essa parada será gerada se uma seção crítica for lançada mais vezes do que o thread atual a adquiriu. Para depurar essa parada: $ !cs -s parameter1 - despejar informações sobre esta seção crítica. $ !cs -s -d parameter4 - despejo de informações sobre esta seção crítica. $ ln parameter1 – para mostrar símbolos próximos ao endereço da seção crítica. Isso deve ajudar a identificar a seção crítica.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço da seção crítica.
  • Parâmetro 2  - Contagem de bloqueios.
  • Parâmetro 3  -  Contagem de bloqueios esperada.
  • Parâmetro 4  - Endereço de informações de depuração de seção crítica.

Informações adicionais
  • Camada de teste:  Fechaduras
  • ID de parada:  LOCK_OVER_RELEASED
  • Código de parada:  200NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Seção crítica não inicializada.

Causa provável

Essa parada será gerada se uma seção crítica for usada sem ser inicializada ou depois de ter sido excluída. Para depurar essa parada: $ ln parameter1 – para mostrar símbolos próximos ao endereço da seção crítica. Isso deve ajudar a identificar a seção crítica.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço da seção crítica.
  • Parâmetro 2  - Endereço de informações de depuração de seção crítica.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Fechaduras
  • ID de parada:  LOCK_NOT_INITIALIZED
  • Parar código:  200NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

A seção crítica já está inicializada.

Causa provável

Essa parada será gerada se uma seção crítica for reinicializada pelo thread atual. Para depurar essa parada: $ !cs -s parameter1 ou !cs -s -d parameter2 - despejo de informações sobre esta seção crítica. $ ln parameter1 – para mostrar símbolos próximos ao endereço da seção crítica. Isso pode ajudar a identificar a seção crítica se essa for uma variável global. $ dps parameter3 – para identificar o caminho do código para a primeira inicialização desta seção crítica. $ kb – para exibir o rastreamento de pilha atual, que está reinicializando esta seção crítica.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço de seção crítico.
  • Parâmetro 2  - Endereço de informações de depuração de seção crítica.
  • Parâmetro 3  - Primeiro rastreamento de pilha de inicialização. Usar dps para despejá-lo se não for NULL
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Fechaduras
  • ID de parada:  LOCK_ALREADY_INITIALIZED
  • Parar código:  200NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

Liberando memória virtual que contém uma seção crítica ativa.

Causa provável

Essa parada será gerada se o thread atual estiver chamando VirtualFree em um bloco de memória que contém uma seção crítica ativa. O aplicativo deve chamar DeleteCriticalSection nesta seção crítica antes de liberar essa memória. $ kb – para exibir o rastreamento de pilha atual, que está chamando VirtualFree. O provável culpado é a DLL que chama VirtualFree. $ !cs -s parameter1 – despejo de informações sobre esta seção crítica. $ dps parameter2 – para identificar o caminho do código para a inicialização desta seção crítica.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço de seção crítico.
  • Parâmetro 2  -Rastreamento de pilha de  inicialização de seção crítica.
  • Parâmetro 3  - Endereço de bloco de memória.
  • Parâmetro 4  -Tamanho do bloco de  memória.

Informações adicionais
  • Camada de teste:  Fechaduras
  • ID de parada:  LOCK_IN_FREED_VMEM
  • Parar código:  200NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

Desmarcando a região de memória que contém uma seção crítica ativa.

Causa provável

Essa parada será gerada se o thread atual estiver chamando UnmapViewOfFile em um bloco de memória que contém uma seção crítica ativa. O aplicativo deve chamar DeleteCriticalSection nesta seção crítica antes de desmarcá-lo. $ kb – para exibir o rastreamento de pilha atual, que está chamando UnmapViewOfFile . O provável culpado é a DLL que chama UnmapViewOfFile. $ !cs -s parameter1 – despejo de informações sobre esta seção crítica. $ dps parameter2 – para identificar o caminho do código para a inicialização desta seção crítica.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço de seção crítico.
  • Parâmetro 2  -Rastreamento de pilha de  inicialização de seção crítica.
  • Parâmetro 3  - Endereço de bloco de memória.
  • Parâmetro 4  -Tamanho do bloco de  memória.

Informações adicionais
  • Camada de teste:  Fechaduras
  • ID de parada:  LOCK_IN_UNMAPPED_MEM
  • Parar código:  200NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

O thread atual não possui nenhuma seção crítica.

Causa provável

Essa parada será gerada se o thread atual estiver chamando LeaveCriticalSection, mas, de acordo com a contabilidade interna do verificador, ele não possui nenhuma seção crítica. Se parameter2 for zero, provavelmente esse será um bug no thread atual. Ele tenta deixar uma seção crítica que não inseriu ou talvez esteja chamando LeaveCriticalSection mais vezes do que chamou EnterCriticalSection para a mesma seção crítica. Se parameter2 não for zero (é um número inteiro negativo), as estruturas de dados do verificador interno provavelmente estarão corrompidas.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço de seção crítico.
  • Parâmetro 2  - Número de seções críticas pertencentes ao thread atual.
  • Parâmetro 3  - Não usado
  • Parâmetro 4  - Não usado

Informações adicionais
  • Camada de teste:  Fechaduras
  • ID de parada:  THREAD_NOT_LOCK_OWNER
  • Parar código:  200NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

Usando a seção crítica que é privada para outra DLL.

Causa provável

Essa parada será gerada se o thread atual tentar usar um bloqueio privado que reside dentro de outra DLL. Por exemplo, a.dll tenta inserir uma seção crítica definida dentro de ntdll.dll. Bloqueios privados não podem ser usados entre DLLs.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço de seção crítico.
  • Parâmetro 2  - Não usado.
  • Parâmetro 3  - Não usado
  • Parâmetro 4  - Não usado

Informações adicionais
  • Camada de teste:  Fechaduras
  • ID de parada:  LOCK_PRIVATE
  • Parar código:  200NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

O bloqueio SRW não é inicializado.

Causa provável

Essa parada será gerada se um thread estiver tentando usar o bloqueio SRW (Param1) que não é inicializado. $ kb – para obter o rastreamento de pilha atual. É aqui que o bloqueio SRW está sendo usado. O bloqueio SRW deve ser inicializado usando InitializeSRWLock antes que ele possa ser usado.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - SRW Lock
  • Parâmetro 2  - Não usado
  • Parâmetro 3  - Não usado
  • Parâmetro 4  - Não usado

Informações adicionais
  • Camada de teste:  SRWLock
  • ID de parada:  NOT_INITIALIZED
  • Parar código:  250NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

O bloqueio SRW já está inicializado.

Causa provável

Essa parada será gerada se o bloqueio SRW (Param1) estiver sendo inicializado novamente. Se o bloqueio SRW estiver sendo usado ativamente por outros threads, a reinicialização do bloqueio resultará em um comportamento imprevisível do aplicativo, incluindo travamentos e falhas. O rastreamento de pilha de inicialização poderá mostrar uma aquisição se o bloqueio SRW tiver sido inicializado estaticamente. $ kb – para obter o rastreamento de pilha atual. É aí que o bloqueio SRW está sendo inicializado novamente. $ dps Param3 – para obter o rastreamento de pilha de inicialização de bloqueio SRW. Esse rastreamento de pilha poderá mostrar uma aquisição se o bloqueio tiver sido inicializado estaticamente.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - SRW Lock
  • Parâmetro 2  - ThreadId do thread que inicializou o bloqueio SRW.
  • Parâmetro 3  - Endereço do rastreamento de pilha de inicialização. Use o endereço> dps <para ver onde o bloqueio SRW foi inicializado.
  • Parâmetro 4  - Não usado

Informações adicionais
  • Camada de teste:  SRWLock
  • ID de parada:  ALREADY_INITIALIZED
  • Parar código:  250NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

Acquire-Release incompatível no bloqueio SRW.

Causa provável

Essa parada será gerada se o bloqueio SRW (Param1) estiver sendo liberado com uma API de versão incorreta. Se o bloqueio SRW foi adquirido para acesso compartilhado e está sendo liberado usando a API de versão exclusiva ou o bloqueio SRW foi adquirido para acesso exclusivo e está sendo liberado usando a API de versão compartilhada. Isso pode resultar em um comportamento imprevisível do aplicativo, incluindo travas e falhas. $ kb – para obter o rastreamento de pilha atual. É aí que o bloqueio SRW está sendo liberado usando a API errada. $ dps Param3 – para obter o rastreamento de pilha de aquisição de bloqueio SRW.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - SRW Lock
  • Parâmetro 2  - ThreadId do thread que adquiriu o bloqueio SRW.
  • Parâmetro 3  - Endereço do rastreamento de pilha de aquisição. Use o endereço> dps <para ver onde o bloqueio SRW foi adquirido.
  • Parâmetro 4  - Não usado

Informações adicionais
  • Camada de teste:  SRWLock
  • ID de parada:  MISMATCHED_ACQUIRE_RELEASE
  • Parar código:  250NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

O bloqueio SRW está sendo adquirido recursivamente pelo mesmo thread.

Causa provável

Essa parada será gerada se o bloqueio SRW (Param1) estiver sendo adquirido recursivamente pelo mesmo thread. Isso resultará em um deadlock e o thread será bloqueado indefinidamente. A aquisição recursiva de um bloqueio SRW no modo exclusivo causará um deadlock. A aquisição recursiva de um bloqueio SRW no modo compartilhado causará um deadlock quando houver um thread aguardando acesso exclusivo. Considere o exemplo a seguir: – O Thread A adquire o bloqueio SRW no modo compartilhado – o Thread B tenta bloquear o bloqueio SRW no modo exclusivo e aguarda – o Thread A tenta adquirir o bloqueio SRW no modo compartilhado recursivamente. Isso será bem-sucedido desde que não haja nenhum garçom exclusivo (neste caso B). Como os bloqueios srw não têm fome de gravador, o thread A aguarda atrás do thread B. Agora, o Thread B está aguardando o Thread A, que está inturn aguardando o Thread B causando uma espera circular e, portanto, um deadlock. $ kb – para obter o rastreamento de pilha atual. É aqui que o bloqueio SRW está sendo adquirido recursivamente. $ dps Param2 – para obter o rastreamento de pilha para a primeira aquisição.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - SRW Lock
  • Parâmetro 2  - Endereço do primeiro rastreamento de pilha de aquisição. Use o endereço> dps <para ver onde o bloqueio SRW foi adquirido.
  • Parâmetro 3  - Não usado
  • Parâmetro 4  - Não usado

Informações adicionais
  • Camada de teste:  SRWLock
  • ID de parada:  RECURSIVE_ACQUIRE
  • Parar código:  250NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

O thread que está saindo ou sendo encerrado possui um bloqueio SRW.

Causa provável

Essa parada será gerada se o thread (Param2) que possui o bloqueio SRW (Param1) estiver saindo ou sendo encerrado. Isso resultará em um bloqueio SRW órfão e os threads que tentam adquirir esse bloqueio bloqueariam indefinidamente. $ kb – para obter o rastreamento de pilha atual. É aí que o thread está saindo ou está sendo encerrado. $ dps Param3 – para obter o rastreamento de pilha de aquisição de bloqueio SRW.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - SRW Lock
  • Parâmetro 2  - ThreadId do thread que está saindo ou sendo encerrado.
  • Parâmetro 3  - Endereço do rastreamento de pilha de aquisição. Use o endereço> dps <para ver onde o bloqueio SRW foi adquirido.
  • Parâmetro 4  - Não usado

Informações adicionais
  • Camada de teste:  SRWLock
  • ID de parada:  EXIT_THREAD_OWNS_LOCK
  • Parar código:  250NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

O bloqueio SRW que está sendo liberado não foi adquirido por esse thread.

Causa provável

Essa parada será gerada se o bloqueio SRW (Param1) estiver sendo liberado pelo thread (Param2) que não adquiriu o bloqueio. Isso representa uma prática de programação ruim que é difícil de acertar e pode levar a um comportamento imprevisível do aplicativo. $ kb – para obter o rastreamento de pilha atual. É aí que o thread está liberando o bloqueio SRW que ele não adquiriu. $ dps Param4 – para obter o rastreamento de pilha de aquisição de bloqueio SRW.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - SRW Lock
  • Parâmetro 2  - ThreadId atual.
  • Parâmetro 3  - ThreadId do thread que adquiriu o bloqueio SRW.
  • Parâmetro 4  - Endereço do rastreamento de pilha de aquisição. Use o endereço> dps <para ver onde o bloqueio SRW foi adquirido.

Informações adicionais
  • Camada de teste:  SRWLock
  • ID de parada:  INVALID_OWNER
  • Parar código:  250NAN
  • Gravidade:  Aviso
  • Erro único: 
  • Relatório de erros:  Nenhum
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

A memória que está sendo liberada contém um bloqueio SRW ativo.

Causa provável

Essa parada será gerada se o endereço de memória (Param1) que está sendo liberado contiver um bloqueio SRW ativo que ainda está em uso. Isso pode resultar em um comportamento imprevisível do aplicativo, incluindo falhas e travamentos. $ kb – para obter o rastreamento de pilha atual. É aí que a memória está sendo liberada que contém um bloqueio SRW ativo. $ dps Param4 – para obter o rastreamento de pilha de aquisição de bloqueio SRW.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - SRW Lock
  • Parâmetro 2  - Endereço da memória que está sendo liberada.
  • Parâmetro 3  - ThreadId do thread que adquiriu o bloqueio SRW.
  • Parâmetro 4  - Endereço do rastreamento de pilha de aquisição. Use o endereço> dps <para ver onde o bloqueio SRW foi adquirido.

Informações adicionais
  • Camada de teste:  SRWLock
  • ID de parada:  IN_FREED_MEMORY
  • Parar código:  250NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

A DLL que está sendo descarregada contém um bloqueio SRW ativo.

Causa provável

Essa parada será gerada se a DLL que está sendo descarregada (Param2) contiver um bloqueio SRW ativo (Param1) que ainda esteja em uso. Isso pode resultar em um comportamento imprevisível do aplicativo, incluindo falhas e travamentos. $ kb – para obter o rastreamento de pilha atual. É aí que a DLL está sendo descarregada que contém um bloqueio SRW ativo. $ du Param2 – para localizar o nome da DLL que está sendo descarregada. $ dps Param4 – para obter o rastreamento de pilha de aquisição de bloqueio SRW.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - SRW Lock
  • Parâmetro 2  - Endereço do nome da DLL que está sendo descarregada. Use o endereço> du <para ver o nome.
  • Parâmetro 3  - ThreadId do thread que adquiriu o bloqueio SRW.
  • Parâmetro 4  - Endereço do rastreamento de pilha de aquisição. Use o endereço> dps <para ver onde o bloqueio SRW foi adquirido.

Informações adicionais
  • Camada de teste:  SRWLock
  • ID de parada:  IN_UNLOADED_DLL
  • Parar código:  250NAN
  • Gravidade:  Aviso
  • Erro único: 
  • Relatório de erros:  Nenhum
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

Exceção de identificador inválida para rastreamento de pilha atual.

Causa provável

Essa parada será gerada se a função na parte superior da pilha passar um identificador inválido para rotinas do sistema. Normalmente, um comando kb simples revelará qual é o valor do identificador passado (deve ser um dos parâmetros – geralmente o primeiro). Se o valor for nulo, isso estará claramente errado. Se o valor parecer ok, você precisará usar a extensão do depurador !htrace para obter um histórico de operações relativas a esse valor de identificador. Na maioria dos casos, deve ser que o valor do identificador seja usado após ser fechado.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  -Código de  exceção.
  • Parâmetro 2  -Registro de  exceção. Use .exr para exibi-lo.
  • Parâmetro 3  - Registro de contexto. Use .cxr para exibi-lo.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Manipula
  • ID de parada:  INVALID_HANDLE
  • Código de parada:  300NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Índice TLS inválido usado para rastreamento de pilha atual.

Causa provável

Essa parada será gerada se a função na parte superior da pilha passar um índice TLS inválido para rotinas do sistema TLS. Normalmente, um comando kb simples revelará o que está errado. O bug típico aqui é assumir um determinado valor para um índice TLS em vez de chamar TlsAlloc. Isso pode acontecer pensando que você sempre obtém o valor N, portanto, não há necessidade de chamar TlsAlloc ou com mais frequência devido a uma variável não inicializada.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Índice TLS inválido.
  • Parâmetro 2  - Parte inferior esperada do índice.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Manipula
  • ID de parada:  INVALID_TLS_VALUE
  • Código de parada:  300NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Parâmetros inválidos para a chamada WaitForMultipleObjects.

Causa provável

Essa parada será gerada se a função na parte superior da pilha chamada WaitForMultipleObjects com NULL como o endereço da matriz de identificadores aguardar ou com zero como o número de identificadores. Um comando kb simples revelará a função que chama essa API incorretamente.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço do vetor de identificadores de objeto.
  • Parâmetro 2  - Número de identificadores.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Manipula
  • ID de parada:  INCORRECT_WAIT_CALL
  • Código de parada:  300NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Identificador NULL passado como parâmetro. Um identificador válido deve ser usado.

Causa provável

Essa parada será gerada se a função na parte superior da pilha passar um identificador NULL para rotinas do sistema.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Não usado.
  • Parâmetro 2  - Não usado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Manipula
  • ID de parada:  NULL_HANDLE
  • Código de parada:  300NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Aguardando um identificador de thread no DllMain.

Causa provável

Essa parada será gerada se o thread atual estiver executando código dentro da função DllMain de uma das DLLs carregadas no processo atual e chamar WaitForSingleObject ou WaitForMultipleObjects para aguardar um identificador de thread no mesmo processo. Isso provavelmente levaria a um deadlock porque o identificador de thread não será sinalizado, a menos que o segundo thread esteja saindo. Quando o segundo thread chamar ExitThread, ele tentará adquirir o bloqueio do carregador de DLL e, em seguida, chamará DllMain (DLL_THREAD_DETACH) para todas as DLLs no processo atual. Mas o bloqueio do carregador pertence ao primeiro thread (aquele que está aguardando o identificador de thread) para que os dois threads fiquem em deadlock.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Identificador de thread.
  • Parâmetro 2  - Não usado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Manipula
  • ID de parada:  WAIT_IN_DLLMAIN
  • Código de parada:  300NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Tipo de objeto incorreto para identificador.

Causa provável

Essa parada será gerada se o thread atual estiver chamando uma API com um identificador para um objeto com um tipo de objeto incorreto. Por exemplo, chamar SetEvent com um identificador de semáforo como parâmetro gerará essa parada. Para depurar essa parada: $ kb – para exibir o rastreamento de pilha atual. O culpado provavelmente é a DLL que está chamando verifier.dll; $ du parameter2 – para exibir o tipo real do identificador. O valor do identificador é parameter1. No exemplo acima, isso exibirá: Semáforo. $ du parameter3 – para exibir o tipo de objeto esperado pela API. No exemplo acima, esse nome será: Evento. $ !htrace parameter1 pode ser útil porque exibirá o rastreamento de pilha para as operações recentes de abertura/fechamento nesse identificador.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Identificador de valor.
  • Parâmetro 2  - Nome do tipo de objeto. Use du para exibi-lo
  • Parâmetro 3  -Nome do tipo de  objeto esperado. Use du para exibi-lo
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Manipula
  • ID de parada:  INCORRECT_OBJECT_TYPE
  • Código de parada:  300NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Descarregando a DLL que alocou o índice TLS que não foi liberado.

Causa provável

Essa parada será gerada se uma DLL que alocou um índice TLS estiver sendo descarregada antes de liberar esse índice TLS. Para depurar essa parada: $ du parameter3 – exibir o nome da DLL culpada; $ .reload xxx.dll=parameter4 - recarregar símbolos para a DLL culpada (se necessário). xxx.dll é o nome da DLL exibida na etapa acima; $ u parameter2 – desmonte o código que alocou o TLS. Isso deve apontar para a função que alocou o TLS, mas esqueceu de liberá-lo antes que a DLL fosse descarregada.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Índice TLS
  • Parâmetro 2  - Endereço do código que alocou esse índice TLS.
  • Parâmetro 3  - Endereço do nome da DLL. Use du para despejá-lo.
  • Parâmetro 4  - Endereço base da DLL.

Informações adicionais
  • Camada de teste:  TLS
  • ID de parada:  TLS_LEAK
  • Código de parada:  350NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Estrutura TLS do verificador corrompido.

Causa provável

Essa parada será gerada se as estruturas internas do verificador usadas para armazenar o estado dos slots TLS para thread estiverem corrompidas. Muito provavelmente isso é devido a alguma corrupção aleatória no processo.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço TEB.
  • Parâmetro 2  - Endereço TEB esperado.
  • Parâmetro 3  - ID do thread.
  • Parâmetro 4  - ID de thread esperada.

Informações adicionais
  • Camada de teste:  TLS
  • ID de parada:  CORRUPTED_TLS
  • Código de parada:  350NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Usando um índice TLS inválido.

Causa provável

Essa parada será gerada se um índice TLS inválido for usado. Na maioria dos casos, é porque o código ainda está usando esse índice quando TlsFree é chamado. Aqui está um exemplo para o thread threadpool. T1: cargas de Dll e TlsAlloc T1: retorno de chamada de fila T1: Retorno de chamada ignorado/cancelado T1: TlsFree T2: o retorno de chamada é executado e chama TlsSetValue T1: Dll descarrega

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Índice TLS
  • Parâmetro 2  - Não usado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  TLS
  • ID de parada:  INVALID_TLS_INDEX
  • Código de parada:  350NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Liberação de bloco de memória virtual com tamanho inválido ou endereço inicial.

Causa provável

Essa parada será gerada se o verificador de aplicativo detectar um VirtualFree ou uma DLL descarregada com um endereço inicial inválido ou o tamanho da alocação de memória. No caso de DLL descarregar, isso provavelmente significa uma memória corrompida dentro da lista de DLL carregada. Para depurar essa parada, examine o rastreamento de pilha atual e o endereço de memória e o tamanho que está prestes a ser liberado e tente determinar por que eles são inválidos.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  -Endereço base de  alocação.
  • Parâmetro 2  - Tamanho da região de memória.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  INVALID_FREEMEM
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Chamada de alocação virtual incorreta.

Causa provável

Essa parada será gerada se o verificador de aplicativo detectar uma chamada VirtualAlloc com um endereço inicial inválido ou o tamanho da alocação de memória. Para depurar essa parada, examine o rastreamento de pilha atual (kb) e o endereço de memória e o tamanho que está prestes a ser alocado e tente determinar por que eles são inválidos.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Ponteiro para o endereço base de alocação.
  • Parâmetro 2  - Ponteiro para o tamanho da região de memória.
  • Parâmetro 3  - Não usado
  • Parâmetro 4  - Não usado

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  INVALID_ALLOCMEM
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Chamada de exibição de mapa incorreta.

Causa provável

Essa parada será gerada se o verificador de aplicativo detectar uma chamada MapViewOfFile com um endereço base ou tamanho inválido do mapeamento. Para depurar essa parada, examine o rastreamento de pilha atual (kb) e o endereço de memória e o tamanho que está prestes a ser mapeado e tente determinar por que eles são inválidos.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Ponteiro para o endereço base de mapeamento.
  • Parâmetro 2  - Ponteiro para exibir o tamanho.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  INVALID_MAPVIEW
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Sondagem de endereço inválido.

Causa provável

Essa parada será gerada se o verificador de aplicativo detectar uma chamada IsBadXXXPtr com um endereço inválido (por exemplo, um endereço no modo kernel, em vez de um endereço normal no modo de usuário) para o buffer de memória a ser investigado. Para depurar essa parada, examine o rastreamento de pilha atual (kb) e tente determinar por que o chamador da função IsBadXXXPtr acabou com um endereço inválido. Muitas vezes, o endereço é falso, por exemplo, um ponteiro não inicializado. A biblioteca MSDN lista alguns motivos pelos quais os aplicativos não devem usar as APIs IsBadXXXPtr: em um ambiente de multitarefa preemptiva, é possível que algum outro thread altere o acesso do processo à memória que está sendo testada. Desreferenciar ponteiros potencialmente inválidos pode desabilitar a expansão da pilha em outros threads. Um thread que esgota sua pilha, quando a expansão da pilha foi desabilitada, resulta no encerramento imediato do processo pai, sem nenhuma janela de erro pop-up ou informações de diagnóstico. Espera-se que os threads em um processo cooperem de forma que um não libere a memória de que o outro precisa. O uso dessa função não nega a necessidade de fazer isso. Se isso não for feito, o aplicativo poderá falhar de maneira imprevisível. Devido a todos esses motivos, recomendamos nunca usar essas APIs.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço inicial.
  • Parâmetro 2  -Tamanho do bloco de  memória.
  • Parâmetro 3  - Endereço inválido.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  PROBE_INVALID_ADDRESS
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Sondagem de memória livre.

Causa provável

Essa parada será gerada se o verificador de aplicativo detectar uma chamada IsBadXXXPtr para uma alocação de memória livre. Isso é muito ruim porque é possível que, em alguns outros casos, essa memória já tenha sido reutilizado para alguma outra alocação. Como o caminho de código atual (kb) não possui essa memória, ele pode acabar corrompendo a memória de outra pessoa, com efeitos desastrosos. Para depurar essa parada, examine o rastreamento de pilha atual (kb) e tente determinar por que o chamador da função IsBadXXXPtr acabou sondando a memória livre. O endereço pode ser falso (por exemplo, ponteiro não inicializado) ou talvez já tenha liberado memória. Se a memória já tiver sido liberada por uma das APIs VirtualFree ou UnmapViewOfFile, '!avrf -vs -a parameter3' procurará um log de rastreamentos de pilha dos caminhos de código que alocaram/liberaram esse endereço e exibirão esses rastreamentos de pilha se estiverem disponíveis. Isso pode mostrar o rastreamento de pilha que liberou essa memória. Com mais frequência, a memória é uma alocação de heap já liberada. Para marcar essa possibilidade, '!avrf -hp -a parameter3' pesquisará um log de rastreamentos de pilha dos caminhos de código que alocaram/liberaram esse endereço de/para o heap e exibirão esses rastreamentos de pilha se estiverem disponíveis. A biblioteca MSDN lista alguns motivos pelos quais os aplicativos não devem usar as APIs IsBadXXXPtr: em um ambiente de multitarefa preemptiva, é possível que algum outro thread altere o acesso do processo à memória que está sendo testada. Desreferenciar ponteiros potencialmente inválidos pode desabilitar a expansão da pilha em outros threads. Um thread que esgota sua pilha, quando a expansão da pilha foi desabilitada, resulta no encerramento imediato do processo pai, sem nenhuma janela de erro pop-up ou informações de diagnóstico. Espera-se que os threads em um processo cooperem de forma que um não libere a memória de que o outro precisa. O uso dessa função não nega a necessidade de fazer isso. Se isso não for feito, o aplicativo poderá falhar de maneira imprevisível. Devido a todos esses motivos, recomendamos nunca usar essas APIs.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço inicial.
  • Parâmetro 2  -Tamanho do bloco de  memória.
  • Parâmetro 3  - Endereço da página de memória livre.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  PROBE_FREE_MEM
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Sondando uma página de proteção.

Causa provável

Essa parada será gerada se o verificador de aplicativo detectar uma chamada IsBadXXXPtr para uma alocação de memória que contenha pelo menos uma GUARD_PAGE. Isso é muito ruim porque é muito possível que esse GUARD_PAGE seja o fim da pilha atual de um thread. Conforme documentado na biblioteca MSDN: desreferenciar ponteiros potencialmente inválidos pode desabilitar a expansão da pilha em outros threads. Um thread que esgota sua pilha, quando a expansão da pilha foi desabilitada, resulta no encerramento imediato do processo pai, sem nenhuma janela de erro pop-up ou informações de diagnóstico. Para depurar essa parada, examine o rastreamento de pilha atual (kb) e tente determinar por que o chamador da função IsBadXXXPtr acabou sondando um GUARD_PAGE. A biblioteca MSDN lista alguns motivos pelos quais os aplicativos não devem usar as APIs IsBadXXXPtr: em um ambiente de multitarefa preemptiva, é possível que algum outro thread altere o acesso do processo à memória que está sendo testada. Desreferenciar ponteiros potencialmente inválidos pode desabilitar a expansão da pilha em outros threads. Um thread que esgota sua pilha, quando a expansão da pilha foi desabilitada, resulta no encerramento imediato do processo pai, sem nenhuma janela de erro pop-up ou informações de diagnóstico. Espera-se que os threads em um processo cooperem de forma que um não libere a memória de que o outro precisa. O uso dessa função não nega a necessidade de fazer isso. Se isso não for feito, o aplicativo poderá falhar de maneira imprevisível. Devido a todos esses motivos, recomendamos nunca usar essas APIs.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço inicial.
  • Parâmetro 2  -Tamanho do bloco de  memória.
  • Parâmetro 3  - Endereço da página de proteção.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  PROBE_GUARD_PAGE
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Sondando o endereço NULL.

Causa provável

Essa parada será gerada se o verificador de aplicativo detectar uma chamada IsBadXXXPtr com um endereço NULL. Para depurar essa parada, examine o rastreamento de pilha atual (kb) e tente determinar por que o chamador da função IsBadXXXPtr acabou com o endereço NULL. Normalmente, esse é o sinal de alguém que não está verificando o valor retornado de uma das funções de alocação de memória. Por exemplo, o código abaixo está incorreto: int main (void) { PVOID p; p = malloc (1024); Use (p); return 0; } void Use (PVOID p) { if (IsBadReadPtr (p)) { return; } // // p é seguro para ser usado aqui. } Este código deve ser reescrito como este: int main (void) { PVOID p; p = malloc (1024); if (NULL == p)) { return -1; } Use (p); return 0; } void Use (PVOID p) { // // p é seguro para ser usado aqui. } A biblioteca MSDN lista alguns motivos pelos quais os aplicativos não devem usar as APIs IsBadXXXPtr: em um ambiente de multitarefa preemptiva, é possível que algum outro thread altere o acesso do processo à memória que está sendo testada. Desreferenciar ponteiros potencialmente inválidos pode desabilitar a expansão da pilha em outros threads. Um thread que esgota sua pilha, quando a expansão da pilha foi desabilitada, resulta no encerramento imediato do processo pai, sem nenhuma janela de erro pop-up ou informações de diagnóstico. Espera-se que os threads em um processo cooperem de forma que um não libere a memória de que o outro precisa. O uso dessa função não nega a necessidade de fazer isso. Se isso não for feito, o aplicativo poderá falhar de maneira imprevisível. Devido a todos esses motivos, recomendamos nunca usar essas APIs.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Não usado.
  • Parâmetro 2  - Não usado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  PROBE_NULL
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Sondando o bloco de memória com o endereço inicial ou o tamanho inválidos.

Causa provável

Essa parada será gerada se o verificador de aplicativo detectar uma chamada IsBadXXXPtr com um endereço inicial inválido (por exemplo, um endereço no modo kernel, em vez de um endereço normal no modo de usuário) ou um tamanho inválido para o buffer de memória a ser investigado. Para depurar essa parada, examine o rastreamento de pilha atual (kb) e tente determinar por que o chamador da função IsBadXXXPtr acabou com um endereço ou tamanho inválido. Muitas vezes, o endereço ou o tamanho são simples e falsos, por exemplo, variáveis não inicializadas. A biblioteca MSDN lista alguns motivos pelos quais os aplicativos não devem usar as APIs IsBadXXXPtr: em um ambiente de multitarefa preemptiva, é possível que algum outro thread altere o acesso do processo à memória que está sendo testada. Desreferenciar ponteiros potencialmente inválidos pode desabilitar a expansão da pilha em outros threads. Um thread que esgota sua pilha, quando a expansão da pilha foi desabilitada, resulta no encerramento imediato do processo pai, sem nenhuma janela de erro pop-up ou informações de diagnóstico. Espera-se que os threads em um processo cooperem de forma que um não libere a memória de que o outro precisa. O uso dessa função não nega a necessidade de fazer isso. Se isso não for feito, o aplicativo poderá falhar de maneira imprevisível. Devido a todos esses motivos, recomendamos nunca usar essas APIs.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço inicial.
  • Parâmetro 2  -Tamanho do bloco de  memória.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  PROBE_INVALID_START_OR_SIZE
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Descarregamento de DLL com tamanho inválido ou endereço inicial.

Causa provável

Essa parada será gerada se o verificador de aplicativo detectar um descarregamento de DLL com um endereço inicial inválido ou o tamanho do intervalo de memória DLL. Isso provavelmente significa uma memória corrompida dentro da lista de DLL carregada ntdll.dll interna.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço base de memória DLL.
  • Parâmetro 2  - Tamanho do intervalo de memória DLL.
  • Parâmetro 3  - Endereço do nome da DLL. Use du para despejá-lo.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  INVALID_DLL_RANGE
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Liberando o bloco de memória dentro do intervalo de endereços de pilha do thread atual.

Causa provável

Essa parada será gerada se o verificador de aplicativo detectar um VirtualFree para um bloco de memória que, na verdade, faz parte da pilha do thread atual (!). Para depurar essa parada, examine o rastreamento de pilha atual (kb) e tente entender por que a função que chamou VirtualFree pensou que o bloco de memória foi alocado ou mapeado dinamicamente, mas que na verdade era memória alocada da pilha.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  -Endereço base de  alocação.
  • Parâmetro 2  - Tamanho da região de memória.
  • Parâmetro 3  - Stack low limit address.
  • Parâmetro 4  - Stack high limit address.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  FREE_THREAD_STACK_MEMORY
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Parâmetro FreeType incorreto para a operação VirtualFree.

Causa provável

Essa parada será gerada se o verificador de aplicativo detectar um VirtualFree com um valor incorreto para o parâmetro FreeType. Os dois únicos valores aceitáveis para esse parâmetro são MEM_DECOMMIT e MEM_RELEASE. Se VirtualFree for chamado com qualquer outro valor, exceto esses dois, VirtualFree não liberará a memória. Para depurar essa parada, examine o rastreamento de pilha atual (kb): o chamador de VirtualFree provavelmente é o culpado.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Valor incorreto usado pelo aplicativo.
  • Parâmetro 2  - Valor correto esperado 1.
  • Parâmetro 3  - Valor correto esperado 2.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  INVALID_FREE_TYPE
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Tentando liberar o bloco de memória virtual que já está livre.

Causa provável

Essa parada será gerada se o verificador de aplicativo detectar um VirtualFree para um endereço que já está livre. Para depurar essa parada, examine o rastreamento de pilha atual (kb) e tente determinar por que a memória já está livre, mas o aplicativo está tentando liberá-la novamente. '!avrf -vs -a parameter1' procurará um log de rastreamentos de pilha dos caminhos de código que alocaram/liberaram esse endereço e exibirão esses rastreamentos de pilha se estiverem disponíveis. Isso pode mostrar o rastreamento de pilha que liberou essa memória.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço de bloco de memória.
  • Parâmetro 2  - Não usado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  MEM_ALREADY_FREE
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Parâmetro Size incorreto para a operação VirtualFree (MEM_RELEASE).

Causa provável

Essa parada será gerada se o verificador de aplicativo detectar um VirtualFree (MEM_RELEASE) com um valor diferente de zero para o parâmetro dwSize. Ao usar MEM_RELEASE , o único valor aceitável para esse parâmetro é 0. Se VirtualFree for chamado com qualquer outro valor, exceto 0, VirtualFree não liberará a memória. Para depurar essa parada, examine o rastreamento de pilha atual (kb): o chamador de VirtualFree provavelmente é o culpado.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Tamanho incorreto usado pelo aplicativo.
  • Parâmetro 2  - Tamanho correto esperado (0).
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  INVALID_FREE_SIZE
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Exceção inesperada gerada na rotina do ponto de entrada da DLL.

Causa provável

Essa parada será gerada se a função DllMain (ponto de entrada) de uma DLL estiver gerando uma exceção. Um exemplo pelo qual isso é ruim é: se DllMain(DLL_PROCESS_ATTACH) estiver gerando uma exceção, o carregador de DLL do Windows irá: - Capturar e ocultar a exceção; – Descarregar a DLL sem chamar seu DllMain(DLL_PROCESS_DETACH). Portanto, em muitos casos, a DLL já alocou alguns recursos e, em seguida, gerou a exceção e não terá a chance de liberar esses recursos no DllMain (DLL_PROCESS_DETACH). Para depurar esta parada: $ du parameter1 – para exibir o nome da DLL; $ .exr parameter2 – para exibir as informações de exceção; $ .cxr parameter3 seguido por kb – para exibir as informações de contexto de exceção e o rastreamento de pilha para a hora em que a exceção foi gerada; $ parameter4 é o endereço de uma estrutura de verificador interno e não tem nenhuma significância para a maioria dos usuários verificador.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - DLL name (use du para despejá-lo).
  • Parâmetro 2  -Registro de  exceção. Use .exr para exibi-lo.
  • Parâmetro 3  - Registro de contexto. Use .cxr para exibi-lo.
  • Parâmetro 4  - Verifier dll descriptor

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  DLL_UNEXPECTED_EXCEPTION
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Exceção inesperada gerada na função thread.

Causa provável

Essa parada será gerada se uma função de thread estiver gerando uma exceção. Isso é ruim porque todo o processo será morto. Para depurar essa parada: $ parameter1 pode ser significativo para o tipo de exceção. Por exemplo, um código de exceção C0000005 significa Violação de Acesso; $ .exr parameter2 – para exibir as informações de exceção; $ .cxr parameter3 seguido por kb – para exibir as informações de contexto de exceção;

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  -Código de  exceção.
  • Parâmetro 2  -Registro de  exceção. Use .exr para exibi-lo.
  • Parâmetro 3  - Registro de contexto. Use .cxr para exibi-lo.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  THREAD_UNEXPECTED_EXCEPTION
  • Parar código:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

Exceção inesperada gerada durante a investigação da memória.

Causa provável

Essa parada será gerada se recebermos uma exceção durante uma chamada IsBadXXXPtr. Isso significa que o buffer de memória que estamos investigando não tem realmente a proteção assumida pelo chamador ou que a memória já foi liberada, etc. Consulte a discussão acima sobre outros códigos de parada (PROBE_INVALID_ADDRESS, PROBE_FREE_MEM, PROBE_GUARD_PAGE, PROBE_NULL PROBE_INVALID_START_OR_SIZE) para obter mais exemplos de por que o uso das APIs IsBadXXXPtr não é recomendado. Para depurar essa parada: $ parameter1 normalmente será C00000005 e isso significa Violação de Acesso; $ .exr parameter2 – para exibir as informações de exceção; $ .cxr parameter3 seguido por kb – para exibir as informações de contexto de exceção e o rastreamento de pilha no momento em que a exceção foi gerada;

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  -Código de  exceção.
  • Parâmetro 2  -Registro de  exceção. Use .exr para exibi-lo.
  • Parâmetro 3  - Registro de contexto. Use .cxr para exibi-lo.
  • Parâmetro 4  - Não usado

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  PROBE_UNEXPECTED_EXCEPTION
  • Parar código:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

Tentando redefinir o endereço NULL.

Causa provável

Essa parada será gerada se o verificador de aplicativo detectar uma chamada VirtualFree (MEM_RESET) com um primeiro parâmetro NULL. MEM_RESET deve ser usado somente para memória já alocada, portanto, NULL não é um primeiro parâmetro válido nesse caso.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Não usado.
  • Parâmetro 2  - Não usado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  INVALID_MEM_RESET
  • Parar código:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

Liberando o bloco de memória de heap dentro do intervalo de endereços de pilha do thread atual.

Causa provável

Essa parada será gerada se o verificador de aplicativo detectar um HeapFree, para um bloco de memória que na verdade faz parte da pilha do thread atual (!). Para depurar essa parada, examine o kb (rastreamento de pilha) atual e tente entender por que a função chamada HeapFree pensou que o bloco de memória foi alocado dinamicamente ou mapeado, mas que na verdade era memória alocada da pilha.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  -Endereço base de  alocação.
  • Parâmetro 2  - Tamanho da região da memória.
  • Parâmetro 3  - Empilhar endereço de limite baixo.
  • Parâmetro 4  - Empilhar endereço de limite alto.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  FREE_THREAD_STACK_MEMORY_AS_HEAP
  • Parar código:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

Desmarcando a região de memória dentro do intervalo de endereços de pilha do thread atual.

Causa provável

Essa parada será gerada se o verificador de aplicativo detectar um UnmapViewOfFile para um bloco de memória que na verdade faz parte da pilha do thread atual (!). Para depurar essa parada, examine o rastreamento de pilha atual (kb) e tente entender por que a função chamada UnmapViewOfFile pensou que o bloco de memória foi alocado dinamicamente ou mapeado, mas que na verdade era memória alocada da pilha.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  -Endereço base de  alocação.
  • Parâmetro 2  - Tamanho da região da memória.
  • Parâmetro 3  - Empilhar endereço de limite baixo.
  • Parâmetro 4  - Empilhar endereço de limite alto.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  FREE_THREAD_STACK_MEMORY_AS_MAP
  • Parar código:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

Endereço de RTL_RESOURCE incorreto.

Causa provável

Essa parada será gerada se o aplicativo estiver tentando usar NULL ou algum outro endereço incorreto (por exemplo, um endereço no modo kernel) como o endereço de um objeto válido. RtlInitializeResource (NULL) é uma chamada à API incorreta que disparará esse tipo de parada do verificador. param1 é o endereço incorreto usado e o culpado está no rastreamento de pilha (exiba-o com kb).

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço.
  • Parâmetro 2  - Não usado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  INVALID_RESOURCE_ADDRESS
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Endereço de seção crítico inválido.

Causa provável

Essa parada será gerada se o aplicativo estiver tentando usar NULL ou algum outro endereço incorreto (por exemplo, um endereço no modo kernel) como o endereço de um objeto válido. EnterCriticalSection(NULL) é uma chamada à API incorreta que disparará esse tipo de parada do verificador. param1 é o endereço incorreto usado e o culpado está no rastreamento de pilha (exiba-o com kb).

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço.
  • Parâmetro 2  - Não usado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  INVALID_CRITSECT_ADDRESS
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Tente executar o código na memória não executável.

Causa provável

Essa parada será gerada se o aplicativo estiver tentando executar o código de um endereço que não seja executável ou gratuito. Para depurar essa parada: $ u parameter2 - para desmontar o código culpado $ .exr parameter3 - para exibir as informações de exceção; $ .cxr parameter4 seguido por kb – para exibir as informações de contexto de exceção e o rastreamento de pilha para a hora em que a exceção foi gerada.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço que está sendo acessado.
  • Parâmetro 2  - Código executando acesso inválido.
  • Parâmetro 3  -Registro de  exceção. Use .exr para exibi-lo.
  • Parâmetro 4  - Registro de contexto. Use .cxr para exibi-lo.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  THREAD_UNEXPECTED_EXCEPTION_CODE
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Exceção inesperada gerada ao inicializar o buffer de saída.

Causa provável

Essa parada será gerada se recebermos uma exceção ao inicializar um buffer especificado como parâmetro de saída para uma API Win32 ou CRT. Isso normalmente significa que o tamanho do buffer de saída especificado está incorreto. Para depurar esta parada: $ .exr parameter3 – para exibir as informações de exceção; $ .cxr parameter4 seguido por kb – para exibir as informações de contexto de exceção e o rastreamento de pilha no momento em que a exceção foi gerada.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço inicial do buffer.
  • Parâmetro 2  - Tamanho do buffer.
  • Parâmetro 3  -Registro de  exceção. Use .exr para exibi-lo.
  • Parâmetro 4  - Registro de contexto. Use .cxr para exibi-lo.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  OUTBUFF_UNEXPECTED_EXCEPTION
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Exceção inesperada ao tentar localizar o tamanho do bloco de heap.

Causa provável

Essa parada será gerada se recebermos uma exceção ao chamar HeapSize para um bloco de heap que está sendo liberado. Isso normalmente significa que o endereço de bloco de heap especificado está incorreto ou o heap está corrompido. Para depurar essa parada: $ .exr parameter3 – para exibir o registro de exceção; $ .cxr parameter4 seguido por kb – para exibir as informações de contexto de exceção e o rastreamento de pilha no momento em que a exceção foi gerada.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço do bloco de heap que está sendo liberado.
  • Parâmetro 2  - Identificador de heap.
  • Parâmetro 3  -Registro de  exceção. Use .exr para exibi-lo.
  • Parâmetro 4  - Registro de contexto. Use .cxr para exibi-lo.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  SIZE_HEAP_UNEXPECTED_EXCEPTION
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Liberação de bloco de memória com endereço inicial inválido.

Causa provável

Essa parada será gerada se o programa chamar VirtualFree (MEM_RELEASE) com um parâmetro lpAddress que não seja o endereço base retornado pela função VirtualAlloc ou VirtualAllocEx quando a região das páginas foi reservada; Para depurar essa parada: $ kb – para exibir o rastreamento de pilha atual, que está chamando VirtualFree. O provável culpado é a DLL que chama VirtualFree.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço do bloco de memória que está sendo liberado.
  • Parâmetro 2  -  Endereço de bloco de memória correto esperado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  INVALID_FREEMEM_START_ADDRESS
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Bloco de memória desmapeamento com endereço inicial inválido.

Causa provável

Essa parada será gerada se o programa chamar UnmapViewOfFile com um parâmetro lpBaseAddress que não seja idêntico ao valor retornado por uma chamada anterior para a função MapViewOfFile ou MapViewOfFileEx. Para depurar essa parada: $ kb – para exibir o rastreamento de pilha atual, que está chamando UnmapViewOfFile. O provável culpado é a DLL que chama UnmapViewOfFile.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço do bloco de memória que está sendo não mapeado.
  • Parâmetro 2  -  Endereço de bloco de memória correto esperado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  INVALID_UNMAPVIEW_START_ADDRESS
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

exceção inesperada gerada na função de retorno de chamada de threadpool.

Causa provável

Essa parada será gerada se uma função de retorno de chamada no thread threadpool estiver gerando uma exceção. Para depurar essa parada: $ parameter1 pode ser significativo para o tipo de exceção. Por exemplo, um código de exceção C0000005 significa Violação de Acesso. $ .exr parameter2 – para exibir as informações de exceção. $ .cxr parameter3 seguido por kb – para exibir as informações de contexto de exceção.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  -Código de  exceção
  • Parâmetro 2  -Registro de  exceção. Use .exr para exibi-lo
  • Parâmetro 3  - Registro de contexto. Use .cxr para exibi-lo
  • Parâmetro 4  - Não usado

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  THREADPOOL_UNEXPECTED_EXCEPTION
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

código na memória não executável

Causa provável

Essa parada será gerada se o aplicativo estiver tentando executar o código de um endereço que não seja executável ou gratuito. Para depurar essa parada: $ u parameter2 - para desmontar o código culpado $ .exr parameter3 - para exibir as informações de exceção $ .cxr parameter4 seguido por kb - para exibir as informações de contexto de exceção e o rastreamento de pilha para a hora em que a exceção foi gerada.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço que está sendo acessado
  • Parâmetro 2  - Código executando acesso inválido
  • Parâmetro 3  -Registro de  exceção. Use .exr para exibi-lo.
  • Parâmetro 4  - Registro de contexto. Use .cxr para exibi-lo.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  THREADPOOL_UNEXPECTED_EXCEPTION_CODE
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Criando heap executável.

Causa provável

Essa parada será gerada se o aplicativo estiver criando um heap executável. Isso pode ser um risco de segurança.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Não usado.
  • Parâmetro 2  - Não usado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  EXECUTABLE_HEAP
  • Código de parada:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Alocando memória executável.

Causa provável

Essa parada será gerada se o aplicativo estiver alocando memória executável. Isso pode ser um risco de segurança.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Proteção de página especificada pelo chamador.
  • Parâmetro 2  - Não usado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Memória
  • ID de parada:  EXECUTABLE_MEMORY
  • Parar código:  600NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

Tente executar o código na memória não executável (primeira chance).

Causa provável

Essa parada será gerada se o aplicativo estiver tentando executar o código de um endereço que não seja executável ou gratuito. Para depurar essa parada: $ u parameter2 – para desmontar o código culpado $ .exr parameter3 – para exibir as informações de exceção; $ .cxr parameter4 seguido por kb – para exibir as informações de contexto de exceção e o rastreamento de pilha para o momento em que a exceção foi gerada.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço que está sendo acessado.
  • Parâmetro 2  - Código executando acesso inválido.
  • Parâmetro 3  -Registro de  exceção. Use .exr para exibi-lo.
  • Parâmetro 4  - Registro de contexto. Use .cxr para exibi-lo.

Informações adicionais
  • Camada de teste:  Exceções
  • ID de parada:  FIRST_CHANCE_ACCESS_VIOLATION_CODE
  • Parar código:  650NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

A prioridade desse thread do thread do threadpool foi alterada.

Causa provável

Essa parada será gerada se a prioridade do thread for alterada quando ela for retornada para o threadpool.

Informações exibidas pelo Verificador de Aplicativos
  • Formato:  -  threadpool thread (%x) tendo executado Retorno de chamada (%p) tem uma prioridade de thread alterada (%i -> %i)
  • Parâmetro 1  -Função de  retorno de chamada.
  • Parâmetro 2  - Contexto.
  • Parâmetro 3  - Rastreamento de pilha de alocação de objeto threadpool, use dps para despejá-lo.
  • Parâmetro 4  - Prioridade atual.

Informações adicionais
  • Camada de teste:  Threadpool
  • ID de parada:  INCONSISTENT_PRIORITY
  • Parar código:  700NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

A afinidade desse thread do thread do threadpool foi alterada.

Causa provável

Essa parada será gerada se a afinidade de thread for alterada quando ela for retornada para o threadpool.

Informações exibidas pelo Verificador de Aplicativos
  • Formato:  - threadpool thread (%x) tendo executado Retorno de chamada (%p) tem uma máscara de afinidade de thread alterada (%p -> %p)
  • Parâmetro 1  -Função de  retorno de chamada.
  • Parâmetro 2  - Contexto.
  • Parâmetro 3  - Rastreamento de pilha de alocação de objeto threadpool, use dps para despejá-lo.
  • Parâmetro 4  - Afinidade atual.

Informações adicionais
  • Camada de teste:  Threadpool
  • ID de parada:  INCONSISTENT_AFFINITY_MASK
  • Parar código:  700NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

Msg não processado no pool msg do thread atual.

Causa provável

Essa parada será gerada se qualquer mensagem deixada como não processada quando esse thread de threadpool for retornado ao pool. É perigoso, pois será processado em um contexto totalmente diferente. Use !avrf -tp <Param4> para ver as mensagens postadas neste thread.

Informações exibidas pelo Verificador de Aplicativos
  • Formato:  - threadpool thread (%x) tendo executado Retorno de chamada (%p) tem mensagem de janela pendente (%x: %x)
  • Parâmetro 1  -Função de  retorno de chamada.
  • Parâmetro 2  - Contexto.
  • Parâmetro 3  - Rastreamento de pilha de alocação de objeto threadpool, use dps para despejá-lo.
  • Parâmetro 4  - Threadpool thread id. Use !avrf -tp <threadid> para ver as mensagens postadas neste thread.

Informações adicionais
  • Camada de teste:  Threadpool
  • ID de parada:  ORPHANED_THREAD_MESSAGE
  • Parar código:  700NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

A janela não revelada pertencia ao thread atual.

Causa provável

Essa parada será gerada se qualquer janela for mantida ativa quando esse thread threadpool for retornado ao pool.

Informações exibidas pelo Verificador de Aplicativos
  • Formato:  -  threadpool thread (%x) tendo executado Retorno de chamada (%p) tem hwnd válido (%x: %s) que poderia receber mensagens
  • Parâmetro 1  -Função de  retorno de chamada.
  • Parâmetro 2  - Contexto.
  • Parâmetro 3  - Rastreamento de pilha de alocação de objeto threadpool, use dps para despejá-lo.
  • Parâmetro 4  - Threadpool thread id.

Informações adicionais
  • Camada de teste:  Threadpool
  • ID de parada:  ORPHANED_THREAD_WINDOW
  • Parar código:  700NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

ExitThread() em um thread de threadpool.

Causa provável

Essa parada será gerada se ExitThread for chamado em um thread de threadpool. É proibido, pois tornará o sistema instável. Isso causará vazamento de recursos, congelamento ou AV.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Função de retorno de chamada.
  • Parâmetro 2  - Context.
  • Parâmetro 3  - Threadpool Object allocation stack trace, use dps para despejá-lo.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Threadpool
  • ID de parada:  ILLEGAL_THREAD_EXIT
  • Código de parada:  700NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

O thread está no estado de representação quando é retornado para um thread de threadpool.

Causa provável

Essa parada será gerada se a função de retorno de chamada alterar o token de thread para representar outro usuário e esquecer de redefini-lo antes de retorná-lo para o threadpool.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Função de retorno de chamada.
  • Parâmetro 2  - Context.
  • Parâmetro 3  - Threadpool Object allocation stack trace, use dps para despejá-lo.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Threadpool
  • ID de parada:  THREAD_IN_IMPERSONATION
  • Código de parada:  700NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Uma função que requer thread persistente é chamada.

Causa provável

Algumas APIs do Microsoft Windows precisam ser chamadas dentro de um thread dedicado ou persistente. No threadpool, você geralmente deve evitar usar o armazenamento local de thread e enfileirar chamadas assíncronas que exigem um thread persistente, como a função RegNotifyChangeKeyValue. No entanto, essas funções podem ser enfileiradas em um thread de trabalho persistente usando QueueUserWorkItem com a opção WT_EXECUTEINPERSISTENTTHREAD. Um kb no depurador revelará o chamador.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Função de retorno de chamada.
  • Parâmetro 2  - Context.
  • Parâmetro 3  - Threadpool Object allocation stack trace, use dps para despejá-lo.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Threadpool
  • ID de parada:  PERSISTED_THREAD_NEEDED
  • Código de parada:  700NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

O thread está em sujo estado de transação.

Causa provável

Essa parada será gerada se a função de chamada de volta esquecer de fechar ou redefinir o identificador de transação atual.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Função de retorno de chamada.
  • Parâmetro 2  - Context.
  • Parâmetro 3  - Threadpool Object allocation stack trace, use dps para despejá-lo.
  • Parâmetro 4  - Identificador de transação.

Informações adicionais
  • Camada de teste:  Threadpool
  • ID de parada:  DIRTY_TRANSACTION_CONTEXT
  • Código de parada:  700NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Esse estado de threadpool tem chamadas CoInit e CoUnInit desbalanceadas.

Causa provável

Essa parada será gerada se a função de chamada de volta chamar CoInit e CoUnInit desbalanceadas.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Função de retorno de chamada.
  • Parâmetro 2  - Context.
  • Parâmetro 3  - Threadpool Object allocation stack trace, use dps para despejá-lo.
  • Parâmetro 4  - Contagens de chamadas equilibradas.

Informações adicionais
  • Camada de teste:  Threadpool
  • ID de parada:  DIRTY_COM_STATE
  • Código de parada:  700NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Os parâmetros do objeto de temporizador são inconsistentes. O período deve ser 0 quando WT_EXECUTEONLYONCE é especificado ao criar o temporizador

Causa provável

Essa parada será gerada se o período para sinalizar o temporizador não for zero quando o temporizador estiver definido para sinalizar apenas uma vez com o sinalizador WT_EXECUTEONLYONCE

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Ponto especificado.
  • Parâmetro 2  - Flags especificados.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Threadpool
  • ID de parada:  INCONSISTENT_TIMER_PARAMS
  • Código de parada:  700NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

O bloqueio do carregador foi mantido pelo thread threadpool dentro do retorno de chamada.

Causa provável

Essa parada será gerada se o bloqueio do carregador for mantido dentro do retorno de chamada e não for liberado quando o thread for retornado ao threadpool.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Função de retorno de chamada.
  • Parâmetro 2  - Context.
  • Parâmetro 3  - Threadpool Object allocation stack trace, use dps para despejá-lo.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Threadpool
  • ID de parada:  LOADER_LOCK_HELD
  • Código de parada:  700NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

O idioma preferencial é definido pelo thread de threadpool dentro do retorno de chamada.

Causa provável

Essa parada será gerada se o idioma preferencial for definido dentro do retorno de chamada e não for limpo quando o thread for retornado ao threadpool.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Função de retorno de chamada.
  • Parâmetro 2  - Context.
  • Parâmetro 3  - Threadpool Object allocation stack trace, use dps para despejá-lo.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Threadpool
  • ID de parada:  PREFERRED_LANGUAGES_SET
  • Código de parada:  700NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

A prioridade em segundo plano é definida pelo thread de threadpool dentro do retorno de chamada.

Causa provável

Essa parada será gerada se a prioridade em segundo plano estiver definida dentro do retorno de chamada e não estiver desabilitada quando o thread for retornado ao threadpool.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Função de retorno de chamada.
  • Parâmetro 2  - Context.
  • Parâmetro 3  - Threadpool Object allocation stack trace, use dps para despejá-lo.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Threadpool
  • ID de parada:  BACKGROUND_PRIORITY_SET
  • Código de parada:  700NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

TerminateThread() em um thread de threadpool.

Causa provável

Essa parada será gerada se TerminateThread for chamado em um thread de threadpool. É proibido, pois tornará o sistema instável. Isso causará vazamento de recursos, congelamento ou AV.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Não usado.
  • Parâmetro 2  - Não usado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  Threadpool
  • ID de parada:  ILLEGAL_THREAD_TERMINATION
  • Código de parada:  700NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

A pilha foi desenrolada quando a operação de E/S assíncrona está pendente.

Causa provável

Essa parada será gerada se o aplicativo emitiu uma operação de E/S que usa uma variável de pilha e não esperou a conclusão da E/S, levando à corrupção da pilha. Para depurar essa parada: $ dps parameter4 para exibir o rastreamento de pilha quando a E/S foi emitida. Parameter1 indica o endereço baseado em pilha e o parâmetro3 do thread que emitiu a E/S.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço da variável de pilha usada na E/S.
  • Parâmetro 2  - Ponteiro de pilha atual.
  • Parâmetro 3  - Thread original que emitiu a E/S.
  • Parâmetro 4  - Rastreamento de pilha quando a E/S foi emitida.

Informações adicionais
  • Camada de teste:  E/S
  • ID de parada:  ASYNCIO_STACK_UNWIND
  • Código de parada:  800NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

A pilha foi corrompida quando a operação de E/S assíncrona está pendente.

Causa provável

Essa parada será gerada se o aplicativo emitiu uma operação de E/S que usa uma variável de pilha e não esperou a conclusão da E/S, levando à corrupção da pilha. Para depurar essa parada: $ dps parameter4 para exibir o rastreamento de pilha quando a E/S foi emitida. Parameter1 indica o endereço baseado em pilha e o parâmetro3 do thread que emitiu a E/S.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço da variável de pilha usada na E/S.
  • Parâmetro 2  - Ponteiro de pilha atual.
  • Parâmetro 3  - Thread original que emitiu a E/S.
  • Parâmetro 4  - Rastreamento de pilha quando a E/S foi emitida.

Informações adicionais
  • Camada de teste:  E/S
  • ID de parada:  ASYNCIO_CORRUPTED_STACK
  • Código de parada:  800NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Usando um endereço liberado em uma operação de E/S pendente.

Causa provável

Essa parada será gerada se o aplicativo tiver emitido uma operação de E/S e liberado a memória usada na E/S antes da conclusão da E/S, levando à corrupção de memória etc. Para depurar essa parada: $ dps parameter4 para exibir o rastreamento de pilha quando a E/S foi emitida. Parameter1 indica o endereço usado na E/S. Parameter2 indica o endereço que está sendo liberado e o parâmetro3 do thread que emitiu a E/S.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço usado na E/S.
  • Parâmetro 2  - Endereço que está sendo liberado.
  • Parâmetro 3  - Thread original que emitiu a E/S.
  • Parâmetro 4  - Rastreamento de pilha quando a E/S foi emitida.

Informações adicionais
  • Camada de teste:  E/S
  • ID de parada:  FREED_ADDRESS_IN_PENDINGIO
  • Código de parada:  800NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Um bloco de status de E/S (OVERLAPPED) é reutilizado enquanto a solicitação de E/S associada ainda está pendente.

Causa provável

Essa parada será gerada se o aplicativo reutilizar um bloco de status de E/S (OVERLAPPED) enquanto uma solicitação de E/S usando esse bloco de status de E/S (OVERLAPPED) ainda estiver pendente. Para depurar essa parada: $ dps parameter3 para exibir o rastreamento de pilha quando a E/S original foi emitida. Parameter1 indica o endereço usado na E/S e no parâmetro2 do thread que emitiu a E/S.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço do bloco de status de E/S (OVERLAPPED).
  • Parâmetro 2  - Thread original que emitiu a E/S.
  • Parâmetro 3  - Rastreamento de pilha quando a E/S foi emitida.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  E/S
  • ID de parada:  REUSED_IOSTATUS_BLOCK
  • Código de parada:  800NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Usando um sinalizador sem suporte, FILE_ATTRIBUTE_NOT_CONTENT_INDEXED em CreateFile

Causa provável

A versão antiga do MSDN documentou erroneamente CreateFile como FILE_ATTRIBUTE_NOT_CONTENT_INDEXED de suporte. Se esse sinalizador for destinado, ele deverá ser definido usando outras funções de API, como SetFileAttributes. $ ln Parameter1 para localizar o chamador de CreateFile.

Informações exibidas pelo Verificador de Aplicativos
  • Formato:  -  CreateFile ao gravar %hs%ws com sinalizadores %08x %08x %08x
  • Parâmetro 1  - Endereço de retorno.
  • Parâmetro 2  - Não usado.
  • Parâmetro 3  - Não usado.
  • Parâmetro 4  - Não usado.

Informações adicionais
  • Camada de teste:  E/S
  • ID de parada:  USING_BAD_CREATEFILE_FLAG
  • Código de parada:  800NAN
  • Gravidade:  Aviso
  • Erro único: 
  • Relatório de erros:  Nenhum
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Uma alocação de heap foi vazada.

Causa provável

Essa parada será gerada se a dll do proprietário da alocação tiver sido descarregada dinamicamente ao possuir recursos.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço da alocação vazada. Execute !heap -p -a <endereço> para obter informações adicionais sobre a alocação.
  • Parâmetro 2  - Endereço para o rastreamento da pilha de alocação. Execute o endereço> dps <para exibir a pilha de alocação.
  • Parâmetro 3  - Endereço do nome dll do proprietário. Execute du <address> para ler o nome da dll.
  • Parâmetro 4  - Base da dll do proprietário. Execute .reload <dll_name> = <address> para recarregar a dll do proprietário. Use 'lm' para obter mais informações sobre os módulos carregados e descarregados.

Informações adicionais
  • Camada de teste:  Vazamento
  • ID de parada:  ALOCAÇÃO
  • Código de parada:  900NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Um identificador vazou.

Causa provável

Essa parada será gerada se a dll do proprietário do identificador tiver sido descarregada dinamicamente enquanto possui recursos. Para depurar essa parada: execute !htrace parameter1 para obter informações adicionais sobre o identificador.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Valor do identificador vazado. Execute o identificador> !htrace <para obter informações adicionais sobre o identificador se o rastreamento de identificador estiver habilitado.
  • Parâmetro 2  - Endereço para o rastreamento de pilha de alocação. Execute o endereço> dps <para exibir a pilha de alocação.
  • Parâmetro 3  - Endereço do nome da dll do proprietário. Execute o endereço> du <para ler o nome da dll.
  • Parâmetro 4  - Base da dll proprietário. Execute .reload <dll_name> = <endereço> para recarregar a dll do proprietário. Use 'lm' para obter mais informações sobre os módulos carregados e descarregados.

Informações adicionais
  • Camada de teste:  Vazamento
  • ID de parada:  LIDAR COM
  • Parar código:  900NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

Um HKEY foi vazado.

Causa provável

Essa parada será gerada se a dll do proprietário da chave do Registro tiver sido descarregada dinamicamente enquanto possui recursos.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Valor do HKEY vazado.
  • Parâmetro 2  - Endereço para o rastreamento de pilha de alocação. Execute o endereço> dps <para exibir a pilha de alocação.
  • Parâmetro 3  - Endereço do nome da dll do proprietário. Execute o endereço> du <para ler o nome da dll.
  • Parâmetro 4  - Base da dll proprietário. Execute .reload <dll_name> = <endereço> para recarregar a dll do proprietário. Use 'lm' para obter mais informações sobre os módulos carregados e descarregados.

Informações adicionais
  • Camada de teste:  Vazamento
  • ID de parada:  REGISTRO
  • Parar código:  900NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

Uma reserva virtual foi vazada.

Causa provável

Essa parada será gerada se a dll de proprietário da reserva virtual tiver sido descarregada dinamicamente enquanto possui recursos.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço de reserva vazado.
  • Parâmetro 2  - Endereço para o rastreamento de pilha de alocação. Execute o endereço> dps <para exibir a pilha de alocação.
  • Parâmetro 3  - Endereço do nome da dll do proprietário. Execute o endereço> du <para ler o nome da dll.
  • Parâmetro 4  - Base da dll proprietário. Execute .reload <dll_name> = <endereço> para recarregar a dll do proprietário. Use 'lm' para obter mais informações sobre os módulos carregados e descarregados.

Informações adicionais
  • Camada de teste:  Vazamento
  • ID de parada:  VIRTUAL_RESERVATION
  • Parar código:  900NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

Um BSTR foi vazado.

Causa provável

Essa parada será gerada se a dll do proprietário do SysString for descarregada dinamicamente enquanto possui recursos.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço do BSTR vazado. Execute !heap -p -a <endereço> para obter informações adicionais sobre a alocação.
  • Parâmetro 2  - Endereço para o rastreamento de pilha de alocação. Execute o endereço> dps <para exibir a pilha de alocação.
  • Parâmetro 3  - Endereço do nome da dll do proprietário. Execute o endereço> du <para ler o nome da dll.
  • Parâmetro 4  - Base da dll proprietário. Execute .reload <dll_name> = <endereço> para recarregar a dll do proprietário. Use 'lm' para obter mais informações sobre os módulos carregados e descarregados.

Informações adicionais
  • Camada de teste:  Vazamento
  • ID de parada:  SYSSTRING
  • Parar código:  900NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Faça logon no arquivo:  Sim
  • Criar backtrace:  Sim

Uma notificação de energia não foi registrada.

Causa provável

Essa parada será gerada se a dll for registrada para notificação de energia e tiver sido descarregada dinamicamente sem registro.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço do registro de notificação de energia.
  • Parâmetro 2  - Endereço para o rastreamento de pilha de registro. Execute o endereço> dps <para exibir a pilha de alocação.
  • Parâmetro 3  - Endereço do nome da dll do proprietário. Execute o endereço> du <para ler o nome da dll.
  • Parâmetro 4  - Base da dll proprietário. Execute .reload <dll_name> = <endereço> para recarregar a dll do proprietário. Use 'lm' para obter mais informações sobre os módulos carregados e descarregados.

Informações adicionais
  • Camada de teste:  Vazamento
  • ID de parada:  POWER_NOTIFICATION
  • Código de parada:  900NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Uma alocação COM foi vazada.

Causa provável

Essa parada será gerada se a dll do proprietário da alocação COM tiver sido descarregada dinamicamente ao possuir recursos.

Informações exibidas pelo Verificador de Aplicativos
  • Parâmetro 1  - Endereço da alocação COM vazada. Execute !heap -p -a <endereço> para obter informações adicionais sobre a alocação.
  • Parâmetro 2  - Endereço para o rastreamento da pilha de alocação. Execute o endereço> dps <para exibir a pilha de alocação.
  • Parâmetro 3  - Endereço do nome dll do proprietário. Execute du <address> para ler o nome da dll.
  • Parâmetro 4  - Base da dll do proprietário. Execute .reload <dll_name> = <address> para recarregar a dll do proprietário. Use 'lm' para obter mais informações sobre os módulos carregados e descarregados.

Informações adicionais
  • Camada de teste:  Vazamento
  • ID de parada:  COM_ALLOCATION
  • Código de parada:  900NAN
  • Gravidade:  Erro
  • Erro único: 
  • Relatório de erros:  Quebrar
  • Fazer logon no arquivo:  Sim
  • Criar backtrace:  Sim

Consulte Também

Verificador de Aplicativos – Parar códigos e definições

Verificador de Aplicativos – Visão geral

Verificador de Aplicativos – Recursos

Verificador de Aplicativos – Testando aplicativos

Verificador de Aplicativos – Testes no Verificador de Aplicativos

Verificador de Aplicativos – Depuração de Paradas do Verificador de Aplicativo

Verificador de Aplicativos – Perguntas frequentes