Quand j’ai vu ce titre au hasard de mes recherches sur Google, j’ai tout de suite pensé à un canular ou une grosse blague bien grasse de développeurs en phase d’ennui profond. En parcourant quelques articles, j’en suis arrivé à la conclusion suivante : il semble bien que l’an 2038 nous réserve un joli bug, un peu à la manière du bug de l’an 2000 (dont on n’a pas vu la couleur d’ailleurs).

Le principe

Le problème concerne des logiciels qui utilisent la représentation POSIX du temps, dans lequel le temps est représenté comme un nombre de secondes depuis le 1er janvier 1970 à 0 heure. Sur les ordinateurs 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). Dans la seconde suivante, la représentation du temps « bouclera » (10000000 00000000 00000000 00000000 en binaire) et représentera -2 147 483 648 en complément à deux, et ainsi, l’ordinateur affichera la date du 13 décembre 1901.

A noter que ce problème ne concerne que les ordinateurs 32 bits, les ordinateurs 64 bits n’étant pas concernés par le fait que leur date butoir se situe aux environs de l’an 292 277 026 596 après J.C. (soit environ 21 fois l’âge de l’univers), car les 64 bits permettent à l’ordinateur de pousser la limite à : 263  – 1 secondes. Mais malgré le succès croissant des ordinateurs à 64 bits, il est possible que nombre d’ordinateurs à 32 bits soient encore actifs en 2038, en particulier dans des systèmes embarqués.

Pour en savoir plus

Bug de l’an 2038 sur Wikipédia : http://fr.wikipedia.org/wiki/Bug_de_l%27an_2038

Que faire en tant que développeur ? : http://2038bug.com/index.php/articles/39-developer/61-what-can-i-do-as-a-developer

Bookmark and Share