Il bug del 2038

LEGANERD 033086

Il Bug dell’anno 2038 è un noto bug informatico che ha ripercussioni su alcuni software nella gestione di date relative all’anno 2038 e successivi. Il problema riguarda programmi che usano la rappresentazione POSIX per calcolare il tempo: questa calcola la data del sistema a partire dal numero di secondi a partire dal 1º gennaio 1970 (ignorando i secondi intercalare). Questo tipo di sistema è lo standard per i sistemi Unix, e colpisce anche software per altri sistemi operativi che siano stati sviluppati in C. Sulla maggior parte dei sistemi a 32 bit il valore del dato time_t usato per questo calcolo è un numero intero a 32 bit di tipo signed. Usando questo sistema, la data più avanzata rappresentabile a partire dal 1/1/1970 sono le 03:14:07 UTC di martedì 19 gennaio 2038. Dopo questo momento, il contatore supererebbe il valore massimo, e verrebbe considerato come un numero negativo. I computer leggeranno la data non come 2038 ma come 1901 (precisamente, le 20:45:52 UTC di venerdì 13 dicembre 1901), causando errori di calcolo.

“in arrivo un epic fail di tutti i datari” citando Notker! :-D

La cosa curiosa sembra però essere che qualche problema in realtà questo bug l’ha già dato, e più precisamente 4 anni fa:

Nel maggio 2006 il software di AOLserver ha subìto un primo problema dovuto a questo bug. Il software usava una data pari a un miliardo di secondi nel futuro per classificare le richieste ad un database come “senza scadenza”. Alle 21:27:28 del 12 maggio 2006 (un miliardo di secondi prima della data fatidica del 19 gennaio 2038) il sistema di calcolo della data superò il limite critico, calcolando, quindi, una data di scadenza nel passato, e causò un crash del sistema.

La soluzione? Sembra esserci ed è quella del passaggio completo al 64-bit che usano (per l’appunto) numeri interi a 64-bit anche per il tempo.

Il passaggio a questo tipo di architetture è in corso, e ci si aspetta che sia completo prima del 2038. Tuttavia, ancora oggi esistono centinaia di milioni di sistemi a 32 bit sul mercato, di cui molti in sistemi integrati, e non è affatto certo che vengano rimpiazzati prima del 2038. Nonostante l’attuale trend di aggiornamento dei computer ogni 18-24 mesi, i computer integrati possono lavorare senza interruzioni per tutta la vita del sistema che controllano. L’uso di time_t a 32 bit è anche stato inserito in vari formati di file, cosa che comporta la persistenza del problema anche oltre la vita delle macchine stesse.

Alcuni dettagli in più si possono avere direttamente da Wikipedia o dal sito ufficiale del bug (ebbene si, esiste un sito ufficiale!!) :-O
[spoiler]Oltre ad avere ben 3 eclissi solari e il passaggio vicino alla Terra dell’asteroide NEAR 2002 OD20, il 2038 sarà anche curiosamente caratterizzato dal ritiro della Coppa del Mondo di calcio: finiranno infatti proprio in quell’anno le targhette libere a disposizione e chi vincerà quel Mondiale si terrà la coppa a vita. Fonte qui[/spoiler]
[spoiler]Due vigne simpatiche sull’argomento:

LEGANERD 033088
LEGANERD 033089
[/spoiler]

Via Bazinga! Grazie a Notker

#StarWarsCountDown #RobySays speciale LuccaCG15
#StarWarsCountDown #RobySays speciale LuccaCG15
Macchia Nera Blog Awards: Dislike
Ipermegaultra Translation Fail
Ipermegaultra Translation Fail