Vi ricordate quando vent’anni fa, all’avvicinarsi dell’anno 2000, si parlava – con toni peraltro ampiamente allarmistici – del cosiddetto millennium bug (o “Y2K bug”)?
Il problema, allora, consisteva nel fatto che molti programmi informatici usavano la notazione a due cifre per esprimere l’anno in corso: così, nel passaggio dal 1999 al 2000 si sarebbero potuti verificare evidenti problemi se i software avessero considerato le cifre “00” come corrispondenti all’anno 1900.
A parte alcuni disagi in tutto il mondo, che effettivamente si registrarono (soprattutto per l’assenza di verifiche puntuali svolte in anticipo dai sistemisti), il millennium bug non causò i danni che molti preconizzavano. Anzi, nella stragrande maggioranza dei casi furono messe a disposizione per tempo patch per risolvere il problema.
Da tempo si fa un gran parlare del bug dell’anno 2038 in Linux. Anche in questo caso vengono ipotizzati malfunzionamenti da parte di quei sistemi che il 19 gennaio 2038 non saranno correttamente aggiornati.
Iniziamo col dire che il bug in questione non deve destare alcuna preoccupazione: mancano ben 18 anni alla data “fatidica” ma soprattutto, in questo lasso di tempo, si spera che alcuni sistemi ormai obsoleti vengano abbandonati. Non solo. Un aggiornamento appena applicato sul kernel Linux con il rilascio della versione 5.10 risolve definitivamente il problema e lo “posticipa” al 2486.
Vale però la pena comprendere le motivazioni alla base del bug in questione e capire perché l'”orario X” è esattamente il 19 gennaio 2038 alle ore 3, 14 minuti e 7 secondi.
In informatica un numero intero a 32 bit permette di gestire un intervallo di valori compreso tra -2147483648 e 2147483647 usando la codifica complemento a due (esattamente 232) come spieghiamo anche nell’articolo di approfondimento Codice binario, bit e byte: cosa c’è da sapere.
Lo Unix time o Epoch time esprime il numero di secondi trascorsi dal 1° gennaio 1970, data scelta convenzionalmente. Così, i sistemi e i programmi che utilizzano interi a 32 bit potrebbero evidenziare malfunzionamenti quando saranno trascorsi 2147483647 secondi, proprio alla data indicata.
Grazie all’utilizzo del file system XFS supportato dal kernel Linux 5.10 il problema è stato “aggirato” rivendendo il meccanismo utilizzato per la generazione del timestamp e la funzione di codifica. In questo modo si potrà arrivare fino a luglio 2486.
Il problema individuato e adesso risolto non riguarda i sistemi basati su kernel Linux a 64 bit e a breve, tutti i principali produttori, hanno confermato l’intenzione di voler abbandonare le rispettive piattaforme a 32 bit: Dopo Microsoft con Windows, ARM dice addio ai 32 bit nel 2022.
A destare semmai qualche residua preoccupazione potrebbero essere quei sistemi usati a livello industriale, nel campo automotive, per il controllo elettronico che non sono mai aggiornati e che vengono utilizzati “tal quali” per anni e anni.