La variabile che identifica in modo univoco una settimana nel timecode del sistema di posizionamento satellitare GPS utilizza 10 bit di memoria, il che vuol dire che ogni 1.024 settimane si resetta e riparte da zero. Il prossimo reset è previsto per il 9 aprile prossimo, e potrebbe provocare problemi non solo ai navigatori GPS più vecchi, ma anche a chi amministra server e data center che utilizzano il (normalmente) precisissimo timecode GPS per sincronizzare gli orari dei sistemi via Network Time Protocol (NTP).

Come riportato da un memorandum (PDF) pubblicato la scorsa settimana dal Dipartimento per la Sicurezza Interna USA (Homeland Security), il valore di Coordinate Universal Time Code del Global Positioning System americano ha cominciato a contare le settimane a partire dal 6 gennaio 1980, memorizzandole in una variabile di 10 bit. Un primo ciclo del Week Number è stato già completato nel 1999, e il prossimo è previsto appunto per il prossimo 9 aprile 2019.

Navigatori e software GPS recenti dovrebbero tenere conto del problema e aver previsto meccanismi di correzione, ma la Homeland Security riporta che in alcuni casi il timecode UTC non è stato correttamente interpretato. Questo può provocare un posizionamento non corretto sulla mappa o altri errori e blocchi software. Il consiglio in questo caso è di verificare la presenza di aggiornamenti del firmware sul sito del produttore.

Un problema per la sincronizzazione di server e data center

C’è però un problema potenzialmente più grave. Molti amministratori di sistemi e data center che richiedono un’accurata sincronizzazione degli orari dei server, magari sparsi su vaste aree geografiche, utilizzano spesso il timecode fornito dal GPS come “ora esatta”. In questo caso, una valutazione errata potrebbe portare a invalidare transazioni (o al contrario ammetterne di doppie), far scattare procedure di sicurezza o avere altri effetti difficilmente prevedibili. Meglio quindi verificare lo stato di aggiornamento di sistemi di questo tipo e assicurarsi che eventuali software, magari autoprodotti, usati per tradurre il timestamp GPS nell’UTC utilizzato dai server siano pronti ad accettare il rollover.

La valutazione scorretta nel dimensionamento di una variabile è un problema tipico nell’informatica. Si ritiene che la variabile non potrà mai dover avere valori più alti di un tot, ma prima o poi quel tot viene superato, e cominciano i problemi.

Il caso simile più famoso è quello del Millennium Bug (Y2K), che ha costretto sviluppatori e sistemisti ad adeguare tutti i software che utilizzavano solo le ultime due cifre per indicare l’anno in una data, dando per scontato che si tratti di anni del ventesimo secolo, accompagnato dal bug del 9 settembre 1999 (in alcuni vecchi software il codice 9999 indicava la fine di un file).