Bug dell'anno 2038Il bug dell'anno 2038 (abbreviato in Y2038) è un bug informatico che potrebbe avere ripercussioni su alcuni software, riguardante la gestione di date relative all'anno 2038 e successivi. ProblemaIl problema riguarda programmi che usano la rappresentazione POSIX per calcolare il tempo: essa calcola la data e l'ora del sistema sulla base del numero di secondi trascorsi dalla mezzanotte del 1º gennaio 1970 (ignorando i secondi intercalari). Questo tipo di sistema è lo standard per i sistemi Unix ed è presente anche in software per altri sistemi operativi sviluppati in C. Sulla maggior parte dei sistemi a 32 bit il dato Usando questo metodo, l'istante temporale più lontano rappresentabile corrisponde alle ore 03:14:07 di martedì 19 gennaio 2038 (UTC). Dopo questo momento il contatore supererebbe il valore massimo ed indicherebbe un numero negativo, quindi i computer restituirebbero una data corrispondente non al 2038 ma al 1901, precisamente le 20:45:52 UTC di venerdì 13 dicembre 1901, causando errori di calcolo.[1] Il problema è chiamato "Year 2038", "Y2038", "Y2K38" o "Y2.038K". Il bug si può manifestare anche prima del 2038, se viene richiesto di operare con date corrispondenti o successive all'istante incriminato; ciò accadde, per esempio, nel 2006 al server web AOLserver, che gestiva le richieste senza scadenza al proprio database assegnando alle stesse una data di scadenza pari ad un miliardo di secondi dopo la loro immissione. Alle 21:27:28 del 12 maggio 2006, esattamente un miliardo di secondi prima delle 03:14:07 del 19 gennaio 2038, il sistema di calcolo superò il limite critico, restituendo una data di scadenza nel passato e causando un crash del sistema.[2][3] SoluzioniNon è semplice risolvere il problema per le combinazioni attuali di processori, sistemi operativi e file system. Cambiare il tipo di Molti sistemi operativi per sistemi a 64 bit usano già variabili intere a 64 bit per il Sono state avanzate anche varie proposte alternative, alcune delle quali in uso, per sfruttare questo spostamento eccessivo della data massima calcolabile: tra queste vi è l'includere nel calcolo i millisecondi o i microsecondi, abbreviando la vita utile delle macchine a 300.000 anni.[4][5] Bug similiUn bug molto simile a quello dell'anno 2038 è quello che interessa alcune unità SSD di HPE, che dopo 32.768 ore smettono di funzionare. Il firmware di queste unità è stato programmato rappresentando le ore di attività tramite un numero intero a 16 bit con il segno, che può avere valori compresi tra -32768 e 32767: ciò si traduce in un numero massimo rappresentabile di 32.768 ore, ovvero 3 anni, 270 giorni e 8 ore. Per fare un confronto, utilizzando un numero a 32 bit senza segno si otterrebbe un massimo di 2.147.836.648 ore, equivalenti all'incirca a 245.000 anni. Superata la soglia fatidica delle 32.768 ore, le unità SSD in questione diventano inutilizzabili e i dati in esse contenuti vengono persi per sempre.[6] Note
Voci correlateCollegamenti esterni
|