Ce Jour-là

Bug de l'an 2038

Bug informatique

Anúncio

Le bug de l'an 2038, ou bogue de l'an 2038 (au Québec), aussi appelé Y2038 ou Epochalypse en anglais, est un bug informatique similaire au bug de l'an 2000, et dont les principales conséquences sont attendues le 19 janvier 2038 à 3 h 14 min 8 s, temps universel. Les systèmes affectés par le bug considéreront alors être le 13 décembre 1901 à 20 h 45 min 52 s en France.

Ce bug concerne potentiellement tous les systèmes d'exploitation et les programmes qui mesurent le temps avec un nombre entier codé sur 32 bits. Il concerne les formats de fichier (tels que ZIP), les systèmes de fichiers (comme le système de fichier FAT32 utilisé sur la plupart des clés USB et cartes flash) et les systèmes d'exploitation à tous les niveaux (du noyau de système d'exploitation aux langages de programmation), voire l'horloge temps réel elle-même.

Le problème concerne des logiciels qui utilisent la représentation POSIX du temps, dans laquelle le temps est représenté comme un nombre de secondes écoulées depuis le 1er janvier 1970 à minuit (0 heure) temps universel. Sur les ordinateurs fonctionnant en 32 bits, la plupart des systèmes d'exploitation concernés représentent ce nombre comme un nombre entier signé de 32 bits, ce qui limite le nombre de secondes à 231 − 1, soit 2 147 483 647 secondes (01111111 11111111 11111111 11111111 en binaire). Ce nombre maximum sera atteint le 19 janvier 2038 à 3 h 14 min 7 s (temps universel). La seconde suivante, écrite 10000000 00000000 00000000 00000000 en binaire, représente −2 147 483 648 en complément à deux, soit plus de 2 milliards de secondes avant 1970, le 13 décembre 1901 à 20 h 45 min 52 s pour être précis.

Dans le domaine applicatif, le problème s'est révélé dès les années 2010 comme celui de l'an 2000 s'était révélé dès les années 1980 sur les échéanciers des plans à long terme (les tableurs utilisent depuis des dates soit glissantes, soit en format long)[réf. nécessaire].

Les logiciels concernés sont très nombreux, car la norme POSIX, inspirée des systèmes Unix, a été utilisée pour de nombreux programmes écrits en langage C pour de nombreux systèmes d'exploitation. Sur ceux de type Unix représentant le temps par un entier de 32 bits non signé (conforme à la norme POSIX), la date limite est située en 2106 et non en 2038. Ces systèmes d'exploitation sont toutefois minoritaires.

Il n'existe pas de correctif simple et unique pour ce problème, car les horodatages sur 32 bits sont aussi présents dans plusieurs formats de fichiers actuels (par exemple le format ZIP). Un changement de représentation dans les ordinateurs rendrait inopérants les programmes exploitant l'actuelle équivalence entre la représentation interne et le format de fichiers. Beaucoup de travail sera donc nécessaire « en coulisses » pour que rien ou presque n'apparaisse en surface, ce qui avait déjà été le cas à l'approche de l'an 2000.

Le passage à un horodatage sur 64 bits repousse la date butoir au dimanche 4 décembre 292 277 026 596 apr. J.-C. à 20 h 10 min 55 s UTC, soit environ 21 fois l'âge de l'Univers.

De nombreuses structures de données qui sont en usage aujourd'hui ont des représentations de temps en format 32 bits, notamment, pour les plus connues :

les systèmes de gestion de dossiers ;

les formats de dossier binaires ;

certains langages de requête de base de données. (ex. : MySQL, qui utilise la fonction de type UNIX_TIMESTAMP() codée sur 32 bits).

Exemples de systèmes qui utilisent les formats de temps sur 32 bits :

les systèmes COBOL conçus entre 1970 et 1990 ;

les systèmes intégrés en utilisation dans les usines pour les sous-systèmes de contrôle et de surveillance ;

de nombreux systèmes informatiques en usage dans des organisations médicales et militaires.

Les systèmes d'exploitation utilisant le noyau Linux en 64 bits sont tous immunisés.

La version 3.17 du noyau Linux utilise une représentation interne des dates sur 64 bits, ce qui prépare les autres adaptations nécessaires, au niveau des bibliothèques standard C puis des applications.

NetBSD utilise un format de dates sur 64 bits aussi bien sur architecture 32 bits que 64 bits, et cela pour tous les ports depuis la version 6.0 sortie en 2012.

Anúncio

Bientôt sur l'application World in Stories

Audio, téléchargement hors ligne, sans publicité et plus.

Découvrir Premium
Bug de l'an 2038 | World in Stories