Il fantasma nella macchina: un bug di 16 anni che ha fatto tremare Tailscale

Il fantasma nella macchina: un bug di 16 anni che ha fatto tremare Tailscale

Se pensate che il vostro codice sia scritto male, aspettate di sentire cosa è successo nell’underworld di SQLite. Immaginate un bug così vecchio, così profondamente sepolto, da aver visto l’ascesa e la caduta di intere ere tecnologiche, e che decide di presentarsi al grande giorno proprio ora, rendendo i dati di un servizio fondamentale come Tailscale una poltosa massa illeggibile.

Non parliamo di un semplice crash o di un errore di logica che potete risolvere con un reboot e una preghiera. Parliamo di corruzione del database. E no, non è colpa del vostro script Python scritto alle tre di notte, ma di un bug legato al meccanismo WAL-reset di SQLite che dormiva tranquillo da circa 16 anni. Sì, avete letto bene: sedici anni. Praticamente un fossile digitale che ha deciso di risvegliarsi come un Transformer dopo un lungo sonno criogenico.

Per chi non mastica database a basso livello, il Write-Ahead Logging (WAL) è quella magia che permette a SQLite di gestire le letture e le scritture senza trasformare tutto in un inferno di lock. Il problema è che, in determinate condizioni di reset del file WAL, il database finiva per perdere il filo del discorso, corrompendo l’integrità dei dati. Un classico scenario da film horror tech: tutto sembra funzionare perfettamente, finché non ti accorgi che i tuoi dati sono diventati un insieme di bit senza senso.

Il team di Tailscale, che tra l’altro ha fatto un lavoro di debugging degno di un episodio di Mr. Robot, è riuscito a tracciare la pista fino a questo mostro preistorico. La cosa interessante, e qui voglio farvi un complimento, è la trasparenza con cui hanno gestito la cosa. In un mondo dove le big tech preferirebbero nascondere i propri fallimenti sotto un tappeto di comunicati stampa in linguaggio burocratese, leggere un post tecnico che va dritto al punto è come trovare un pezzo di codice pulito in un repository pieno di spaghetti code.

Non è una notizia che cambierà le leggi sulla privacy in Italia o che impatterà sul GDPR, quindi potete rilassarvi: non c’è nessuna nuova regolamentazione europea che vi impedirà di usare i vostri server casalinghi. È solo un promemoria per tutti noi che amiamo smanettare con l’open source: il software è un organismo vivo, e a volte, i mostri del passato possono ancora morderti le caviglie.

Quindi, la prossima volta che pensate che un modulo sia ‘stabile’ solo perché non lo aggiornate dal 2010, ricordatevi di questo bug. La stabilità è un’illusione, l’unico vero costante è il debugging.

Source: Tailscale Traces Database Corruption to 16y/o SQLite WAL-Reset Bug

Lascia un commento