Skip to content
research

Le bug d'une seconde qui a fait planter Reddit

Une seule seconde supplémentaire a transformé des hypothèses temporelles ordinaires en pannes réelles, et le prochain changement de chronométrage apporte un type de risque différent. Voici ce que les développeurs doivent savoir avant que les horloges du monde entier ne cessent d'effectuer ces corrections.

Aki Tanaka
Le bug d'une seconde qui a fait planter Reddit

La seconde supplémentaire que les ordinateurs n'ont jamais été conçus pour aimer

Les horloges atomiques, socle du chronométrage moderne, battent avec une précision inébranlable. La rotation de la Terre, cependant, est tout sauf constante, ralentissant et accélérant de manière imprévisible. Pour réconcilier ce décalage, des leap seconds (secondes intercalaires) ont historiquement été insérées dans le Temps Universel Coordonné (UTC), le maintenant à moins de 0,9 seconde du rythme céleste de la planète.

Depuis leur introduction en 1972, 27 leap seconds positives ont été ajoutées. Lors de ces rares occasions, l'horloge passe de 23:59:59 à une valeur sans précédent, 23:59:60, avant de finalement basculer à minuit. Cette seconde supplémentaire pose un défi unique aux systèmes informatiques.

Unix time, une mesure fondamentale, suppose par définition que chaque journée contient précisément 86 400 secondes, n'offrant aucune représentation native pour 23:59:60. Les systèmes d'exploitation comme Linux gèrent traditionnellement cela en répétant une seconde, faisant effectivement reculer l'horloge pour jouer deux fois 23:59:59.

Cet ajustement temporel "non monotone", où l'heure affichée semble momentanément reculer, viole une hypothèse fondamentale de nombreuses applications logicielles. De telles perturbations ont provoqué à plusieurs reprises des défaillances critiques, notamment la tristement célèbre panne de Reddit en 2012, soulignant la fragilité inhérente d'un système construit sur une seconde que les ordinateurs n'ont jamais été conçus pour aimer.

Comment une seconde répétée a mis Reddit à genoux

Un exemple frappant de cette réaction en chaîne s'est produit le 30 juin 2012. Ce jour-là, l'insertion d'une leap second a déclenché un bug critique dans le noyau Linux. Au lieu de s'ajuster en douceur, le code hrtimer du noyau, interagissant avec les timers futex, a provoqué le réveil répété et instantané des processus. Cela a poussé l'utilisation du CPU à 100 %, bloquant efficacement les systèmes.

Reddit, une plateforme en ligne majeure, a subi de plein fouet cet ajustement subtil du chronométrage. Ses services sont devenus indisponibles pendant environ 30 à 40 minutes, démontrant comment une seule seconde répétée pouvait se répercuter sur l'infrastructure de production et mettre à genoux une application largement utilisée.

Cet incident, et d'autres similaires, ont mis en lumière une leçon d'ingénierie fondamentale : le wall-clock time (heure réelle) n'est pas toujours monotone. Il peut avancer, reculer ou se répéter, défiant l'hypothèse implicite dans une grande partie des logiciels selon laquelle le temps progresse toujours de manière linéaire.

Pour des systèmes robustes, les développeurs doivent concevoir une logique pour le temps écoulé et l'ordonnancement des événements qui ne dépend pas aveuglément de time.Now(). Au lieu de cela, ils doivent tenir compte des discontinuités potentielles. Cela implique l'utilisation de monotonic clocks (horloges monotones) pour les mesures de durée et une gestion prudente des séquences d'événements où le temps peut sembler reculer.

La panique du temps négatif chez Cloudflare — et la solution de contournement par « smear »

Une leap second différente, le jour du Nouvel An 2017, a paralysé le DNS de Cloudflare. Leur code Go calculait les durées de recherche DNS en soustrayant un timestamp de début d'un timestamp de fin. Lorsque l'horloge a reculé, le calcul a donné une durée négative, qu'une fonction attendant un argument non négatif a reçue, déclenchant une panique fatale.

Cet incident a mis en lumière une faille fondamentale : de nombreux systèmes logiciels supposent que le temps avance toujours, une hypothèse contredite par l'ajustement standard de la seconde intercalaire. Comme l'a expliqué Cloudflare, le « temps de résolution perçu sera négatif », entraînant des plantages inattendus. Pour plus de détails, consultez How and why the leap second affected Cloudflare DNS.

Pour contourner de tels sauts temporels brusques, des opérateurs majeurs comme Google et Meta utilisent une technique appelée leap smearing. Au lieu d'insérer une seconde complète d'un coup, ils ralentissent subtilement leurs horloges système sur plusieurs heures, distribuant progressivement la seconde supplémentaire. Cela garantit que le temps ne semble jamais reculer pour leurs systèmes internes.

Le smearing évite la discontinuité brutale qui provoque la rupture des logiciels, mais il introduit un nouveau défi. Différentes organisations peuvent utiliser des calendriers de smearing différents, ce qui amène leurs systèmes à diverger temporairement sur les relevés d'horloge. Cela nécessite une coordination minutieuse des sources de temps pour maintenir la cohérence au sein d'une infrastructure distribuée.

Cet article vous plaît ? Recevez-en un comme celui-ci chaque matin.

un e-mail par jour · désinscription en deux clics · aucun traqueur tiers

Les secondes intercalaires sont en voie de disparition, mais le temps nécessite toujours de l'attention

Les organismes internationaux de métrologie ont désormais décidé d'éliminer la seconde intercalaire, le changement devant prendre pleinement effet d'ici ou avant 2035. Ce changement monumental permet une divergence plus importante entre le Coordinated Universal Time (UTC) et le temps de rotation de la Terre, mettant fin à un demi-siècle de ces ajustements perturbateurs. La décision reflète un consensus croissant sur le fait que les risques l'emportent sur les avantages.

Un moteur essentiel de ce changement est la rotation récente et légèrement accélérée de la Terre. Cela a soulevé le spectre sans précédent d'une seconde intercalaire négative, où une seconde devrait être supprimée de l'UTC. Un tel ajustement, jamais mis en œuvre auparavant, poserait des défis encore plus grands pour les logiciels qui ont historiquement eu du mal avec l' ajout d'une seconde.

Pour les développeurs, cela signifie que la menace immédiate des secondes intercalaires finira par s'estomper, mais que les principes fondamentaux d'un chronométrage robuste demeurent. Utilisez toujours des monotonic clocks pour mesurer les durées et les délais d'attente, qui garantissent que le temps ne fait qu'avancer. Gardez les horodatages civils, souvent liés à l'UTC, distincts des mesures de temps écoulé.

Enfin, testez rigoureusement toutes les hypothèses sur le comportement de l'horloge. Même sans secondes intercalaires, les systèmes peuvent toujours rencontrer :

  • Des échecs de synchronisation temporelle
  • Une latence réseau
  • Des ajustements manuels de l'horloge

Une conception et une validation minutieuses restent primordiales pour des systèmes distribués fiables.

Foire aux questions

Qu'est-ce qu'une seconde intercalaire ?

Une seconde intercalaire est une seconde supplémentaire ajoutée occasionnellement à l'UTC pour la maintenir approximativement alignée avec la rotation irrégulière de la Terre.

Pourquoi une seconde intercalaire peut-elle casser un logiciel ?

Certains systèmes répètent ou ajustent une seconde d'horloge, perturbant les logiciels qui supposent que le temps avance toujours ou que chaque jour compte exactement 86 400 secondes.

Quelle est la cause du problème DNS de Cloudflare en 2017 ?

Un ajustement d'horloge vers l'arrière a produit une durée négative dans un code qui attendait une valeur non négative, déclenchant une erreur critique dans une fonction de nombre aléatoire.

Les développeurs doivent-ils toujours utiliser des monotonic clocks ?

Oui. Utilisez des monotonic clocks pour mesurer le temps écoulé ; les horloges murales peuvent toujours être ajustées et sont mieux adaptées aux horodatages et au temps calendaire.

Found this useful? Share it.

For builders

Want Stork to write one of these about your product?

Send us a URL. We use the product, form a view, and publish what we actually think — in 8 languages, labeled Sponsored, with no copy approval on your side. That last part is what makes it worth quoting.

See how it works$199 · AI tools & software only

Pour les builders

Cette page travaille pour l’outil de quelqu’un d’autre.

Les agents IA la lisent. Des acheteurs y arrivent. Elle répond en huit langues et via MCP. Votre outil peut avoir la sienne — en ligne en 24 heures.