Partilhar via


Teste de fuzzing para atraso de sincronização do kernel

Observação

Esta verificação foi preterida a partir do Windows 10 Build 19042 e superior

A opção de fuzzing com atraso de sincronização do kernel randomiza os agendamentos de threads para ajudar a detetar problemas de concorrência em drivers.

Atenção Esta opção não se destina a ser usada quando você estiver verificando todos (ou uma grande coleção de) drivers em um computador. Esta opção deve ser usada somente quando você estiver fazendo testes direcionados de drivers individuais ou seus drivers de filtro anexados. Usar essa opção em um grande número de drivers ao mesmo tempo pode causar resultados imprevisíveis e pode forçar falhas em componentes não relacionados ao(s) driver(es) que você está testando.

Observação Esta opção está disponível a partir do Windows 8.1.

Quando a opção é selecionada, o Driver Verifier insere atrasos aleatórios em vários pontos das threads. Como a opção Power Framework Delay Fuzzing, a opção Kernel Synchronization Delay Fuzzing utiliza um algoritmo que ajuda a aumentar as probabilidades de encontrar erros nos drivers. A difusão do atraso de sincronização do kernel melhora em relação ao teste de estresse tradicional, onde o programa de teste é executado por dias ou até semanas na esperança de detetar problemas que podem ocorrer na execução simultânea.

Ativando esta opção

Você pode ativar a funcionalidade de fuzzing de atraso de sincronização do Kernel para um ou mais controladores utilizando o Gestor do Verificador de Controladores ou a linha de comando Verifier.exe. Para obter detalhes, consulte Selecionando Opções do Verificador de Controladores. Tem de reiniciar o computador para ativar ou desativar a opção Power Framework Delay Fuzzing.

Observação A opção de fuzzing do atraso de sincronização do kernel aumenta a probabilidade de ocorrerem condições de corrida durante a execução, inserindo atrasos aleatórios em várias chamadas de funções da API do kernel. Para que esses atrasos sejam mais eficazes, pode-se ativar esta opção juntamente com outras opções do Verificador de Driver. Devido aos atrasos que podem ser introduzidos, você pode esperar que o computador tenha uma resposta mais lenta.

  • Na linha de comando

    Na linha de comando, a difusão do atraso de sincronização do kernel é representada pelo verificador /flags 0x00800000 (Bit 23). Para ativar o Power Framework Delay Fuzzing, use um valor de sinalizador de 0x00800000 ou adicione 0x00800000 ao valor do sinalizador. Por exemplo:

    verifier /flags 0x00800000 /driver MyDriver.sys
    

    O recurso estará ativo após a próxima inicialização.

  • Usando o Gestor do Verificador de Drivers

    1. Inicie o Driver Verifier Manager. Digite Verifier numa janela da Linha de Comandos.
    2. Selecione Criar configurações personalizadas (para desenvolvedores de código) e clique em Avançar.
    3. Selecione configurações individuais de uma lista completa.
    4. Selecione (marque) Kernel synchronization delay fuzzing.
    5. Reinicie o computador.

Por que a sincronização do kernel atrasa a difusão?

A maioria das rotinas dos motoristas são reentrantes e simultâneas. Bugs relacionados à simultaneidade são notoriamente difíceis de encontrar. Os bugs podem incluir impasses e condições de corrida, causados por problemas de sincronização e mau timing entre threads. O teste de esforço é a técnica de teste tradicional para encontrar esses bugs, mas pode ser lento e caro, e os resultados nem sempre são reproduzíveis. A opção de fuzzificação do atraso de sincronização do kernel aumenta a probabilidade de condições de corrida surgirem durante a execução, inserindo atrasos aleatórios em várias funções da API do kernel. Por exemplo, se uma condição de corrida resultar em um driver acessando o IRP depois de ter sido cancelado, a opção de difusão de atraso de sincronização do kernel aumenta as chances dessa condição de corrida de tal forma que o Driver Verifier detetará o erro durante o teste. A opção de fuzzificação do atraso de sincronização do kernel aumenta o poder e a eficácia do Driver Verifier.