Come risolvere l’errore BSOD DRIVER VERIFIER DMA VIOLATION
Quel bugcheck del DMA Verifier, con il codice di arresto 0x000000E6, è un po’ strano, ma non impossibile da risolvere una volta capito cosa sta succedendo. In pratica, Windows genera questo BSOD quando rileva un errore DMA, ovvero qualcosa con accesso diretto alla memoria gestito dai driver, che potrebbe causare perdite di buffer o una gestione errata della memoria. A volte, questo problema si verifica a causa di Driver Verifier, lo strumento integrato per individuare i driver problematici, o anche a causa delle impostazioni hardware nel BIOS, in particolare relative a IOMMU o VT-D. Per risolvere il problema non basta correggere il codice di errore; si tratta di modificare alcune impostazioni critiche. E sì, è utile analizzare i file di dump se si vuole approfondire e vedere quale driver ha dato problemi. Ma, per la maggior parte delle persone, resettare Driver Verifier e disabilitare IOMMU/VT-D nel BIOS risolve il problema.
Tieni presente, tuttavia, che disattivare queste impostazioni fa solo scomparire temporaneamente il BSOD. Il vero colpevole, il driver o l’hardware difettoso, potrebbe ancora essere in agguato da qualche parte. Quindi, una volta risolto il crash, vale la pena risolvere i problemi dei driver o controllare i componenti hardware, ma questa è un’altra storia. Per ora, ecco come disattivare Driver Verifier e modificare le impostazioni del BIOS per attenuare l’errore.
Disabilita Driver Verifier
Questo metodo può essere utile se Driver Verifier sta rilevando attivamente un driver: a volte, viene attivato da un driver che si comporta in modo anomalo o da impostazioni residue. Potresti averlo attivato prima di testare alcuni driver sospetti, ma tende a essere fastidioso se è configurato in modo errato o se causa autonomamente il BSOD. Disattivandolo, si ripristina tutto il monitoraggio, consentendo a Windows di funzionare più normalmente mentre si risolve il problema effettivo del driver o dell’hardware in un secondo momento. A volte, su alcuni sistemi, Driver Verifier non si disattiva correttamente dal menu standard, quindi disattivarlo tramite riga di comando o registro potrebbe risparmiarti qualche grattacapo. E, naturalmente, se il tuo PC non si avvia normalmente, la Modalità Provvisoria è la tua alleata: prova a disattivarla da lì o usa un supporto di installazione di Windows per accedere a WinRE.
Utilizzo di Driver Verifier Manager
- Premi Win + R, digita
verifiere premi Invio. A volte questo apre direttamente lo strumento di verifica e puoi scegliere di eliminare le impostazioni esistenti. - Imposta il verificatore su Elimina impostazioni esistenti.
- Questo dovrebbe ripristinare tutti i controlli dei driver impostati in precedenza, sperando di interrompere il BSOD.
Questo approccio è semplice e funziona quando il Driver Verifier causa il crash loop. In assenza di altri problemi, Windows si riavvierà normalmente. Se non funziona, o se Driver Verifier si rifiuta di disattivarsi, il metodo successivo è la riga di comando.
Tramite riga di comando
- Apri Win+R, digita
cmde premi Ctrl+Maiusc+Invio per eseguire come amministratore. In pratica, sono necessari permessi elevati per gestire Verifier. - Digita
verifier /resete premi Invio. Questo comando ripristina tutte le impostazioni predefinite del verificatore, impedendogli di controllare i driver e di causare arresti anomali.
A volte, questo non cancella completamente le impostazioni del verificatore a causa di stranezze nel registro. In tal caso, potrebbe essere necessario eliminare manualmente alcune chiavi del registro. Ricordatevi solo di eseguire prima un backup del registro, perché ovviamente Windows deve renderlo più difficile del necessario.
Pulizia del registro
- Premi Win + R, digita
regedite premi Invio. - Passare a: Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
- Cercare ed eliminare le chiavi VerifyDrivers e VerifyDriverLevel.
Davvero, fai un backup del registro prima di farlo, per sicurezza. Se ti trovi in un loop di avvio o non riesci ad accedere a Windows normalmente, avvia in modalità provvisoria o usa le opzioni di ripristino: a volte disabilitare Verifier dalla modalità provvisoria è la soluzione.
Disabilitare la virtualizzazione nel BIOS
A quanto pare, questo BSOD può verificarsi anche se il BIOS è impostato con Intel VT-D o AMD IOMMU abilitati, anche se non si è mai modificato il funzionamento di queste impostazioni. Windows le usa per la virtualizzazione o per proteggere la memoria, ma a volte interferiscono con il DMA, soprattutto su computer con dispositivi PCIe esterni. La soluzione è accedere al BIOS e disattivare queste opzioni.
Ecco la procedura approssimativa, poiché i menu del BIOS variano molto a seconda della marca della scheda madre:
- Riavvia il PC e premi ripetutamente il tasto BIOS (come Canc o F2, a volte Esc o F10 ).Se non sei sicuro, cerca su Google il modello della tua scheda madre o del tuo laptop + “tasto BIOS”.
- Una volta dentro, cerca le impostazioni denominate Configurazione CPU avanzata, Chipset o simili. Di solito si trovano in una scheda come Avanzate o Sicurezza.
- Trova le opzioni relative alla virtualizzazione: in genere sono etichettate come Intel VT-X, AMD-V, VTx, VT-D o Kernel DMA Protection. Fai una rapida ricerca nel menu del BIOS: a volte è nascosto dietro altri menu.
- Disabilitare queste opzioni. Se il BIOS ha un interruttore per la protezione Kernel DMA, impostarlo su Disabilitato.
- Salvare le modifiche (solitamente tramite F10 ) ed uscire.
È un po’ fastidioso perché ogni scheda madre gestisce questa funzionalità in modo diverso e alcuni aggiornamenti del BIOS potrebbero modificare la struttura dei menu. In alcune configurazioni, potrebbe essere necessario disabilitare anche SVM (Secure Virtual Machine) o altre opzioni di virtualizzazione, poiché potrebbero interferire con il DMA.
Dopo aver modificato il BIOS, riavvia Windows e verifica se il crash si risolve. In caso contrario, ricontrolla il BIOS o passa all’analisi dei file dump.
Analizza i file dump se vuoi approfondire
Se sei il tipo di persona che vuole davvero scoprire quale driver o hardware causa questo problema, puoi analizzare i file dump. I file dump si trovano in genere in %windir%\Minidump. Strumenti come WinDbg Preview dal Microsoft Store sono molto utili in questo caso.
Una volta installato, eseguilo come amministratore, apri il file dump più recente ed esegui !analyze -v. Cerca le sezioni MODULE_NAME o Probably caused by. Non sempre è chiarissimo, ma può fornire indizi su quale driver o modulo si è rotto. A volte, si verificano errori generici del kernel, e in quel caso è un gioco a eliminazione: prova ad aggiornare o ripristinare i driver, in particolare quelli grafici, di rete o di archiviazione.
Credetemi, analizzare i file dump può essere un’impresa ardua, ma spesso individua il vero colpevole. Il più delle volte, si tratta di qualche driver corrotto o che semplicemente si rifiuta di funzionare correttamente dopo un aggiornamento.
Risoluzione dei problemi dei driver difettosi
Se, nonostante tutto questo, il BSOD continua a verificarsi e l’analisi del dump punta a un driver specifico, è il momento di risolvere direttamente i problemi dei driver. Aggiornare o ripristinare la versione precedente è solitamente il metodo più semplice: inizierei con i driver di rete e GPU, perché sono i principali responsabili. Il processo è piuttosto semplice:
Aggiornamento dei driver
- Aprire Gestione dispositivi tramite Win + X o facendo clic con il pulsante destro del mouse su Start.
- Fare clic con il pulsante destro del mouse sul dispositivo (ad esempio sulla scheda di rete, sulla scheda video, ecc.) e scegliere Aggiorna driver.
- Seleziona Cerca automaticamente i driver per consentire a Windows di trovare i driver più recenti tramite Windows Update oppure seleziona un file driver scaricato manualmente.
A volte, il sito web di un produttore personalizzato offre driver più recenti o più stabili: provateli se gli aggiornamenti di Windows non funzionano. Oppure, se il driver più recente sembra instabile, potrebbe essere meglio tornare a una versione precedente e più collaudata.
Ripristino dei driver
- Apri Gestione dispositivi, trova il tuo dispositivo e fai doppio clic su di esso.
- Vai alla scheda Driver, quindi fai clic su Ripristina driver.
- Se richiesto, seleziona un motivo e attendi il ripristino.
Se il rollback non è disponibile, o se il driver è comunque l’ultimo, potrebbe essere necessario disinstallarlo e reinstallarne una versione stabile. A volte, utilizzare gli strumenti di installazione del produttore è più semplice. Inoltre, uno strumento di pulizia dei driver come Display Driver Uninstaller (DDU) può aiutare a eliminare i driver più ostinati e problematici prima di reinstallarli.
Aggiorna Windows
E, naturalmente, mantenete Windows aggiornato. Microsoft ha implementato correzioni per i bug relativi al DMA nelle build più recenti, soprattutto quelle successive alla 20H2. Le versioni precedenti di Windows, soprattutto quelle precedenti alla 20H2, potrebbero riscontrare bug che causano questo errore, in particolare con dispositivi PCIe esterni o hardware legacy. Quindi:
- Premi Win + R, digita
control update, quindi premi Invio. - Fare clic su Controlla aggiornamenti e installare quelli disponibili.
- Riavviare e verificare se il BSOD persiste.
Se tutto il resto fallisce, a volte il problema potrebbe essere l’hardware stesso. Ma eseguire questi controlli lato software risolve la maggior parte degli scenari più comuni.