Schermata blu della morte, ecco come Microsoft l'ha sconfitta

È stata una sorta di reverse-engineering del proprio stesso prodotto: Microsoft ha "combattuto" contro i driver di terze parti e ha vinto la propria battaglia.

Schermata Blu della Morte, Blue Screen of Death, BSOD per gli amanti degli acronimi. Tutti che la ricordiamo con orrore. Sessioni di gioco interrotte prima di salvare, fogli di Excel persi per sempre, lunghe sessioni di riavvio in Modalità Provvisoria - Ecco solo alcuni del “bei” momenti che ci ha lasciato nella memoria Windows negli anni passati, quando tutto diventava blu con minacciose scritte bianche.

Negli ultimi anni, tuttavia, la BSOD è diventata molto meno frequente. Per essere precisi, è diventata rarissima, e io non ricordo un solo caso in almeno due anni. Cosa è successo? Beh, nel frattempo Microsoft ha combattuto una vera guerra per sradicare le ragioni per questi errori fatali, tanto catastrofici da costringere al riavvio.

Quasi reverse engineering



Mettiamo subito le cose in chiaro: le cause della BSOD risiedono quasi completamente nelle interazioni tra sistema operativo e driver.

I device driver sono dei software scritti da terze parti per consentire a Windows di dialogare con una componente hardware, metti una stampante o una GPU. Siccome sono scritti da sviluppatori non Microsoft e sono quasi sempre closed source, Redmond non ha mai avuto accesso al loro codice, anche se quasi sempre era costruito con i kit forniti da essa.

Al di sotto di questa superficie di codice “opaco” possono succedere molte cose, compresa anche un’interazione tra più driver che non risulterà normalmente evidente. Se si aggiunge il numero esponenziale di device che ogni giorno vengono rilasciate, è facile capire come mai questo sistema fosse destinato a causare problemi fatali di stabilità.

Microsoft ha quindi dovuto cercare di capire come i driver funzionassero senza poterli “aprire”, una sorta di reverse engineering all’interno del suo stesso sistema operativo.

Perché un driver causa un BSOD



Nick Heath di ZDNet

ci spiega quali sono i tre problemi principali di driver che conducono al crash del sistema.

  • Il driver sfrutta in maniera scorretta l’API di Windows che fa comunicare kernel e driver stesso

  • Il driver causa “memory corruption”, ovverosia cerca o gestisce la memoria in modo tale da non trovarla quando serve

  • Il driver blocca il sistema spedendolo in un loop infinito

  • Microsoft ha quindi dovuto usare un metodo in pieno stile super-multinazionale: ha creato dei team di sviluppatori per mettere assieme degli algoritmi automatici e “smart” per identificare questi tre problemi: Slam (controlla un software per vedere se funziona con le API di Windows), Slayer (identifica la memory corruption tenendo d’occhi la gestione della memoria) e Terminator, per dare la caccia ai loop.

    Slam e Slayer sono alla base dei tool forniti oggi da Microsoft per sviluppare driver. Questo ha avuto certamente un effetto positivo.

    Il problema dei loop


    Terminator è stato più complesso, perché si trova a gestire il “problema della terminazione” già identificato da Alan Turing. Non può esistere un algoritmo generale per identificare questi loop infiniti.

    Fortunatamente per noi e per Microsoft, i driver sono piccoli software, attorno a 30.000 stringhe di codice, con una struttura semplice. Terminator è capace di esaminare fino a 35.000 stringhe di questo tipo di codice a caccia di loop, e ha risolto moltissimi problemi alla base della temuta BSOD.

    E voi da quanto tempo non incontrate una Schermata Blu della Morte?

    • shares
    • Mail
    4 commenti Aggiorna
    Ordina: