Fuzzing du délai de synchronisation du noyau

Notes

Cette case activée est déconseillée à partir de Windows 10 Build 19042 et versions ultérieures

L’option de fuzzing du retard de synchronisation du noyau aléatoire les planifications de threads pour aider à détecter les bogues d’accès concurrentiel dans les pilotes.

Attention Cette option n’est pas destinée à être utilisée lorsque vous vérifiez tous les pilotes (ou une grande collection de) sur un ordinateur. Cette option doit être utilisée uniquement lorsque vous effectuez des tests ciblés sur des pilotes individuels ou leurs pilotes de filtre attachés. L’utilisation de cette option sur un grand nombre de pilotes en même temps peut entraîner des résultats imprévisibles et forcer des incidents dans des composants non liés aux pilotes que vous testez.

Note Cette option est disponible à partir de Windows 8.1.

Lorsque l’option est sélectionnée, driver verifier insère des retards aléatoires à différents points dans les threads. À l’instar de l’option Fuzzing différé de Power Framework , l’option fuzzing du retard de synchronisation du noyau utilise un algorithme qui permet d’améliorer les chances de trouver des erreurs dans les pilotes. Le fuzzing du retard de synchronisation du noyau améliore les tests de contrainte traditionnels, où le programme de test est exécuté pendant des jours, voire des semaines, dans l’espoir d’intercepter des problèmes dans qui peuvent se produire lors de l’exécution simultanée.

Activation de cette option

Vous pouvez activer la fonctionnalité de fuzzing de retard de synchronisation du noyau pour un ou plusieurs pilotes à l’aide du Gestionnaire du vérificateur de pilotes ou de la ligne de commande Verifier.exe. Pour plus d’informations, consultez Sélection des options du vérificateur de pilote. Vous devez redémarrer l’ordinateur pour activer ou désactiver l’option de fuzzing différé de Power Framework.

Note L’option de fuzzing du délai de synchronisation du noyau augmente la probabilité que des conditions de concurrence apparaissent au moment de l’exécution en insérant des retards aléatoires dans différents appels de fonction d’API noyau. Pour que ces retards soient plus efficaces, vous pouvez activer cette option avec d’autres options de vérificateur de pilote. En raison des retards qui peuvent être introduits, vous pouvez vous attendre à ce que l’ordinateur ait une réponse plus lente.

  • Sur la ligne de commande

    Sur la ligne de commande, le fuzzing du retard de synchronisation du noyau est représenté par le vérificateur /flags 0x00800000 (Bit 23). Pour activer power Framework Delay Fuzzing, utilisez une valeur d’indicateur de 0x00800000 ou ajoutez 0x00800000 à la valeur de l’indicateur. Par exemple :

    verifier /flags 0x00800000 /driver MyDriver.sys
    

    La fonctionnalité sera active après le prochain démarrage.

  • Utilisation du Gestionnaire du vérificateur de pilotes

    1. Démarrez le Gestionnaire du vérificateur de pilotes. Tapez Vérificateur dans une fenêtre d’invite de commandes.
    2. Sélectionnez Créer des paramètres personnalisés (pour les développeurs de code), puis cliquez sur Suivant.
    3. Sélectionnez Sélectionner des paramètres individuels dans une liste complète.
    4. Sélectionnez (case activée) Synchronisation de la synchronisation du noyau fuzzing.
    5. Redémarrez l'ordinateur.

Pourquoi la synchronisation du noyau retarde-t-elle le fuzzing ?

La plupart des routines de pilotes sont réentrants et simultanés. Les bogues liés à l’accès concurrentiel sont notoirement difficiles à trouver. Les bogues peuvent inclure des interblocages et des conditions de concurrence, causés par des problèmes de synchronisation et un mauvais minutage entre les threads. Le test de contrainte est la technique de test traditionnelle pour trouver ces bogues, mais il peut être lent et coûteux, et les résultats ne sont pas toujours reproductibles. L’option de fuzzing du délai de synchronisation du noyau augmente la probabilité que des conditions de concurrence apparaissent au moment de l’exécution en insérant des retards aléatoires dans différents appels de fonction d’API noyau. Par exemple, si une condition de course entraîne l’accès d’un pilote à IRP après son annulation, l’option de fuzzing du retard de synchronisation du noyau augmente les chances de cette condition de course de telle sorte que le vérificateur de pilote détecte l’erreur pendant le test. L’option de fuzzing du retard de synchronisation du noyau améliore la puissance et l’efficacité du vérificateur de pilote.