La gigaseconde Unix et le 11 Septembre

Le
guillaumedock
Comme vous le savez, le temps Unix est décompé en secondes (y compris
les
secondes intercalaires) depuis le 1er Janvier 1970 temps universel.

Du 03 mars 1973 au 09 septembre 2001, cette quantité se représente sur
9
chiffres décimaux exactement. Le basculement de 9 à 10 chiffres a eu
lieu
le dimanche 9 septembre 2001 à 01:46:40 UTC.

Cet instant est parfois appelé "billenium", contraction de billion
(10^9)
et millenium. Un certain nombre de systèmes ont connu des bugs à cet
instant. On peut facilement imaginer une colonne SQL limitée à 9
chiffres décimaux, ou bien un timestamp formatté sur 9 chiffres et
mal parsé, ou un buffer overflow (faut le faire, le buffer radin à
9 octets).

On peut imaginer que des systèmes financiers, bancaires ou de sécurit=
é
ont connu un dysfonctionnement à cette date. C'était dimanche. Si
le problème a été constaté lundi, le temps de trouver le bon ingé=
nieur
etc. et il est facilement mardi.

Mardi 11 septembre 2001, à 08:46:40 heure d'été de New York (EDT),
un avion impacte la tour nord du World Trade Center.

Cet instant correspond au billenium, plus 59 heures.

Quand je dis 59 heures, c'est 59 heures, 00 minutes, et 00 secondes.
Vous remarquerez par ailleurs que 08:46:40 n'est pas une heure
spéciale.
Même si on n'est pas très loin du quart d'heure, c'est intriguant.

Bref, on sait qu'il y a eu des opérations financières bizarres juste
avant le 11 septembre. Ces opérations étaient-elles l'exploitation
d'un "billenium bug" affectant des systèmes financiers (ou de
surveillance
des marchés financiers?)

On peut aussi imaginer que des programmeurs véreux aient sciemment
inséré des "billenium bugs" pour ensuite vendre l'information à leurs
copains traders.

À chacun de se former une opinion.

Mais la date du 11 septembre est aussi particulière par rapport au
billenium bug.

Un ordinateur qui se serait embrouillé les pédales à cause de ce
billenium bug,
s'embrouillerait le samedi 9 septembre à 21:46:40. Il se croirait
alors
mercredi 31 décembre 1969. Le prochain samedi qu'il verra sera le
samedi 3
janvier 1970. En réalité il sera dans la nuit du mardi 11 au mercredi
12
septembre 2001, à 00:33:20.

Maintenant si vous avez un système ou vous lancez un job et que celui-
ci
calcule le temps de sa prochaine invocation qu'il programme avec cron,
et qu'il utilise le jour et l'heure, le scénario suivant peut se
dérouler.

Disons que notre job s'exécute habituellement tous les quarts d'heure.
Il est samedi 09 septembre. À 21h45 la tâche s'exécute, et se
reprogramme
pour samedi à 22h00.

Imaginons que le cron en question souffre du millenium bug (par
exemple
parce qu'en fait c'est un système maison de programmation de tâches à
distance, et que leur protocole pourri n'a que 9 chiffres pour le
timestamp,
ou quelque chose comme ça.)

Le samedi 22h00 qu'il attendra aura donc lieu en fait le mercredi 12
septembre
2001 à 00:46:40, que le programme verra comme le samedi 3 janvier 1970
22:00.

Entretemps, c'est-à-dire depuis le samedi 9 septembre, la tâche ne
sera pas exécutée.

Donc le 11 septembre est, pour une certaine classe assez raisonnable
de
billenium bugs, le dernier jour où une tâche devant s'exécuter
périodiquement
aurait été suspendue depuis le bug.

--
Guillaume D'Ock
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Alain Montfranc
Le #18738221
guillaumedock a écrit
Le basculement de 9 à 10 chiffres a eu lieu
le dimanche 9 septembre 2001 à 01:46:40 UTC.



Mardi 11 septembre 2001, à 08:46:40 heure d'été de New York (EDT),
un avion impacte la tour nord du World Trade Center.



Soit 13h46 en UTC

Cet instant correspond au billenium, plus 59 heures.



60 plutôt non ?
rixed
Le #18749171
> On peut facilement imaginer une colonne SQL limitée à 9
chiffres décimaux, ou bien un timestamp formatté sur 9 chiffres et
mal parsé, ou un buffer overflow (faut le faire, le buffer radin à
9 octets).



Un exemple vécu de billenium bug : une liste de tuples triée
alphanuméricalement par timestamp : passé le billenium ça ne
fonctionnait plus.
Publicité
Poster une réponse
Anonyme