Partilhar via


Application Verifier - Códigos de parada - Noções básicas

Os códigos de parada a seguir estão contidos no conjunto básico de testes.

Exceções Detalhes de parada

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

Causa provável

Essa parada é gerada se o aplicativo estiver tentando executar código de um endereço que não é executável ou livre. Para depurar essa parada:

  • u <parameter2> - desmonte o código culpado
  • .exr <parameter3> - exibe as informações de exceção
  • .cxr <parameter4> - exibe as informações de contexto de exceção
  • KB - exibe o rastreamento de pilha para o momento em que a exceção foi gerada.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço sendo acessado.
  • Parâmetro 2 - Código executando acesso inválido.
  • Parâmetro 3 - Registo de exceção. Use .exr para exibi-lo.
  • Parâmetro 4 - Registo de contexto. Use .cxr para exibi-lo.

Informações adicionais
  • Camada de teste: Exceções
  • ID de parada: FIRST_CHANCE_ACCESS_VIOLATION_CODE
  • Código de paragem: 650
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Lida com detalhes de parada

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

Causa provável

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

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Não utilizado.
  • Parâmetro 2 - Não utilizado.
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Pegas
  • ID de parada: INVALID_HANDLE
  • Código de paragem: 300
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se a função na parte superior da pilha passou um índice TLS inválido para as rotinas do sistema TLS. Normalmente, um simples comando 'kb' 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 assumindo que você sempre obtém o valor N e, portanto, não há necessidade de chamar 'TlsAlloc'. Mais frequentemente, é devido a uma variável não inicializada.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Índice TLS inválido.
  • Parâmetro 2 - Espera-se menor parte do índice.
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Pegas
  • ID de parada: INVALID_TLS_VALUE
  • Código de paragem: 301
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Parâmetros inválidos para chamada WaitForMultipleObjects.

Causa provável

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

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço do vetor de alças de objetos.
  • Parâmetro 2 - Número de alças.
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Pegas
  • ID de parada: INCORRECT_WAIT_CALL
  • Código de paragem: 302
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

NULL identificador passado como parâmetro. Deve ser utilizada uma alça válida.

Causa provável

Essa parada é gerada se a função na parte superior da pilha passou um identificador NULL para as rotinas do sistema. Normalmente, um simples comando 'kb' revelará qual é o valor do identificador passado (deve ser um dos parâmetros, geralmente o primeiro).

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Usando identificador NULL
  • Parâmetro 2 - Não utilizado
  • Parâmetro 3 - Não utilizado
  • Parâmetro 4 - Não utilizado

Informações adicionais
  • Camada de teste: Pegas
  • ID de parada: NULL_HANDLE
  • Código de paragem: 303
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Aguardando em um identificador de thread em DllMain.

Causa provável

Essa parada é 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 em um identificador de thread no mesmo processo. Isso provavelmente levará a um impasse porque o identificador de thread não será sinalizado, a menos que esse segundo thread esteja saindo. Quando o segundo thread chama 'ExitThread', ele tenta adquirir o bloqueio do carregador de DLL e, em seguida, chamar 'DllMain' (DLL_THREAD_DETACH) para todas as DLLs no processo atual. Como o bloqueio do carregador pertence ao primeiro thread (aquele que está aguardando na alça do thread), os dois threads serão bloqueados.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Alça de rosca.
  • Parâmetro 2 - Não utilizado.
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Pegas
  • ID de parada: WAIT_IN_DLLMAIN
  • Código de paragem: 304
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Tipo de objeto incorreto para handle.

Causa provável

Essa parada é 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 gera 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 da alça. O valor do identificador é parameter1. No exemplo anterior, isso exibe "Semaphore".
  • du <parameter3> - para exibir o tipo de objeto esperado pela API. No exemplo anterior, esse nome é "Evento".
  • !htrace <parameter1> - pode ser útil, pois exibe o rastreamento de pilha para as operações recentes de abrir/fechar neste identificador.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Manipular 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 utilizado.

Informações adicionais
  • Camada de teste: Pegas
  • ID de parada: INCORRECT_OBJECT_TYPE
  • Código de paragem: 305
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Detalhes da parada de pilhas

Erro desconhecido.

Causa provável

Esta mensagem pode acontecer se o erro encontrado não puder ser classificado de outra forma. Não é usado agora.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Não utilizado
  • Parâmetro 2 - Não utilizado
  • Parâmetro 3 - Não utilizado
  • Parâmetro 4 - Não utilizado

Informações adicionais
  • Camada de teste: Pilhas
  • ID de parada: UNKNOWN_ERROR
  • Código de paragem: 0x1
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Exceção de violação de acesso.

Causa provável

Esta é a parada mais comum do verificador de aplicativos. Normalmente, é causado por um erro de saturação de buffer. O verificador de pilha coloca uma página não acessível no final de uma alocação de pilha e uma saturação de buffer causará uma exceção tocando nesta página. Para depurar essa parada, identifique o endereço de acesso que causou a exceção e use o seguinte comando do depurador:

  • !heap -p -a ACCESS_ADDRESS - Este comando fornece detalhes sobre a natureza do erro e qual bloco de pilha é saturado. Ele também fornece o rastreamento de pilha para a alocação de blocos. Existem outras causas para esta paragem, por exemplo, aceder a um bloco de pilha depois de ser libertado. O mesmo comando do depurador é útil para este caso.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço inválido que causa a exceção
  • Parâmetro 2 - Endereço de código executando o acesso inválido
  • Parâmetro 3 - Registo de exceção
  • Parâmetro 4 - Registo de contexto

Informações adicionais
  • Camada de teste: Pilhas
  • ID de parada: ACCESS_VIOLATION
  • Código de paragem: 0x2
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Acesso multithreaded em uma pilha criada com HEAP_NO_SERIALIZE sinalizador.

Causa provável

Uma pilha criada com HEAP_NO_SERIALIZE sinalizador não deve ser acessada simultaneamente a partir de dois threads. Se tal situação for detetada, você receberá esta mensagem. A maneira típica como essa situação se insinua em um programa é vinculando com uma versão single-threaded do C-runtime. O Visual C++, por exemplo, pode vincular estaticamente essa biblioteca quando sinalizadores apropriados são usados. Os desenvolvedores esquecem esse detalhe e usam vários threads. O bug é muito difícil de depurar na vida real porque aparecerá como corrupção de dados misteriosa.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Pilha em que a operação acontece.
  • Parâmetro 2 - ID de thread para o proprietário atual da seção crítica de pilha.
  • Parâmetro 3 - ID do thread atual tentando entrar no heap.
  • Parâmetro 4 - Não utilizado

Informações adicionais
  • Camada de teste: Pilhas
  • ID de parada: UNSYNCHRONIZED_ACCESS
  • Código de paragem: 0x3
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Pedido de tamanho extremo.

Causa provável

Esta mensagem será gerada se, numa operação 'HeapAlloc' ou 'HeapReAlloc', o tamanho do bloco estiver acima de qualquer valor razoável. Normalmente, esse valor é 0x80000000 em plataformas de 32 bits e significativamente maior em plataformas de 64 bits.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Pilha em que a operação acontece.
  • Parâmetro 2 - Tamanho solicitado
  • Parâmetro 3 - Não utilizado
  • Parâmetro 4 - Não utilizado

Informações adicionais
  • Camada de teste: Pilhas
  • ID de parada: EXTREME_SIZE_REQUEST
  • Código de paragem: 0x4
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Alça de pilha com assinatura incorreta.

Causa provável

As estruturas de pilha são marcadas com um valor mágico. Se o identificador de pilha usado na chamada para uma interface de pilha não tiver esse padrão, essa parada será gerada. Este bug pode acontecer se de alguma forma a estrutura interna da pilha foi corrompida (corrupção aleatória) ou simplesmente um valor falso é usado como um identificador de pilha. Para obter uma lista de valores de identificador de pilha válidos, use o seguinte comando do depurador:

  • !heap -p

Observe que, se você apenas alternar uma alça de pilha válida por outra válida em uma operação de pilha, você não obterá essa parada (a alça parece válida, afinal). No entanto, o verificador de pilha deteta essa situação e a relata com SWITCHED_HEAP_HANDLE parada.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Alça de pilha usada na chamada para uma interface de pilha
  • Parâmetro 2 - Não utilizado
  • Parâmetro 3 - Não utilizado
  • Parâmetro 4 - Não utilizado

Informações adicionais
  • Camada de teste: Pilhas
  • ID de parada: BAD_HEAP_HANDLE
  • Código de paragem: 0x5
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Ponteiro de pilha corrompido ou usando pilha errada.

Causa provável

Normalmente, isso acontece se um bloco é alocado em uma pilha e liberado em outra. Use o comando do depurador '!heap -p' para obter uma lista de todos os valores de identificador de heap válidos. O exemplo mais comum é uma alocação msvcrt usando 'malloc' emparelhado com uma desalocação kernel32 usando 'HeapFree'.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Alça de pilha usada na chamada.
  • Parâmetro 2 - Bloco de pilha envolvido na operação.
  • Parâmetro 3 - Tamanho do bloco de pilha.
  • Parâmetro 4 - Pilha onde o bloco foi originalmente alocado.

Informações adicionais
  • Camada de teste: Pilhas
  • ID de parada: SWITCHED_HEAP_HANDLE
  • Código de paragem: 0x6
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Bloco de pilha já liberado.

Causa provável

Esta situação acontece se o bloqueio for libertado duas vezes. Os blocos liberados são marcados de uma maneira especial e são mantidos por um tempo em uma fila livre atrasada. Se um programa com bug tentar liberar o bloco novamente, isso será detetado - supondo que o bloco não foi retirado da fila livre atrasada e sua memória reutilizada para outras alocações. A profundidade da fila livre de atraso é da ordem de milhares de blocos, portanto, há boas chances de que a maioria dos livres duplos seja capturada.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Alça de pilha para a pilha proprietária do bloco.
  • Parâmetro 2 - Bloco de pilha sendo liberado novamente.
  • Parâmetro 3 - Tamanho do bloco de pilha.
  • Parâmetro 4 - Não utilizado

Informações adicionais
  • Camada de teste: Pilhas
  • ID de parada: DOUBLE_FREE
  • Código de paragem: 0x7
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Bloco de pilha corrompido.

Causa provável

Este é um erro genérico emitido se a corrupção no bloco de pilha não pode ser colocada em uma categoria mais específica.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Alça de pilha usada na chamada.
  • Parâmetro 2 - Bloco de pilha envolvido na operação.
  • Parâmetro 3 - Tamanho do bloco de pilha.
  • Parâmetro 4 - Reservado

Informações adicionais
  • Camada de teste: Pilhas
  • ID de parada: CORRUPTED_HEAP_BLOCK
  • Código de paragem: 0x8
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Tentativa de destruir a pilha do processo.

Causa provável

É um erro tentar destruir o heap de processo padrão (aquele retornado pela interface 'GetProcessHeap()').

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Alça de pilha usada com HeapDestroy.
  • Parâmetro 2 - Não utilizado
  • Parâmetro 3 - Não utilizado
  • Parâmetro 4 - Não utilizado

Informações adicionais
  • Camada de teste: Pilhas
  • ID de parada: DESTROY_PROCESS_HEAP
  • Código de paragem: 0x9
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Exceção inesperada gerada no código de pilha.

Causa provável

Essa parada é gerada se, durante a execução do código do gerenciador de pilha, uma violação de acesso for gerada em situações ilegítimas. Há poucas situações em que isso é ok, por exemplo, ao chamar 'HeapValidate()' ou 'HeapSize()'. As informações do registro de exceção (terceiro parâmetro) podem ser usadas para encontrar o contexto exato da exceção. Use os seguintes comandos do depurador para isso:

  • dd parâmetro2 L2
  • .exr first_dword
  • .cxr second_dword

Normalmente, essa parada acontece se houver alguma corrupção aleatória nas estruturas internas de heap.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Pilha envolvida na operação.
  • Parâmetro 2 - Registo de exceção.
  • Parâmetro 3 - Registo de contexto.
  • Parâmetro 4 - Código de exceção (C0000005 - violação de acesso)

Informações adicionais
  • Camada de teste: Pilhas
  • ID de parada: UNEXPECTED_EXCEPTION
  • Código de paragem: 0xA
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Exceção gerada durante a verificação do cabeçalho do bloco de pilha.

Causa provável

Esta situação acontece se realmente não pudermos determinar qualquer tipo específico de corrupção para o bloco. Por exemplo, acontece quando o endereço do bloco de pilha passado para uma operação livre de pilha aponta para uma área de memória não acessível (ponteiro corrompido, ponteiro não inicializado, etc.).

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Alça de pilha para a pilha proprietária do bloco.
  • Parâmetro 2 - Bloco de pilha que está corrompido.
  • Parâmetro 3 - Tamanho do bloco ou zero se o tamanho não puder ser determinado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Pilhas
  • ID de parada: CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_HEADER
  • Código de paragem: 0xB
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Exceção gerada durante a verificação do bloco de pilha.

Causa provável

Esta situação acontece se realmente não pudermos determinar qualquer tipo específico de corrupção para o bloco. Por exemplo, você obterá isso se, durante uma operação sem pilha, passar um endereço que aponte para uma área de memória não acessível. Isso também pode acontecer para situações duplamente livres se não encontrarmos o bloco entre os blocos de heap de página inteira e o investigarmos como um bloco de heap de página leve.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Alça de pilha usada na chamada.
  • Parâmetro 2 - Bloco de pilha envolvido na operação.
  • Parâmetro 3 - Tamanho do bloco de pilha.
  • Parâmetro 4 - Reservado.

Informações adicionais
  • Camada de teste: Pilhas
  • ID de parada: CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_PROBING
  • Código de paragem: 0xC
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Bloco de pilha corrompido depois de ser liberado.

Causa provável

Esta situação acontece se um bloco de memória é gravado depois de ser liberado.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Alça de pilha para a pilha proprietária do bloco.
  • Parâmetro 2 - Bloco de pilha que está corrompido.
  • Parâmetro 3 - Tamanho do bloco ou zero se o tamanho não puder ser determinado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Pilhas
  • ID de parada: CORRUPTED_HEAP_BLOCK_HEADER
  • Código de paragem: 0xD
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Padrão de incorreção corrompido para bloco de pilha liberado.

Causa provável

Os blocos liberados às vezes são marcados como não acessíveis e um programa que toca neles acessará violar (parada de verificador diferente). Em outros casos (por exemplo, um monte de página leve) o bloco é marcado com um padrão mágico e será mantido por um tempo. Eventualmente, de uma forma FIFO, os blocos são realmente libertados. Neste momento, o padrão de infix é verificado e, se tiver sido modificado, você terá essa quebra. A pilha no momento do intervalo não é relevante. Você precisa descobrir a natureza do bloco e revisar o código que pode estar errado.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Alça de pilha para a pilha proprietária do bloco.
  • Parâmetro 2 - Bloco de pilha sendo liberado.
  • Parâmetro 3 - Tamanho do bloco de pilha.
  • Parâmetro 4 - Reservado.

Informações adicionais
  • Camada de teste: Pilhas
  • ID de parada: CORRUPTED_FREED_HEAP_BLOCK
  • Código de paragem: 0xE
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Padrão de sufixo corrompido para bloco de pilha.

Causa provável

Normalmente, isso acontece para erros de saturação de buffer. Às vezes, o verificador de aplicativo coloca páginas não acessíveis no final da alocação e saturações de buffer causarão uma violação de acesso e, às vezes, o bloco de pilha é seguido por um padrão mágico. Se esse padrão for alterado quando o bloco for liberado, você terá essa quebra. Essas quebras podem ser bastante difíceis de depurar porque você não tem o momento real em que a corrupção aconteceu. Você só tem acesso ao momento livre (ou seja, "stop happened here") e ao rastreamento da pilha de alocação ('!heap -p -a HEAP_ADDRESS')

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Alça de pilha usada na chamada.
  • Parâmetro 2 - Bloco de pilha envolvido na operação.
  • Parâmetro 3 - Tamanho do bloco de pilha.
  • Parâmetro 4 - Reservado.

Informações adicionais
  • Camada de teste: Pilhas
  • ID de parada: CORRUPTED_HEAP_BLOCK_SUFFIX
  • Código de paragem: 0xF
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Carimbo de início corrompido para bloco de pilha.

Causa provável

Isso acontece para subexecuções de buffer.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Alça de pilha usada na chamada.
  • Parâmetro 2 - Bloco de pilha envolvido na operação.
  • Parâmetro 3 - Tamanho do bloco de pilha.
  • Parâmetro 4 - Valor do selo corrompido.

Informações adicionais
  • Camada de teste: Pilhas
  • ID de parada: CORRUPTED_HEAP_BLOCK_START_STAMP
  • Código de paragem: 0x10
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Carimbo final corrompido para bloco de pilha.

Causa provável

Isso acontece para subexecuções de buffer.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Alça de pilha usada na chamada.
  • Parâmetro 2 - Bloco de pilha envolvido na operação.
  • Parâmetro 3 - Tamanho do bloco de pilha.
  • Parâmetro 4 - Valor do selo corrompido.

Informações adicionais
  • Camada de teste: Pilhas
  • ID de parada: CORRUPTED_HEAP_BLOCK_END_STAMP
  • Código de paragem: 0x11
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Padrão de prefixo corrompido para bloco de pilha.

Causa provável

Isso acontece para subexecuções de buffer.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Alça de pilha usada na chamada.
  • Parâmetro 2 - Bloco de pilha envolvido na operação.
  • Parâmetro 3 - Tamanho do bloco de pilha.
  • Parâmetro 4 - Reservado.

Informações adicionais
  • Camada de teste: Pilhas
  • ID de parada: CORRUPTED_HEAP_BLOCK_PREFIX
  • Código de paragem: 0x12
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Violação de acesso de primeira chance para rastreamento de pilha atual.

Causa provável

Esta é a parada mais comum do verificador de aplicativos. Normalmente, é causado por um erro de saturação de buffer. O verificador de pilha coloca uma página não acessível no final de uma alocação de pilha e uma saturação de buffer causará uma exceção tocando nesta página. Para depurar essa parada, identifique o endereço de acesso que causou a exceção e use o seguinte comando do depurador:

  • !heap -p -a ACCESS_ADDRESS

Este comando fornecerá detalhes sobre a natureza do erro e qual bloco de pilha é saturado. Ele também fornecerá o rastreamento de pilha para a alocação de blocos. Existem várias outras causas para essa parada, por exemplo, acessar um bloco de pilha depois de ser liberado. O mesmo comando do depurador será útil para este caso.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço inválido causando a exceção.
  • Parâmetro 2 - Endereço de código que executa o acesso inválido.
  • Parâmetro 3 - Registo de exceção.
  • Parâmetro 4 - Registo de contexto.

Informações adicionais
  • Camada de teste: Pilhas
  • ID de parada: FIRST_CHANCE_ACCESS_VIOLATION
  • Código de paragem: 0x13
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Contagem de lista de heap de processo inválida.

Causa provável

Essa mensagem pode acontecer se, ao chamar GetProcessHeaps, o gerenciador de heap de página detetar algumas inconsistências internas. Isso pode ser causado por alguma corrupção aleatória no espaço do processo.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Contagem real de pilhas.
  • Parâmetro 2 - Contagem de pilha de páginas.
  • Parâmetro 3 - Não utilizado
  • Parâmetro 4 - Não utilizado

Informações adicionais
  • Camada de teste: Pilhas
  • ID de parada: CORRUPTED_HEAP_LIST
  • Código de paragem: 0x14
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Detalhes do Leak Stop

Uma alocação de pilha foi vazada.

Causa provável

Essa parada é gerada se a dll proprietária da alocação foi descarregada dinamicamente enquanto possuía recursos.

informações exibidas pelo Application Verifier
  • 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 visualizar 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 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: Fuga
  • ID de parada: DOTAÇÃO
  • Código de paragem: 0x900
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Um HANDLE vazou.

Causa provável

Essa parada é gerada se a dll proprietária do identificador foi descarregada dinamicamente enquanto possuía recursos. Para depurar essa parada: Execute o parâmetro !htrace1 para obter informações adicionais sobre o identificador.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Valor da alça vazada. Execute o identificador< !htrace >para obter informações adicionais sobre o identificador se o rastreamento do identificador estiver habilitado.
  • Parâmetro 2 - Endereço para o rastreamento da pilha de alocação. Execute o endereço< dps >para visualizar 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 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: Fuga
  • ID de parada: PEGA
  • Código de paragem: 0x901
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Um HKEY vazou.

Causa provável

Essa parada é gerada se a dll proprietária da chave do Registro foi descarregada dinamicamente enquanto possuía recursos.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Valor do HKEY vazado.
  • Parâmetro 2 - Endereço para o rastreamento da pilha de alocação. Execute o endereço< dps >para visualizar 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 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: Fuga
  • ID de parada: REGISTO
  • Código de paragem: 0x902
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Uma reserva virtual vazou.

Causa provável

Essa parada é gerada se a dll proprietária da reserva virtual foi descarregada dinamicamente enquanto possuía recursos.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço de reserva vazado.
  • Parâmetro 2 - Endereço para o rastreamento da pilha de alocação. Execute o endereço< dps >para visualizar 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 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: Fuga
  • ID de parada: VIRTUAL_RESERVATION
  • Código de paragem: 0x903
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Um BSTR vazou.

Causa provável

Essa parada é gerada se a dll proprietária do SysString foi descarregada dinamicamente enquanto possuía recursos.

informações exibidas pelo Application Verifier
  • 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 da pilha de alocação. Execute o endereço< dps >para visualizar 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 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: Fuga
  • ID de parada: SYSSTRING
  • Código de paragem: 0x904
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se a dll registrada para notificação de energia e foi descarregada dinamicamente sem cancelar o registro.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço do registo da notificação de energia.
  • Parâmetro 2 - Endereço para o rastreamento da pilha de registro. Execute o endereço< dps >para visualizar 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 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: Fuga
  • ID de parada: POWER_NOTIFICATION
  • Código de paragem: 0x905
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Detalhes de parada de bloqueios

O thread não pode possuir uma seção crítica.

Causa provável

Essa parada é gerada se um thread (ID de thread é parâmetro1) é encerrado, suspenso ou está em um estado (thread de trabalho terminou um item de trabalho) no qual ele não pode manter uma seção crítica. O fio condutor atual é o culpado. Para depurar essa parada, use os seguintes comandos do depurador:

  • KB - para obter o rastreamento de pilha atual. Se o thread atual for o proprietário da seção crítica, provavelmente está chamando ExitThread. O thread atual deveria ter liberado a seção crítica antes de sair. Se o thread atual estiver chamando TerminateThread ou SuspendThread, ele não deve fazer isso para um thread que contém uma seção crítica.
  • !cs -s <parameter2> - despeje informações sobre esta seção crítica.
  • ln <parameter2> - para mostrar símbolos perto do 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 Application Verifier
  • Parâmetro 1 - ID do tópico.
  • Parâmetro 2 - Endereço da secção crítica.
  • 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
  • Código de paragem: 0x200
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Descarregando DLL contendo uma seção crítica ativa.

Causa provável

Essa parada é 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 do 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> - despeje informações sobre esta seção crítica.
  • ln <parameter1> - para mostrar símbolos perto do 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 de seção crítica.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço da secção crítica.
  • Parâmetro 2 - Rastreamento de pilha de inicialização de seção crítica.
  • Parâmetro 3 - DLL nome endereço.
  • Parâmetro 4 - DLL endereço base.

Informações adicionais
  • Camada de teste: Fechaduras
  • ID de parada: LOCK_IN_UNLOADED_DLL
  • Código de paragem: 0x201
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Bloco de pilha de liberação contendo uma seção crítica ativa.

Causa provável

Essa parada é gerada se uma alocação de pilha 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 <(parâmetro1)> - despeje informações sobre esta seção crítica.
  • ln <parameter1> - para mostrar símbolos perto do 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 de seção crítica.
  • < 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 Application Verifier
  • Parâmetro 1 - Endereço da secção crítica.
  • Parâmetro 2 - Rastreamento de pilha de inicialização de seção crítica.
  • Parâmetro 3 - Endereço do bloco de pilha.
  • Parâmetro 4 - Tamanho do bloco da pilha.

Informações adicionais
  • Camada de teste: Fechaduras
  • ID de parada: LOCK_IN_FREED_HEAP
  • Código de paragem: 0x202
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Normalmente, essa parada é gerada se uma seção crítica tiver sido inicializada mais de uma vez. Neste 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. Neste segundo caso, é possível que o parâmetro3 e o parâmetro4 sejam inválidos e inúteis. Para depurar essa parada:

  • !cs -s -d <parameter2> - despeje informações sobre esta seção crítica.
  • ln <parameter1> - para mostrar símbolos perto do endereço da seção crítica. Isso pode ajudar a identificar a seção crítica se esta 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 Application Verifier
  • Parâmetro 1 - Endereço da secçã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 paragem: 0x203
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Memória livre contendo uma seção crítica ativa.

Causa provável

Essa parada é gerada se a memória que contém uma seção crítica foi liberada, mas a seção crítica não foi excluída usando DeleteCriticalSection. Para depurar essa parada, use os seguintes comandos do depurador:</p.>

  • !cs -s -d <parameter2> - despeje informações 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 deteta imediatamente seções críticas 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 mapeada MapViewOfFile e emite diferentes paradas nesses casos. Portanto, restam muito poucos casos para esta paragem do verificador. O bloqueio deve estar em um intervalo de memória liberado pelo código de modo kernel ou liberado por processos cruzados por APIs como VirtualFreeEx. Normalmente, essa parada será encontrada se uma parada anterior (por exemplo, LOCK_IN_FREED_HEAP ou LOCK_IN_UNLOADED_DLL) foi continuada pressionando 'g' no console do depurador.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço da secçã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 utilizado.

Informações adicionais
  • Camada de teste: Fechaduras
  • ID de parada: LOCK_IN_FREED_MEMORY
  • Código de paragem: 0x204
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Seção crítica corrompida.

Causa provável

Essa parada é gerada se o campo DebugInfo da seção crítica estiver apontando para 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> - despeje informações sobre esta 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, então geralmente essas informações são confiáveis).
  • !cs -s <parameter1> - despeje informações sobre esta seção crítica com base no conteúdo atual da estrutura da seção crítica (a estrutura já está corrompida, então à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 address1>< 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 Application Verifier
  • Parâmetro 1 - Endereço da secção crítica.
  • Parâmetro 2 - Endereço de informações de depuração inválido desta seção crítica.
  • Parâmetro 3 - Endereço das informações de depuração encontradas na lista ativa.
  • Parâmetro 4 - Rastreamento da pilha de inicialização.

Informações adicionais
  • Camada de teste: Fechaduras
  • ID de parada: LOCK_CORRUPTED
  • Código de paragem: 0x205
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se o ID do thread do proprietário for inválido no contexto atual. Para depurar essa parada:

  • !cs -s <parameter1> - despeje informações sobre esta seção crítica.
  • ln <parameter1> - para mostrar símbolos perto do endereço da seção crítica. Isso deve ajudar a identificar a seção crítica.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço da secção crítica.
  • Parâmetro 2 - Possuir linha.
  • Parâmetro 3 - Thread de propriedade esperado.
  • Parâmetro 4 - Seção crítica debug info address.

Informações adicionais
  • Camada de teste: Fechaduras
  • ID de parada: LOCK_INVALID_OWNER
  • Código de paragem: 0x206
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se o campo de contagem de recursão da estrutura de seção crítica for inválido no contexto atual. Para depurar essa parada:

  • !cs -s <parameter1> - despeje informações sobre esta seção crítica.
  • ln <parameter1> - para mostrar símbolos perto do endereço da seção crítica. Isso deve ajudar a identificar a seção crítica.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço da secção crítica.
  • Parâmetro 2 - Contagem de recursão.
  • Parâmetro 3 - Contagem de recursões esperada.
  • Parâmetro 4 - Seção crítica debug info address.

Informações adicionais
  • Camada de teste: Fechaduras
  • ID de parada: LOCK_INVALID_RECURSION_COUNT
  • Código de paragem: 0x207
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se uma seção crítica for de propriedade de 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> - despeje 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 perto do endereço da seção crítica. Isso deve ajudar a identificar a seção crítica.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço da secção crítica.
  • Parâmetro 2 - Contagem de bloqueios.
  • Parâmetro 3 - Contagem de bloqueio esperada.
  • Parâmetro 4 - Possuir linha.

Informações adicionais
  • Camada de teste: Fechaduras
  • ID de parada: LOCK_INVALID_LOCK_COUNT
  • Código de paragem: 0x208
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Seção crítica superliberada ou corrompida.

Causa provável

Essa parada é gerada se uma seção crítica for liberada mais vezes do que o thread atual a adquiriu. Para depurar essa parada:

  • !cs -s <parameter1> - despeje informações sobre esta seção crítica.
  • !cs -s -d <parameter4> - despeje informações sobre esta seção crítica.
  • ln <parameter1> - para mostrar símbolos perto do endereço da seção crítica. Isso deve ajudar a identificar a seção crítica.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço da secção crítica.
  • Parâmetro 2 - Contagem de bloqueios.
  • Parâmetro 3 - Contagem de bloqueio esperada.
  • Parâmetro 4 - Seção crítica debug info address.

Informações adicionais
  • Camada de teste: Fechaduras
  • ID de parada: LOCK_OVER_RELEASED
  • Código de paragem: 0x209
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é 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 perto do endereço da seção crítica. Isso deve ajudar a identificar a seção crítica.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço da secção crítica.
  • Parâmetro 2 - Seção crítica debug info address.
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Fechaduras
  • ID de parada: LOCK_NOT_INITIALIZED
  • Código de paragem: 0x210
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se uma seção crítica for reinicializada pelo thread atual. Para depurar essa parada:

  • !cs -s <parameter1> ou !cs -s -d <parameter2> - despeje informações sobre esta seção crítica.
  • ln <parameter1> - para mostrar símbolos perto do endereço da seção crítica. Isso pode ajudar a identificar a seção crítica se esta for uma variável global.
  • dps <parameter3> - para identificar o caminho de 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 Application Verifier
  • Parâmetro 1 - Endereço da secção crítica.
  • Parâmetro 2 - Seção crítica debug info address.
  • Parâmetro 3 - Primeiro rastreamento de pilha de inicialização. Use dps para despejá-lo se não-NULL
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Fechaduras
  • ID de parada: LOCK_ALREADY_INITIALIZED
  • Código de paragem: 0x211
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Liberação de memória virtual contendo uma seção crítica ativa.

Causa provável

Essa parada é 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> - despeje 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 Application Verifier
  • Parâmetro 1 - Endereço da secção crítica.
  • Parâmetro 2 - Rastreamento de pilha de inicialização de seção crítica.
  • Parâmetro 3 - Endereço do 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
  • Código de paragem: 0x212
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é 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 desmapear essa memória.

  • kb - para exibir o rastreamento de pilha atual, que está chamando UnmapViewOfFile . O provável culpado é a DLL que chama UnmapViewOfFile.
  • !cs -s <parameter1> - despeje 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 Application Verifier
  • Parâmetro 1 - Endereço da secção crítica.
  • Parâmetro 2 - Rastreamento de pilha de inicialização de seção crítica.
  • Parâmetro 3 - Endereço do 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
  • Código de paragem: 0x213
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se o thread atual estiver chamando LeaveCriticalSection mas, de acordo com a contabilidade do verificador interno, ele não possui nenhuma seção crítica. Se \<parameter2\> for zero, provavelmente este é um bug no thread atual. Ele tenta deixar uma seção crítica que não entrou, 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 estão corrompidas.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço da secção crítica.
  • Parâmetro 2 - Número de seções críticas de propriedade do thread atual.
  • Parâmetro 3 - Não utilizado
  • Parâmetro 4 - Não utilizado

Informações adicionais
  • Camada de teste: Fechaduras
  • ID de parada: THREAD_NOT_LOCK_OWNER
  • Código de paragem: 0x214
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se o thread atual tenta usar um bloqueio privado que vive dentro de outra DLL. Por exemplo, a.dll tenta inserir uma seção crítica definida dentro ntdll.dll. Os bloqueios privados não podem ser usados em DLLs.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço da secção crítica.
  • Parâmetro 2 - Não utilizado.
  • Parâmetro 3 - Não utilizado
  • Parâmetro 4 - Não utilizado

Informações adicionais
  • Camada de teste: Fechaduras
  • ID de parada: LOCK_PRIVATE
  • Código de paragem: 0x215
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Detalhes do SRWLock Stop

O SRW Lock não foi inicializado.

Causa provável

Essa parada é gerada se um thread estiver tentando usar o bloqueio SRW (Param1) que não foi inicializado. Para depurar essa parada, use 'kb' para obter o rastreamento de pilha atual. É aqui que o bloqueio SRW está a ser utilizado. O bloqueio SRW deve ser inicializado usando 'InitializeSRWLock' antes de poder ser usado.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Bloqueio SRW
  • Parâmetro 2 - Não utilizado
  • Parâmetro 3 - Não utilizado
  • Parâmetro 4 - Não utilizado

Informações adicionais
  • Camada de teste: SRWLock
  • ID de parada: NOT_INITIALIZED
  • Código de paragem: 0x250
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

O SRW Lock já foi inicializado.

Causa provável

Essa parada é gerada se o bloqueio SRW (Param1) estiver sendo reinicializado. Se o bloqueio SRW estiver sendo usado ativamente por outros threads, reinicializar o bloqueio resultará em um comportamento imprevisível pelo aplicativo, incluindo travamentos e falhas. O rastreamento da pilha de inicialização pode mostrar uma aquisição se o bloqueio SRW foi inicializado estaticamente. Para depurar essa parada:

  • KB - para obter o rastreamento de pilha atual. É aqui que o bloqueio SRW está sendo reinicializado.
  • dps <parameter3> - para obter o rastreamento da pilha de inicialização do bloqueio SRW. Esse rastreamento de pilha pode mostrar uma aquisição se o bloqueio foi inicializado estaticamente.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Bloqueio SRW
  • Parâmetro 2 - ThreadId do thread que inicializou o bloqueio SRW.
  • Parâmetro 3 - Endereço do rastreamento da pilha de inicialização. Use o endereço< dps >para ver onde o bloqueio SRW foi inicializado.
  • Parâmetro 4 - Não utilizado

Informações adicionais
  • Camada de teste: SRWLock
  • ID de parada: ALREADY_INITIALIZED
  • Código de paragem: 0x251
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Acquire-Release incompatíveis no bloqueio SRW.

Causa provável

Essa parada é gerada se o bloqueio SRW (Param1) estiver sendo liberado com uma API de liberação errada. Se o bloqueio SRW foi adquirido para acesso compartilhado e está sendo liberado usando a API de liberação exclusiva ou o bloqueio SRW foi adquirido para acesso exclusivo e está sendo liberado usando a API de liberação compartilhada. Isso pode resultar em um comportamento imprevisível pelo aplicativo, incluindo travamentos e falhas. Para depurar essa parada:

  • KB - para obter o rastreamento de pilha atual. É aqui que o bloqueio SRW está sendo liberado usando a API errada.
  • dps <parameter3> - para obter o bloqueio SRW adquira o rastreamento de pilha.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Bloqueio SRW
  • 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 utilizado

Informações adicionais
  • Camada de teste: SRWLock
  • ID de parada: MISMATCHED_ACQUIRE_RELEASE
  • Código de paragem: 0x252
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se o bloqueio SRW (Param1) estiver sendo adquirido recursivamente pelo mesmo thread. Isso resultará em um impasse e o thread será bloqueado indefinidamente. A aquisição recursiva de um bloqueio SRW no modo exclusivo causará um impasse. A aquisição recursiva de um bloqueio SRW no modo compartilhado causará um impasse quando houver um thread aguardando acesso exclusivo. Considere o exemplo abaixo: - Thread A adquire o bloqueio SRW no modo compartilhado - Thread B tenta adquirir o bloqueio SRW no modo exclusivo e espera - Thread A tenta adquirir o bloqueio SRW no modo compartilhado recursivamente. Isso será bem-sucedido desde que não haja garçom exclusivo (neste caso B). Como os bloqueios SRW não têm inanição de gravador, o thread A aguarda atrás do thread B. Agora, o Thread B está esperando pelo Thread A que, por sua vez, está esperando pelo Thread B causando uma espera circular e, portanto, um impasse. Para depurar essa parada:

  • KB - para obter o rastreamento de pilha atual. É aqui que o bloqueio SRW está sendo adquirido recursivamente.
  • dps <parameter2> - para obter o rastreamento de pilha para a primeira aquisição.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Bloqueio SRW
  • 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 utilizado
  • Parâmetro 4 - Não utilizado

Informações adicionais
  • Camada de teste: SRWLock
  • ID de parada: RECURSIVE_ACQUIRE
  • Código de paragem: 0x253
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é 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. Para depurar sua parada:

  • KB - para obter o rastreamento de pilha atual. É aqui que o thread está saindo ou sendo encerrado.
  • dps <parameter3> - para obter o bloqueio SRW adquira o rastreamento de pilha.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Bloqueio SRW
  • 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 utilizado

Informações adicionais
  • Camada de teste: SRWLock
  • ID de parada: EXIT_THREAD_OWNS_LOCK
  • Código de paragem: 0x254
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se o bloqueio SRW (Param1) estiver sendo liberado pelo thread (Param2) que não adquiriu o bloqueio. Isso representa uma má prática de programação que é difícil de acertar e pode levar a um comportamento imprevisível pelo aplicativo. Para depurar essa parada:

  • KB - para obter o rastreamento de pilha atual. É aqui que o thread está liberando o bloqueio SRW que não adquiriu.
  • dps <parameter4> - para obter o bloqueio SRW adquira o rastreamento de pilha.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Bloqueio SRW
  • 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
  • Código de paragem: 0x255
  • Gravidade: Aviso
  • Erro único: 
  • Relatório de erros: Nenhum
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é 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 pelo aplicativo, incluindo falhas e travamentos. Para depurar essa parada:

  • KB - para obter o rastreamento de pilha atual. É aqui que está a ser libertada a memória que contém um bloqueio SRW ativo.
  • dps <parameter4> - para obter o bloqueio SRW adquira o rastreamento de pilha.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Bloqueio SRW
  • 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
  • Código de paragem: 0x256
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se a DLL que está sendo descarregada (Param2) contém um bloqueio SRW ativo (Param1) que ainda está em uso. Isso pode resultar em um comportamento imprevisível pelo aplicativo, incluindo falhas e travamentos. Para depurar essa parada:

  • KB - para obter o rastreamento de pilha atual. É aqui que a DLL está sendo descarregada que contém um bloqueio SRW ativo.
  • du <parameter2> - para localizar o nome da DLL que está sendo descarregada.
  • dps <parameter4> - para obter o bloqueio SRW adquira o rastreamento de pilha.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Bloqueio SRW
  • Parâmetro 2 - Endereço do nome da DLL que está sendo descarregada. Use du <address> 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
  • Código de paragem: 0x257
  • Gravidade: Aviso
  • Erro único: 
  • Relatório de erros: Nenhum
  • Log para arquivo: sim
  • Criar backtrace: sim

Detalhes da parada de memória

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

Causa provável

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

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço base de alocação.
  • Parâmetro 2 - Tamanho da região da memória.
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: INVALID_FREEMEM
  • Código de paragem: 0x600
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Chamada de alocação virtual incorreta.

Causa provável

Essa parada é gerada se o verificador do aplicativo detetar 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 e o tamanho da memória que está prestes a ser alocado e tente determinar por que eles são inválidos.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Ponteiro para o endereço base de alocação.
  • Parâmetro 2 - Ponteiro para o tamanho da região da memória.
  • Parâmetro 3 - Não utilizado
  • Parâmetro 4 - Não utilizado

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: INVALID_ALLOCMEM
  • Código de paragem: 0x601
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Chamada de visualização de mapa incorreta.

Causa provável

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

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Ponteiro para mapear o endereço base.
  • Parâmetro 2 - Ponteiro para ver o tamanho.
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: INVALID_MAPVIEW
  • Código de paragem: 0x602
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Investigar endereço inválido.

Causa provável

Essa parada é gerada se o verificador do aplicativo detetar uma chamada IsBadXXXPtr com um endereço inválido (por exemplo, um endereço de modo kernel, em vez de um endereço de modo de usuário normal) para que o buffer de memória seja 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 é simplesmente 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 multitarefa preventivo, é possível que algum outro thread altere o acesso do processo à memória que está sendo testada. A desreferenciação de ponteiros potencialmente inválidos pode desativar a expansão da pilha em outros threads. Um thread esgotando sua pilha, quando a expansão da pilha foi desativada, resulta no encerramento imediato do processo pai, sem janela de erro pop-up ou informações de diagnóstico. Espera-se que os threads em um processo cooperem de tal forma que um não libere a memória de que o outro precisa. O uso desta função não nega a necessidade de fazer isso. Se isso não for feito, o aplicativo pode falhar de maneira imprevisível. Por todos esses motivos, recomendamos nunca usar essas APIs.

informações exibidas pelo Application Verifier
  • 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 utilizado.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: PROBE_INVALID_ADDRESS
  • Código de paragem: 0x603
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Sondando a memória livre.

Causa provável

Essa parada é gerada se o verificador do aplicativo detetar 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 reutilizada 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, observe 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 simplesmente falso (por exemplo, ponteiro não inicializado) ou talvez já tenha memória liberada. Se a memória já foi 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á esses rastreamentos de pilha, se estiverem disponíveis. Isso pode mostrar o rastreamento de pilha que liberou essa memória. Mais frequentemente, a memória é uma alocação de pilha já liberada. Para verificar essa possibilidade, '!avrf -hp -a parameter3' procurará um log de rastreamentos de pilha dos caminhos de código que alocaram/liberaram esse endereço de/para o heap e exibirá 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 multitarefa preventivo, é possível que algum outro thread altere o acesso do processo à memória que está sendo testada. A desreferenciação de ponteiros potencialmente inválidos pode desativar a expansão da pilha em outros threads. Um thread esgotando sua pilha, quando a expansão da pilha foi desativada, resulta no encerramento imediato do processo pai, sem janela de erro pop-up ou informações de diagnóstico. Espera-se que os threads em um processo cooperem de tal forma que um não libere a memória de que o outro precisa. O uso desta função não nega a necessidade de fazer isso. Se isso não for feito, o aplicativo pode falhar de maneira imprevisível. Por todos esses motivos, recomendamos nunca usar essas APIs.

informações exibidas pelo Application Verifier
  • 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 utilizado.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: PROBE_FREE_MEM
  • Código de paragem: 0x604
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Sondando uma página de guarda.

Causa provável

Essa parada é gerada se o verificador do aplicativo detetar uma chamada IsBadXXXPtr para uma alocação de memória que contenha pelo menos um 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: A desreferenciação de ponteiros potencialmente inválidos pode desabilitar a expansão de pilha em outros threads. Um thread esgotando sua pilha, quando a expansão da pilha foi desativada, resulta no encerramento imediato do processo pai, sem janela de erro pop-up ou informações de diagnóstico. Para depurar essa parada, olhe para 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 multitarefa preventivo, é possível que algum outro thread altere o acesso do processo à memória que está sendo testada. A desreferenciação de ponteiros potencialmente inválidos pode desativar a expansão da pilha em outros threads. Um thread esgotando sua pilha, quando a expansão da pilha foi desativada, resulta no encerramento imediato do processo pai, sem janela de erro pop-up ou informações de diagnóstico. Espera-se que os threads em um processo cooperem de tal forma que um não libere a memória de que o outro precisa. O uso desta função não nega a necessidade de fazer isso. Se isso não for feito, o aplicativo pode falhar de maneira imprevisível. Por todos esses motivos, recomendamos nunca usar essas APIs.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço inicial.
  • Parâmetro 2 - Tamanho do bloco de memória.
  • Parâmetro 3 - Endereço da página de guarda.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: PROBE_GUARD_PAGE
  • Código de paragem: 0x605
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Investigando endereço NULL.

Causa provável

Essa parada é gerada se o verificador do aplicativo detetar uma chamada IsBadXXXPtr com um endereço NULL. Para depurar essa parada, observe o rastreamento de pilha atual (kb) e tente determinar por que o chamador da função IsBadXXXPtr acabou com o endereço NULL. Isso geralmente é o sinal de alguém não verificando o valor de retorno de uma das funções de alocação de memória. Por exemplo, o código abaixo está incorreto:

void Use(PVOID p);

int main(void) {
    PVOID p;
    p = malloc(1024);
    Use(p);
    return 0;
}

void Use(PVOID p) {
    if (IsBadReadPtr(p)) {
        return;
    }
    // p is safe to be used here.
}

Este código deve ser reescrito da seguinte forma:

int main (void) 
{ 
    PVOID p; 
    
    p = malloc (1024); 
    if (NULL == p)) { 
        return -1;
     } 

    Use (p); 

    return 0; 
} 

void Use (PVOID p) 
{
    // 
    // p is safe to be used here. 
    // 
} 

A biblioteca MSDN lista alguns motivos pelos quais os aplicativos não devem usar as APIs IsBadXXXPtr: Em um ambiente multitarefa preventivo, é possível que algum outro thread altere o acesso do processo à memória que está sendo testada. A desreferenciação de ponteiros potencialmente inválidos pode desativar a expansão da pilha em outros threads. Um thread esgotando sua pilha, quando a expansão da pilha foi desativada, resulta no encerramento imediato do processo pai, sem janela de erro pop-up ou informações de diagnóstico. Espera-se que os threads em um processo cooperem de tal forma que um não libere a memória de que o outro precisa. O uso desta função não nega a necessidade de fazer isso. Se isso não for feito, o aplicativo pode falhar de maneira imprevisível. Por todos esses motivos, recomendamos nunca usar essas APIs.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Não utilizado.
  • Parâmetro 2 - Não utilizado.
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: PROBE_NULL
  • Código de paragem: 0x606
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Bloco de memória de sondagem com endereço ou tamanho inicial inválido.

Causa provável

Essa parada é gerada se o verificador do aplicativo detetar uma chamada IsBadXXXPtr com um endereço inicial inválido (por exemplo, um endereço de modo kernel, em vez de um endereço de modo de usuário normal) ou tamanho inválido para o buffer de memória a ser investigado. Para depurar essa parada, observe 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 tamanho são simplesmente falsos, por exemplo, uma variável não inicializada. A biblioteca MSDN lista alguns motivos pelos quais os aplicativos não devem usar as APIs IsBadXXXPtr: Em um ambiente multitarefa preventivo, é possível que algum outro thread altere o acesso do processo à memória que está sendo testada. A desreferenciação de ponteiros potencialmente inválidos pode desativar a expansão da pilha em outros threads. Um thread esgotando sua pilha, quando a expansão da pilha foi desativada, resulta no encerramento imediato do processo pai, sem janela de erro pop-up ou informações de diagnóstico. Espera-se que os threads em um processo cooperem de tal forma que um não libere a memória de que o outro precisa. O uso desta função não nega a necessidade de fazer isso. Se isso não for feito, o aplicativo pode falhar de maneira imprevisível. Por todos esses motivos, recomendamos nunca usar essas APIs.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço inicial.
  • Parâmetro 2 - Tamanho do bloco de memória.
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: PROBE_INVALID_START_OR_SIZE
  • Código de paragem: 0x607
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

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

informações exibidas pelo Application Verifier
  • Parâmetro 1 - DLL endereço base de memória.
  • Parâmetro 2 - DLL tamanho do intervalo de memória.
  • Parâmetro 3 - DLL nome endereço. Use du para despejá-lo.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: INVALID_DLL_RANGE
  • Código de paragem: 0x608
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se o verificador do aplicativo detetar um VirtualFree para um bloco de memória que é realmente parte da pilha do thread atual (!). Para depurar essa parada, olhe para o rastreamento de pilha atual (kb) e tente entender por que a função chamada VirtualFree pensava 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 Application Verifier
  • Parâmetro 1 - Endereço base de alocação.
  • Parâmetro 2 - Tamanho da região da memória.
  • Parâmetro 3 - Stack endereço de limite baixo.
  • Parâmetro 4 - Stack endereço de limite alto.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: FREE_THREAD_STACK_MEMORY
  • Código de paragem: 0x609
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

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

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Valor incorreto utilizado pela aplicação.
  • Parâmetro 2 - Valor correto esperado 1.
  • Parâmetro 3 - Valor correto esperado 2.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: INVALID_FREE_TYPE
  • Código de paragem: 0x60A
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se o verificador do aplicativo detetar um VirtualFree para um endereço que já é gratuito. Para depurar essa parada, observe 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á esses rastreamentos de pilha, se estiverem disponíveis. Isso pode mostrar o rastreamento de pilha que liberou essa memória.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço do bloco de memória.
  • Parâmetro 2 - Não utilizado.
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: MEM_ALREADY_FREE
  • Código de paragem: 0x60B
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se o verificador do aplicativo detetar 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 é chamado com qualquer outro valor, exceto 0, VirtualFree não conseguirá liberar a memória. Para depurar essa parada, observe o rastreamento de pilha atual (kb): o chamador do VirtualFree é provavelmente o culpado.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Tamanho incorreto usado pelo aplicativo.
  • Parâmetro 2 - Tamanho correto esperado (0).
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: INVALID_FREE_SIZE
  • Código de paragem: 0x60C
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se a função de ponto de entrada de uma DLL (DllMain) está gerando uma exceção. Um exemplo por que isso é ruim é: se DllMain(DLL_PROCESS_ATTACH) está gerando uma exceção, o carregador de DLL do Windows irá: - Apanhar e ocultar a exceção; - Descarregue a DLL sem chamar seu DllMain(DLL_PROCESS_DETACH). Então, em muitos casos, a DLL alocou alguns recursos já, então levantou a exceção, e não terá a chance de liberar esses recursos no DllMain (DLL_PROCESS_DETACH). Para depurar essa parada:

- **du \<*parameter1*\>** - para exibir o nome da DLL. - **.exr \<*parameter2*\>** - para exibir as informações de exceção. - **.cxr \<*parameter3*\>** seguido de **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. - **\<*parameter4*\>** é o endereço de uma estrutura de verificador interna e não tem qualquer significado para a maioria dos utilizadores do verificador.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - DLL name (use du para despejá-lo).
  • Parâmetro 2 - Registo de exceção. Use .exr para exibi-lo.
  • Parâmetro 3 - Registo de contexto. Use .cxr para exibi-lo.
  • Parâmetro 4 - Descritor dll verificador

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: DLL_UNEXPECTED_EXCEPTION
  • Código de paragem: 0x60D
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se uma função de thread estiver gerando uma exceção. Isso é ruim porque todo o processo será morto. Para depurar essa parada:

  • < O parâmetro1> 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 de kb - para exibir as informações de contexto de exceção

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Código de exceção.
  • Parâmetro 2 - Registo de exceção. Use .exr para exibi-lo.
  • Parâmetro 3 - Registo de contexto. Use .cxr para exibi-lo.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: THREAD_UNEXPECTED_EXCEPTION
  • Código de paragem: 0x60E
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se obtivermos uma exceção durante uma chamada IsBadXXXPtr. Isso significa que o buffer de memória que estamos investigando não tem a proteção assumida pelo chamador, ou que a memória já foi liberada, etc. Consulte a discussão acima sobre outro código 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á C0000005, uma violação de acesso
  • .exr <parameter2> - para exibir as informações de exceção
  • .cxr <parameter3> seguido de kb - para exibir as informações de contexto da exceção e o rastreamento de pilha no momento em que a exceção foi gerada;

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Código de exceção.
  • Parâmetro 2 - Registo de exceção. Use .exr para exibi-lo.
  • Parâmetro 3 - Registo de contexto. Use .cxr para exibi-lo.
  • Parâmetro 4 - Não utilizado

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: PROBE_UNEXPECTED_EXCEPTION
  • Código de paragem: 0x60F
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Tentando redefinir o endereço NULL.

Causa provável

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

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Não utilizado.
  • Parâmetro 2 - Não utilizado.
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: INVALID_MEM_RESET
  • Código de paragem: 0x610
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se o verificador do aplicativo detetar um HeapFree, para um bloco de memória que realmente faz parte da pilha do thread atual (!). Para depurar essa parada, olhe para o rastreamento de pilha atual (kb) 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 Application Verifier
  • Parâmetro 1 - Endereço base de alocação.
  • Parâmetro 2 - Tamanho da região da memória.
  • Parâmetro 3 - Stack endereço de limite baixo.
  • Parâmetro 4 - Stack endereço de limite alto.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: FREE_THREAD_STACK_MEMORY_AS_HEAP
  • Código de paragem: 0x612
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se o verificador do aplicativo detetar um UnmapViewOfFile, para um bloco de memória que na verdade faz parte da pilha do thread atual (!). Para depurar essa parada, olhe para o rastreamento de pilha atual (kb) e tente entender por que a função chamada UnmapViewOfFile pensava 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 Application Verifier
  • Parâmetro 1 - Endereço base de alocação.
  • Parâmetro 2 - Tamanho da região da memória.
  • Parâmetro 3 - Stack endereço de limite baixo.
  • Parâmetro 4 - Stack endereço de limite alto.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: FREE_THREAD_STACK_MEMORY_AS_MAP
  • Código de paragem: 0x613
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Endereço RTL_RESOURCE incorreto.

Causa provável

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

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço.
  • Parâmetro 2 - Não utilizado.
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: INVALID_RESOURCE_ADDRESS
  • Código de paragem: 0x614
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

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

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço.
  • Parâmetro 2 - Não utilizado.
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: INVALID_CRITSECT_ADDRESS
  • Código de paragem: 0x615
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se o aplicativo estiver tentando executar código de um endereço que não é executável ou livre. 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 de kb - para exibir as informações de contexto da exceção e o rastreamento de pilha para o momento em que a exceção foi gerada.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço sendo acessado.
  • Parâmetro 2 - Código executando acesso inválido.
  • Parâmetro 3 - Registo de exceção. Use .exr para exibi-lo.
  • Parâmetro 4 - Registo 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 paragem: 0x616
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Exceção inesperada gerada durante a inicialização do buffer de saída.

Causa provável

Essa parada é gerada se obtivermos 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 essa parada:

  • .exr <parameter3> - para exibir as informações de exceção.
  • .cxr <parameter4> seguido de kb - para exibir as informações de contexto da exceção e o rastreamento de pilha no momento em que a exceção foi gerada.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço inicial do buffer.
  • Parâmetro 2 - Tamanho do buffer.
  • Parâmetro 3 - Registo de exceção. Use .exr para exibi-lo.
  • Parâmetro 4 - Registo de contexto. Use .cxr para exibi-lo.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: OUTBUFF_UNEXPECTED_EXCEPTION
  • Código de paragem: 0x617
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Exceção inesperada ao tentar encontrar o tamanho do bloco de pilha.

Causa provável

Essa parada é gerada se obtivermos uma exceção ao chamar HeapSize para um bloco de pilha que está sendo liberado. Isso normalmente significa que o endereço do bloco de pilha especificado está incorreto ou que o heap está corrompido. Para depurar essa parada:

  • .exr <parameter3> - para exibir o registro de exceção.
  • .cxr <parameter4> seguido de kb - para exibir as informações de contexto da exceção e o rastreamento de pilha no momento em que a exceção foi gerada.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço do bloco de pilha que está sendo liberado.
  • Parâmetro 2 - Pega de pilha.
  • Parâmetro 3 - Registo de exceção. Use .exr para exibi-lo.
  • Parâmetro 4 - Registo 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 paragem: 0x618
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se o programa chama VirtualFree (MEM_RELEASE) com um parâmetro lpAddress que não é 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 Application Verifier
  • Parâmetro 1 - Endereço do bloco de memória que está sendo liberado.
  • Parâmetro 2 - Endereço correto esperado do bloco de memória.
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: INVALID_FREEMEM_START_ADDRESS
  • Código de paragem: 0x619
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se o programa chama UnmapViewOfFile com um parâmetro lpBaseAddress que não é 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 Application Verifier
  • Parâmetro 1 - Endereço do bloco de memória que está sendo desmapeado.
  • Parâmetro 2 - Endereço correto esperado do bloco de memória.
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: INVALID_UNMAPVIEW_START_ADDRESS
  • Código de paragem: 0x619
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Exceção inesperada gerada na função de retorno de chamada ThreadPool.

Causa provável

Essa parada é gerada se uma função de retorno de chamada no thread threadpool estiver gerando uma exceção. Para depurar essa parada:

  • < O parâmetro1> 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 de kb - para exibir as informações de contexto de exceção.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Código de exceção
  • Parâmetro 2 - Registo de exceção. Use .exr para exibi-lo
  • Parâmetro 3 - Registo de contexto. Use .cxr para exibi-lo
  • Parâmetro 4 - Não utilizado

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: THREADPOOL_UNEXPECTED_EXCEPTION
  • Código de paragem: 0x61B
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se o aplicativo estiver tentando executar código de um endereço que não é executável ou livre. 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 de kb - para exibir as informações de contexto da exceção e o rastreamento de pilha para o momento em que a exceção foi gerada.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço que está sendo acessado
  • Parâmetro 2 - Código executando acesso inválido
  • Parâmetro 3 - Registo de exceção. Use .exr para exibi-lo.
  • Parâmetro 4 - Registo 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 paragem: 0x61C
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Criação de heap executável.

Causa provável

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

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Não utilizado.
  • Parâmetro 2 - Não utilizado.
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: EXECUTABLE_HEAP
  • Código de paragem: 0x1D
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Alocação de memória executável.

Causa provável

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

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Proteção de página especificada pelo chamador.
  • Parâmetro 2 - Não utilizado.
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Memória
  • ID de parada: EXECUTABLE_MEMORY
  • Código de paragem: 0x1E
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Detalhes da parada TLS

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

Causa provável

Essa parada é gerada se uma DLL que alocou um índice TLS estiver sendo descarregada antes de liberar esse índice TLS. Para depurar essa parada:

  • du <parameter3> - exibe 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 Application Verifier
  • Parâmetro 1 - Índice TLS
  • Parâmetro 2 - Endereço do código que alocou este índice TLS.
  • Parâmetro 3 - DLL nome endereço. Use du para despejá-lo.
  • Parâmetro 4 - DLL endereço base.

Informações adicionais
  • Camada de teste: TLS
  • ID de parada: TLS_LEAK
  • Código de paragem: 0x350
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Estrutura TLS do verificador corrompida.

Causa provável

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

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Endereço TEB.
  • Parâmetro 2 - Endereço TEB esperado.
  • Parâmetro 3 - ID do tópico.
  • Parâmetro 4 - ID de thread esperado.

Informações adicionais
  • Camada de teste: TLS
  • ID de parada: CORRUPTED_TLS
  • Código de paragem: 0x351
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Usando um índice TLS inválido.

Causa provável

Essa parada é 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 threadpool thread.

  • T1: Dll carrega e TlsAlloc
  • T1: Retorno de chamada da 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 Application Verifier
  • Parâmetro 1 - Índice TLS
  • Parâmetro 2 - Não utilizado.
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: TLS
  • ID de parada: INVALID_TLS_INDEX
  • Código de paragem: 0x352
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Detalhes da parada do Threadpool

A prioridade deste thread threadpool foi alterada.

Causa provável

Essa parada é gerada se a prioridade do thread for alterada quando ele for retornado ao threadpool.

informações exibidas pelo Application Verifier
  • Formato: -  threadpool thread (%x) tendo executado Callback (%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 - Threadpool Object allocation stack trace, use dps para despejá-lo.
  • Parâmetro 4 - Prioridade atual.

Informações adicionais
  • Camada de teste: Threadpool
  • ID de parada: INCONSISTENT_PRIORITY
  • Código de paragem: 0x700
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

A afinidade deste threadpool thread foi alterada.

Causa provável

Essa parada é gerada se a afinidade de thread for alterada quando ela for retornada ao threadpool.

informações exibidas pelo Application Verifier
  • Formato: - threadpool thread (%x) tendo executado Callback (%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 - Threadpool Object allocation stack trace, use dps para despejá-lo.
  • Parâmetro 4 - Afinidade atual.

Informações adicionais
  • Camada de teste: Threadpool
  • ID de parada: INCONSISTENT_AFFINITY_MASK
  • Código de paragem: 0x701
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Msg não processada no pool de msg do thread atual.

Causa provável

Essa parada é gerada se alguma mensagem deixada como não processada quando esse thread do threadpool é retornado ao pool. É perigoso, uma vez que será processado num contexto totalmente diferente. Por favor, use Por favor, use !avrf -tp <Param4> para ver as mensagens postadas neste tópico.

informações exibidas pelo Application Verifier
  • Formato: - threadpool thread (%x) tendo executado Callback (%p) tem mensagem de janela pendente (%x: %x)
  • Parâmetro 1 - Função de retorno de chamada.
  • Parâmetro 2 - Contexto.
  • Parâmetro 3 - Threadpool Object allocation stack trace, use dps para despejá-lo.
  • Parâmetro 4 - ID do threadpool do thread. Por favor, use !avrf -tp <threadid> para ver as mensagens postadas neste tópico.

Informações adicionais
  • Camada de teste: Threadpool
  • ID de parada: ORPHANED_THREAD_MESSAGE
  • Código de paragem: 0x702
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

A janela não fechada pertencia ao fio atual.

Causa provável

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

informações exibidas pelo Application Verifier
  • Formato: -  threadpool thread (%x) tendo executado Callback (%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 - Threadpool Object allocation stack trace, use dps para despejá-lo.
  • Parâmetro 4 - ID do threadpool do thread.

Informações adicionais
  • Camada de teste: Threadpool
  • ID de parada: ORPHANED_THREAD_WINDOW
  • Código de paragem: 0x703
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

ExitThread() ou TerminateThread() em um threadpool de threads.

Causa provável

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

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Função de retorno de chamada.
  • Parâmetro 2 - Contexto.
  • Parâmetro 3 - Threadpool Object allocation stack trace, use dps para despejá-lo.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Threadpool
  • ID de parada: ILLEGAL_THREAD_TERMINATION
  • Código de paragem: 0x704
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se a função de retorno de chamada alterar o token de thread para representar outro usuário e esqueceu de redefini-lo antes de devolvê-lo de volta ao threadpool.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Função de retorno de chamada.
  • Parâmetro 2 - Contexto.
  • Parâmetro 3 - Threadpool Object allocation stack trace, use dps para despejá-lo.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Threadpool
  • ID de parada: THREAD_IN_IMPERSONATION
  • Código de paragem: 0x705
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para 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 pool de threads, você geralmente deve evitar o uso de armazenamento local de thread e enfileiramento de chamadas assíncronas que exigem um thread persistente, como a função RegNotifyChangeKeyValue. No entanto, essas funções podem ser enfileiradas para um thread de trabalho persistente usando QueueUserWorkItem com a opção WT_EXECUTEINPERSISTENTTHREAD. Um kb no depurador revelará o chamador.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Função de retorno de chamada.
  • Parâmetro 2 - Contexto.
  • Parâmetro 3 - Threadpool Object allocation stack trace, use dps para despejá-lo.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Threadpool
  • ID de parada: PERSISTED_THREAD_NEEDED
  • Código de paragem: 0x706
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se a função de retorno de chamada esqueceu de fechar ou redefinir o identificador de transação atual.

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

Informações adicionais
  • Camada de teste: Threadpool
  • ID de parada: DIRTY_TRANSACTION_CONTEXT
  • Código de paragem: 0x707
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Este estado de threadpool tem chamadas CoInit e CoUnInit desequilibradas.

Causa provável

Essa parada é gerada se a função de retorno de chamada chamar CoInit e CoUnInit desequilibradas.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Função de retorno de chamada.
  • Parâmetro 2 - Contexto.
  • Parâmetro 3 - Threadpool Object allocation stack trace, use dps para despejá-lo.
  • Parâmetro 4 - Contagem equilibrada de chamadas.

Informações adicionais
  • Camada de teste: Threadpool
  • ID de parada: DIRTY_COM_STATE
  • Código de paragem: 0x708
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Esta paragem é 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 Application Verifier
  • Parâmetro 1 - Período especificado.
  • Parâmetro 2 - Sinalizadores especificados.
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Threadpool
  • ID de parada: INCONSISTENT_TIMER_PARAMS
  • Código de paragem: 0x709
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

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

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Função de retorno de chamada.
  • Parâmetro 2 - Contexto.
  • Parâmetro 3 - Threadpool Object allocation stack trace, use dps para despejá-lo.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Threadpool
  • ID de parada: LOADER_LOCK_HELD
  • Código de paragem: 0x7A
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

Essa parada é gerada se o idioma preferido estiver definido dentro do retorno de chamada e não for limpo quando o thread for retornado ao threadpool.

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Função de retorno de chamada.
  • Parâmetro 2 - Contexto.
  • Parâmetro 3 - Threadpool Object allocation stack trace, use dps para despejá-lo.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Threadpool
  • ID de parada: PREFERRED_LANGUAGES_SET
  • Código de paragem: 0x7B
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

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

Causa provável

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

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Função de retorno de chamada.
  • Parâmetro 2 - Contexto.
  • Parâmetro 3 - Threadpool Object allocation stack trace, use dps para despejá-lo.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Threadpool
  • ID de parada: BACKGROUND_PRIORITY_SET
  • Código de paragem: 0x7C
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

TerminateThread() em um threadpool de threads.

Causa provável

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

informações exibidas pelo Application Verifier
  • Parâmetro 1 - Não utilizado.
  • Parâmetro 2 - Não utilizado.
  • Parâmetro 3 - Não utilizado.
  • Parâmetro 4 - Não utilizado.

Informações adicionais
  • Camada de teste: Threadpool
  • ID de parada: ILLEGAL_THREAD_TERMINATION
  • Código de paragem: 0x7D
  • gravidade: erro 
  • Erro único: 
  • Relatório de erros: Break
  • Log para arquivo: sim
  • Criar backtrace: sim

Ver também

Application Verifier - Códigos de parada e definições

Application Verifier - Visão geral

Application Verifier - Recursos

Application Verifier - Testando aplicativos

Application Verifier - Testes dentro do Application Verifier

Application Verifier - Debugging Application Verifier para

Application Verifier - Perguntas Frequentes