L'articolo è stato aggiornato
Aggiornamento del 2/2/22: Mozilla ha pubblicato un articolo che analizza l’accaduto scendendo nel dettaglio e spiegando quindi cosa è stato fatto per risolvere il problema (e per far sì che non si incappi nuovamente in questo in futuro). È disponibile per la lettura – in lingua inglese – all’indirizzo hacks.mozilla.org/2022/02/retrospective-and-technical-details-on-the-recent-firefox-outage.
Avvio il mio Nightly come ogni giorno, sono circa le 8:30. Noto che non si muove, non apre alcunché, non naviga, la finestra di Gmail che è riuscito a caricare prima di inchiodarsi mi segnala che “sono offline” e che riproverà a connettersi entro una manciata di secondi. Con Nightly – essendo la versione più instabile di Firefox – è già successo di avere problemi in passato a causa di un aggiornamento nato “storto” (nulla che un rollback e successiva attesa del fix da parte di Mozilla non abbia risolto), non me ne preoccupo, scarico una vecchia versione e la installo, stesso risultato. Un intervento urgente mi porta altrove con la testa, torno su Firefox dopo una mezz’oretta circa e scopro di non essere così solo.
Cioè?
Arrivano altre segnalazioni da utenti dell’azienda ma non solo, vedo che qualcosa si muove anche su Twitter e nei gruppi Telegram di Mozilla Italia, si arriva così alla segnalazione aperta su BugZilla che spiega il perché di quel problema (e come lei ce ne sono moltissime altre segnate come duplicate in questa diversa segnalazione). Qualcosa è andata storta alla mezzanotte (PST) del 13 gennaio e ha messo in ginocchio qualsiasi Firefox sulla faccia della Terra, a prescindere dalla versione e dal ramo utilizzato (Stabile, Beta, Dev o Nightly). Io non faccio certo eccezione, il fatto di fare rollback per tornare a una versione precedente di Nightly era per forza di cose assolutamente inutile.
Compaiono le prime analisi e quindi i primi work-around, sembra che la colpa sia da attribuire all’impostazione che permette di usare HTTP/3 con Firefox: network.http.http3.enabled
, va portata a false e successivamente riavviato il browser (il quale rimaneva appeso e non riusciva realmente a chiudere il suo processo in autonomia, un colpetto dal Task Manager di sistema risolve sempre tutto o quasi). Magicamente tutto tornava a funzionare, come nulla fosse mai successo.
Approfondendo si scopre che all’avvio Firefox tenta – per impostazione predefinita se non disattivata – di contattare i server di telemetria di Mozilla. Il mio Nightly certamente lo fa, per scelta consapevole del sottoscritto che utilizza una versione instabile e fornisce feedback quando necessario per aiutare lo sviluppo. Questa “banalità” sembra essere stata la causa “immediata” del problema, perché il tentativo di connessione in HTTP/3 metteva in ginocchio il browser dopo pochi istanti dall’apertura. A questo punto il tentativo successivo è stato quello di riattivare HTTP/3 ma spegnere la telemetria. Ecco qui, problema nuovamente “risolto” passando da un’altra via, rimandando potenzialmente l’inevitabile nel caso in cui il browser vada a scontrarsi contro un altro host in HTTP/3 problematico. Decido quindi che è arrivato il momento di dare un suggerimento su Twitter:
"Ciao, Firefox non funziona"; Chiamatela "apocalisse" di Mozilla, questo è il bug (e relativi workaround), SPEGNETE LA TELEMETRIA e riavviate Firefox – 1749908 – Infinite loop in HTTP3 hangs socket thread https://t.co/rIzdT1goIi
— Giovanni (@Gioxx) January 13, 2022
In realtà da lì a poco (relativamente, è comunque passata un’abbondante ora dall’inizio della giornata lavorativa considerando la partenza italiana alle 8:30) Mozilla è intervenuta sanando il problema e rendendo di fatto i browser del panda rosso nel mondo nuovamente utilizzabili. Di chi è la colpa ancora non è dato saperlo e personalmente non mi importa neanche. Gli errori e i problemi possono capitare a tutti, cadere come incudini sulla testa da un momento all’altro, cercare l’untore da crocifiggere in piazza pubblica non serve a nulla, l’importante è che questi episodi siano talmente isolati da finire nel dimenticatoio entro breve e senza necessità di dire “ehi, ti ricordi cos’era successo la scorsa volta?“.
Hi folks,
Firefox has witnessed outages recently and we are sorry about that. We believe it’s fixed now and a restart should restore Firefox to normal. We will provide more information shortly. #firefoxdown #firefox
— Firefox Support (@FirefoxSupport) January 13, 2022
Sì, ma la telemetria?
Ecco. Ho riattivato la mia telemetria per gli stessi motivi citati poco sopra, però l’ho ripensata in ambiente aziendale. Gli utenti d’ufficio non hanno alcuna consapevolezza riguardo la telemetria di Firefox, non usano nella quasi totalità dei casi Pocket ed è bene che non partecipino agli studi di Firefox (esperimenti che Mozilla fa utilizzando gli utenti come beta tester, seppur il programma sia riservato agli utilizzatori di versioni diverse dalle stabili) senza esserne a conoscenza. Ho quindi pensato di rispolverare il file Policies.json
e metterlo in produzione in ambiente lavorativo.
Se non sai di cosa sto parlando, è presto detto: support.mozilla.org/it/kb/personalizzare-firefox-file-policiesjson. Si tratta del file che determina alcune impostazioni d’utilizzo di Mozilla Firefox, scelte dall’amministratore di sistema e che può essere utilizzato proprio per personalizzare il browser di Mozilla a prescindere da ciò che desidera l’utilizzatore finale. Di impostazioni ritoccabili ce ne sono davvero tantissime, raccolte e aggiornate in un file disponibile per tutti su GitHub all’indirizzo github.com/mozilla/policy-templates/blob/master/README.md. Il file andrà poi salvato all’interno di una cartella chiamata distribution
che dovrà essere posizionata a sua volta all’interno di quella di programma (per esempio: C:\Program Files\Mozilla Firefox\distribution
o C:\Program Files (x86)\Mozilla Firefox\distribution
).
Le policy che ho quindi messo in funzione sono queste:
{ "policies": { "DisableFirefoxStudies": true, "DisableTelemetry": true, "DisablePocket": true } }
Per rendermi la vita più semplice, ho creato un eseguibile che verifica l’esistenza del file di policy nella cartella Distribution di Firefox e – nel caso in cui sia già presente ma differente – lo sovrascrive con quello che ti ho mostrato qui poco sopra. Puoi scaricare anche tu lo stesso pacchetto che funziona per Firefox x86 e x64 all’indirizzo go.gioxx.org/fxtelemetry-disable. Per eseguirlo serviranno i diritti amministrativi (locali o di dominio) e puoi anche lanciarlo in modalità silente facendo seguire il parametro /S
al termine da riga di comando (per capirci: FxTelemetryDisable-0.1.exe /S
).
Dopo aver effettuato l’installazione, al successivo avvio di Firefox troverai le impostazioni modificate e noterai la dicitura “Il browser è gestito dalla propria azienda” a conferma dell’utilizzo del file di policy.
Se vuoi tornare indietro e rinunciare alle policy puoi – in qualsiasi momento – cancellare la cartella distribution
che trovi sotto C:\Program Files\Mozilla Firefox\distribution
o C:\Program Files (x86)\Mozilla Firefox\distribution
.
In caso di dubbi ormai lo sai, l’area commenti è a tua totale disposizione :-)
#StaySafe
L'articolo potrebbe non essere aggiornato
Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)