Pourquoi laisser son Mac allumé plus de 50 jours est une très mauvaise idée

 
Un bug étrange de macOS empêche toute machine de rester allumée plus de 50 jours, sans quoi elle perd sa connexion réseau. Une équipe de développeurs en a cependant trouvé l’origine et le coupable : le noyau de macOS.

S’il y a bien un aspect sur lequel macOS peut être célébré, c’est sa stabilité. Le noyau du système se base sur Unix, le même que Linux et bon nombre d’autres systèmes d’exploitation mobiles. En plus d’apporter une sécurité quasi sans faille et un petit paradis pour les développeurs, macOS est ainsi moins sensible aux soucis de performances et de fiabilité que le vieillissant noyau de Windows 11.

En ça, il est totalement possible de laisser son Mac allumé en permanence sans risque de fuite de mémoire ou d’autres soucis de stabilité pouvant s’accumuler avec le temps. C’est en tout cas ce qu’on pensait jusqu’à maintenant. Une faille technique pour le moins surprenante a été découverte, paralysant la connectivité réseau des machines restées allumées trop longtemps.

macOS : une paralysie réseau après 49,7 jours

L’équipe du service Photon, un framework d’agents IA pour applications de messagerie, a mis en lumière un dysfonctionnement pour le moins étrange. C’est lors de sa gestion quotidienne de serveurs Mac surveillant des services comme iMessage qu’elle a remarqué que plusieurs machines cessaient de répondre simultanément après une longue période d’activité.

Plus précisément, les Mac en question répondaient à une commande « ping », mais ne pouvaient plus initier la moindre connexion web ou SSH. Encore plus étonnant, toutes les machines tombaient en panne réseau après exactement 49,7 jours. Pour s’assurer qu’il ne s’agissait pas de cas isolés, l’équipe a ainsi créé des milliers de connexions TCP avant et juste après l’instant fatidique. Résultat, une fois les 16 000 ports de macOS « consommés », la machine ne peut plus ouvrir aucune connexion. Le réseau est donc hors service alors que l’ordinateur semble fonctionner.

La seule manière de résoudre le souci est de redémarrer l’ordinateur afin de réinitialiser l’horloge pour 49,7 jours supplémentaires.

Une erreur dans le noyau de macOS

L’équipe est donc allée fouiller dans le code source du noyau de macOS (appelé XNU) et a ainsi trouvé l’origine précise du bug. Il prend son origine dans la fonction qui met à jour l’horloge TCP, tcp_now. Concrètement, le système calcule le temps actuel depuis le démarrage en millisecondes, il compare ce nouveau temps avec l’ancien stocké, mais provoque un plantage quand ce temps dépasse la capacité d’un entier 32 bits. La condition pour le bon fonctionnement devient alors if (4 milliards < 0), ce qui est évidemment faux.

Le système refuse de mettre à jour l’horloge. L’horloge TCP de macOS se fige pour toujours sur la valeur maximale juste avant le bug. Pour ne rien gâcher à la sournoiserie du bug, celui-ci n’affiche aucun message d’erreur, aucun « Kernel Panic ». L’équipe de Photon a même découvert des témoignages sur les forums Apple décrivant précisément ce dysfonctionnement il y a plusieurs années, sans pour autant en déceler l’origine.

S’il n’est pas très dommageable pour les utilisateurs grand public, ce bug est fort handicapant pour les serveurs de données tournant sur macOS qui ne pourront survivre plus de 50 jours sans redémarrage. La seule solution définitive se trouve du côté d’Apple, qui devra déployer une mise à jour de son noyau.


Téléchargez notre application Android et iOS ! Vous pourrez y lire nos articles, dossiers, et regarder nos dernières vidéos YouTube.

Recherche IA boostée par
Perplexity