Quello che segue è il racconto di una disavventura che mi ha fatto sudare freddo per diversi giorni ma che fortunatamente si è conclusa per il meglio, e che mi ha fatto riflettere…
Solitamente, spengo il mio MacBook unicamente quando c’è qualche programma o aggiornamento da installare che richiede espressamente il riavvio. La modalità standby non mi ha mai dato problemi, mi permette di usare il computer dopo due secondi dalla sua estrazione dalla borsa, e capita quindi sovente che l’uptime del mio Mac superi abbonantemente il mese. Settimana scorsa, il solito aggiornamento di flash player richiedeva il riavvio, e così a malincuore ho riavviato il mio MacBook, dopo aver controllato come spesso faccio che l’uptime era di 28 giorni e alcune ore.
Dopo pochi minuti dal riavvio, ho chiuso il computer per mandarlo in standby e sono tornato a casa. Rincasato, ho aperto il notebook e con mia sopresa, il sistema era completamente bloccato. Schermo nero, mouse visibile e muovibile, ma nessuna possibilità di accedere al sistema. Nessun sistema è perfetto mi son detto, men che meno Mac OS X, ho provveduto quindi a resettare il computer, e dopo il riavvio ho riaperto i miei soliti programmi e ricominciato ad usarlo.
Improvvisamente, dopo un pò di tempo, è comparsa lei, la diabolica “spinning beachball of death“!!
Per chi non usa sistemi Mac, quando compare lei, solitamente sono dolori. Applicazioni che non rispondono, code disco che non si svuotano, l’equivalente Mac della clessidra di Windows insomma. Dato che spesso il problema è un’applicazione in crash, ho provato ad aprire l’apposito menu per arrestare, ma con mia sopresa, non riuscivo più a lanciare nessuna applicazione e nemmeno a spostarmi tra quelle già aperte, finder e dock compresi.
Altro hard reset, e da qui è iniziato un vero e proprio calvario, durato tre giorni abbondanti. Non sto a raccontarvi tutte le prove che ho fatto, un mix di controlli hardware a ventole e cpu, verifica dei task alla ricerca di applicazioni o daemon fuori controllo, rimozione di vecchie app non più usate da tempo, e via dicendo. Avevo anche temuto una imminente dipartita del mio disco SSD che tante gioie mi aveva dato, ma un controllo con DriveDX mi dava uno stato generale ottimo.
Mentre effettuavo tutti questi test intanto, i blocchi erano sempre più frequenti, costringendomi ogni volta a un riavvio forzato di tutto il sistema. Una voce di questo report mi ha fatto suonare un campanello d’allarme in testa: “buggy/unknown firmware config”. Vuoi vedere che il problema risiedeva nel disco SSD? La cosa mi pareva strana, dato che stavo usando il disco oramai da 19 mesi, ma una rapida ricerca su google per “Crucial M4 firmware bug” mi ha fatto trovare questo articolo, che recitava testuale:
This bug would cause systems that reached a total of 5184 hours on their m4 SSD to become unstable. Once restarted systems would be stable until another hour had passed. The 0309 firmware update released today fixes this problem and allows users to update directly to the latest version regardless if the current firmware revision is 0001, 0002, or 0009.
Il mio firmware era effettivamente lo 009, quindi tra quelli col bug, anche se non mi tornava il conteggio delle ore. Il mio disco aveva un uptime di 5788 ore, di molto superiore alle 5184 indicate dal bug report. Ragionandoci però, poteva effettivamente essere il mio problema: se il valore di uptime veniva aggiornato unicamente al boot, il mio precedente valore di uptime doveva essere ridotto di almeno 28 giorni, tanti quanti il MacBook era rimasto acceso. Il valore da sottrarre era di circa 672 ore, il che portava il precedente valore a 5116…
Scoperto l’arcano: al riavvio il contatore aveva aggiunto in un colpo solo 672 ore, portando il valore al di sopra di 5184. Un paio di test col terminale e il comando “watch uptime” mi hanno poi dato conferma che il sistema si bloccava esattamente dopo 1 ora, come indicato dal bug. Aggiornato il firmware dell’SSD (dopo un doveroso backup!), sono ruscito a passare la soglia dell’ora:
In questi giorni vissuti a periodi di un’ora, mi sono fatto una discreta cultura sui dischi SSD, e di come siano tutto tranne semplici dischi, ma assomiglino molto più a veri e propri computer in miniatura. Il firmware che possiedono è aggiornabile, presenta bug, e al loro interno eseguono attività schedulate come veri e propri daemon, come Wear Leveling, Garbage Collection e altre ancora. Leggendo le note di rilascio dei vari firmware si vede chiaramente come da una versione all’altra migliorino i servizi, le prestazioni, esattamente come in un sistema operativo. Niente a che vedere con i vecchi dischi meccanici, i cui firmware erano poco più che delle interfacce per permettere ai controller di dialogarci.