Internet et l’informatique prendront fin dans 30 ans à cause d’un bug !
Par Korben | Nb visites : 98

Vous vous souvenez du bug de l’an 2000 ? C’était que du bonheur ! Ca a relancé le marche de l’informatique surtout pour les vieux barbus fan de Cobol et en fait, à la place de l’apocalypse numérique que les médias nous proposaient, il ne s’est quasiment rien passé…
On n’a pas eu de crash d’avion, de black out, d’explosion nuclaire ou de paralysie de tous les Microsoft Windows de la planète…
Déçu ?
Naaaan, faut pas car un nouveau bug apocalyptique va faire son apparition dans 30 ans ! C’est à dire en 2038. Ce bug affectera principalement les systèmes à base d’unix car ces derniers stockes le temps (date et heure) dans un entier signé de 32 bits (signed integer pour les connaisseurs) contenant le nombre de secondes écoulées depuis le 1er janvier 1970.
Et alors me direz vous ? Alors la limite de ces 32 bits, c’est à dire la date maximum qu’on peut atteindre avec ce format standard c’est le 19 Janvier 2038 à 3h14 (le matin).
Ca y est vous comprenez tout ? Après cette date, le temps va se planter et être représenté comme un nombre négatif ce qui aura pour conséquence de planter pas mal de programmes qui ne se croieront plus en 2038 mais en 1901 !
On connait ce problème car le bug de 2038 s’est en fait déjà produit en Mai 2006 lorsque les AOLServer (serveur open source d’AOL) ont crashés. Le logiciel avait été conçu pour que les requêtes lancées en base de données n’expirent « jamais » mais au lieu de fixer ce timeout à 0, il a été fixé à 1 milliard de secondes dans le futur. Et pas de bol, 1 milliard de secondes après le 12 Mai 2006 à 21h27 et 28sec ça tombe en 2038, et le sytème a alors calculé des timeout négatifs, ce qui l’a fait crashé.
Ce bug a aussi affecté le Rover Spirit, robot lancé en 2003 et arrivé en 2004 sur Mars, qui a planté (souvenez vous) et n’a plus répondu pendant plusieurs jours. Tous les détails sont ici.

Et pour vous prouvez que je ne fabule pas, tout est expliqué sur Wikipedia. Vous trouverez aussi plus d’infos ici, là , là , là ou encore là .
Evidement, on se doute que d’ici 2038 la plupart des machines auront été patchées ou conçues de telle façon qu’elles passeront sans souci cette date mais certains systèmes anciens ou embarqués conservés par des sociétés qui ne veulent ou ne peuvent les faire évoluer seront sans doute affectés.
Je pense notamment à des appareils se trouvant actuellement dans l’espace ou à des systèmes plus petits comme les controlleurs de feux rouges, des systèmes de navigation (genre balise argos ou autre) voir même des routeurs ou des outils de controles dans les oléoducs qui ne pourront pas être mis à jour. Il faudra alors les remplacer.
Si vous êtes programmeur, vous pouvez réagir ! Ouais !
Vous pouvez déjà commencer à auditer votre code en utilisant la FakeTime Preload Library et en lisant les recommandations de l’Open Group qui s’occupe des specs Unix.
Si vous êtes dans l’open source, il existe aussi une librairie libre qui vous permettra de patcher votre code existant afin de lui autoriser une longue et heureuse fin de vie bien après 2038.
Sachez enfin que ce bug de 2038 est très similaire à celui de l’an 2000, c’est à dire que la plupart des suggestions proposées par exemple par Steve Manley pour résoudre le problème du Y2K Bug sont applicables au bug de l’an 2038.
En tout cas, je compte sur vous pour programmer vos réveils quelques jours avant cette date du 19 Janvier 2038 afin de vous rappeler de moi car après même vos reveils planteront
J’espère en tout cas, qu’on survivra au réchauffement de la planète, aux guerres nucléaires, aux épidémies et à l’attaque des machines équipée d’intelligence artificielle, pour voir ça !
Rendez vous en 2038 les amis et en attendant suivez l’actu de ce bug sur le site officiel du bug de l’an 2038 !
Je vous recommande aussi la lecture des sujets suivants
- Les nouvelles versions de pwdump et fgdump viennent de sortir
- Bonne bidouille pour certains, piratage & escroquerie selon Zataz… Mais qui a raison ?
- Libra – Une bibliothèque personnelle qu’elle est bien jolie :-)
- Monster.fr en a une petite…
- Seesmic + Twitter = 12seconds.tv
- Emuler l’OS de l’Eee PC ou du OLPC PC sur Ubuntu ou Windows
- Du matos pour cracker des mots de passe
- Enfin un truc pour éviter la surcharge mémoire avec Firefox
- Apple me prend pour une pomme
- Google se tape le fond des océans







SnakeMAR
LE JUGEMENT DERNIER!!!!!!!!!!!!!!!!!
LOL
Osèf, les machines auront déja pris le contrôle de la planète…
Posté le 14 mars 2008 à 08:24:49
RpGmAx
Excellent, vivement 2038… enfin pas trop vite non plus ^^
Posté le 14 mars 2008 à 09:13:46
demonlight
Sarah Connor ?
Posté le 14 mars 2008 à 09:38:51
petitchevalroux
Hihi me fait marrer j’ai écrit une ligne de code hier qui va péter en 2038
mais bon le tout avec l’accord de mon patron
je suis couvert
Posté le 14 mars 2008 à 11:12:37
Aigleblanc
Si les machines prennent le contrôle de la planète, on aura cas attendre qu’elle bug en 2038 !!!!!
Mouahahhaaha !!
Posté le 14 mars 2008 à 11:32:15
Kyro
Il manque une critère important …. ce bug on l’aura qu’avec les proco 32 bits et la en se moment on passe massivement au 64bits.
Posté le 14 mars 2008 à 12:35:47
Flo
Mais les Mayas, eux, on prédit que la fin du monde aura lieu le 21 Décembre 2012…a qui faire confiance désormais ?
Posté le 14 mars 2008 à 14:59:19
Raptor
Ben moi je m’en remettrai à Paco Rabanne
Posté le 14 mars 2008 à 15:10:00
noisette
2038 …
je signe tout de suite pour être encore là ^^ »
Posté le 14 mars 2008 à 16:10:33
Naji
Et bien sûr, tout le monde oublie que de brillants illuminés ont inventé le processeur 64 bits, qui code les dates sur 2 fois plus de bits et qui multiplie donc le nombre de secondes maximales après l’Epoch par 2^32…
Posté le 14 mars 2008 à 17:27:50
Jeromecold’s Blog » Archives du Blog » Plus d’Internet et d’informatiq
[...] par là : http://www.korben.info/internet-et-li…; Une petite photo d’explosion sympa pour terminer ce post! Histoire de rester dans [...]
Posté le 14 mars 2008 à 17:56:13
Gab
L’informatique date des années 70. Il a donc au plus 36 ans. A cette époque, je crois, tout était sur 8 bits.
Qu’est-ce qui est sur 8 bits, maintenant? Un microcontrôleur à 1$? Votre vielle Game Boy? La NES?
Avec la croissance exponentielle de le puissance des ordis (et de la science et tutti quanti), je défis quiconque de mon trouver un processeur 32 bits dans 30 ans.
Internet est pas prêt d’exploser.
Posté le 14 mars 2008 à 19:31:55
Erwan
Skynet powa
Posté le 14 mars 2008 à 20:49:03
namdoog
Merde la matrice va buggé dans 30 piges, on va tous se reveiller dans des grands champs de cultures d’humains, raccordés a des tuyaux pompant notre energie vitale….VINDIOUUUUU
Posté le 14 mars 2008 à 21:12:30
kuphai
De toutes façon c’est les SATELLITES qui nous auront!!! Et bien avant!
Moi, vous ne m’aurez pas car je sais pertinemment que mon numéro de téléphone c’est mon adresse ip.
PS : Aujourd’hui on m’a demandé comment on ouvre un skyblog.. Je m’en remet doucement
Posté le 14 mars 2008 à 22:54:48
Vorenus
Très interessant et détaillé : merci Korben !
Posté le 15 mars 2008 à 01:15:50
O_o
Sauf que ça sera beaucoup plus simple à corriger que pour celui de l’an 2000
Normalement le fameux timestamp est stocké dans un type time_t (qui fait 32bits, justement), donc si la libc fait passer ce type en >32bits, une recompilation plus tard et le bug est corrigé.
Posté le 15 mars 2008 à 11:18:36
rom1504
Euh, ça n’a absolument aucun rapport avec le type de processeur, c’est juste que la variable utilisé est codé sur 32bit ce qui donne ça:
(2^31) / (365.25 * 24 * 3 600) = 68.0496504
mais si on utilisais une variable de 64bit ça changerait tout:
(2^63) / (365.25 * 24 * 3 600) = 2.92271023 Ã? 10^11
Posté le 15 mars 2008 à 14:50:12
Blog de Thomas » Le bug de l’an 2038
[...] vu cette info sur le blog de Korben : cela concerne donc les systèmes basés sur Unix. En fait, toute date est codée sur un entier [...]
Posté le 21 mars 2008 à 21:18:40