Le bug de l'an 2038






Jean-François COLONNA
[Contact me]

www.lactamme.polytechnique.fr

CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641, École polytechnique, Institut Polytechnique de Paris, CNRS, France

[Site Map, Help and Search [Plan du Site, Aide et Recherche]]
[The Y2K Bug [Le bug de l'an 2000]]
[Real Numbers don't exist in Computers and Floating Point Computations aren't safe. [Les Nombres Réels n'existent pas dans les Ordinateurs et les Calculs Flottants ne sont pas sûrs.]]
[N'oubliez pas de visiter Une Machine Virtuelle à Explorer l'Espace-Temps et au-delà où vous trouverez plus de 10.000 images et animations à la frontière de l'Art et de la Science]
(Site WWW CMAP28 : cette page a été créée le 07/03/2026 et mise à jour le 11/03/2026 18:29:29 -CET-)



[in english/en anglais]


Le bug de l'an 2000 a-t-il servi de leçon et sommes-nous prêts pour l'an 2038 ?


Comme je l'avais déjà signalé avant l'an 2000, certains systèmes UNIX/Linux pourraient être victime d'un "nouveau" problème de date le 19/01/2038 à 03:14:07 UTC.


En effet, tous les systèmes UNIX/Linux mesurent le temps qui passe à l'aide d'un compteur qui donne le nombre de secondes écoulées depuis le 01/01/1970 à 00:00:00 UTC (Temps Universel Coordonné). Ce compteur est un entier signé de type time_t. A l'origine il occupait 32 bits (ce qui semblait alors largement suffisant !), mais le bug de l'an 2000 a permis de prendre conscience des problèmes liés au temps dans les ordinateurs. Et ainsi avec seulement 32 bits, le 19/01/2038 à 03:14:07 UTC ce compteur devrait passer de 0x7fffffff à 0x80000000 qui est une valeur négative.

Il apparait que cette anomalie a été corrigée sur tous les systèmes modernes en faisant passer ce compteur de 32 à 64 bits, qui est cette fois-ci largement suffisant pour envisager l'avenir avec sérénité. Malgré tout d'anciens ordinateurs sont encore opérationnels et c'est en particulier le cas des systèmes dits embarqués. Faire un inventaire exhaustif semble être une tache impossible.

Ce petit programme :


/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T E S T   D U   B U G   D E   L ' A N   2 0 3 8  :                                                                         */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xtc/An2038.01$c' :                                                                                             */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20260309090718).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#include  <stdio.h>
#include  <time.h>

void      main()
          {
          int       longueur=sizeof(time_t);

          if        (longueur == sizeof(int))
                    {
                    printf("La longueur du type 'time_t' est de %d : le bug de l'an 2038 est present.\n",longueur);
                    }
          else
                    {
                    if        (longueur == sizeof(long int))
                              {
                              printf("La longueur du type 'time_t' est de %d : ce systeme est pret pour l'an 2038.\n",longueur);
                              }
                    else
                              {
                              printf("La longueur du type 'time_t' est de %d : pourquoi ?\n",longueur);
                              }
                    }
          }


permet de tester un ordinateur quelconque sous Linux, en le compilant puis en l'exécutant...

Nous sommes ainsi de nouveau confrontés à un problème non linéaire : petites causes, grands effets !


Copyright © Jean-François COLONNA, 2026-2026.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2026-2026.