Planned obsolescence - Zune

Le 31 décembre 2008 tous les Zune 30Go de première génération ont cessé de fonctionner simultanément. Ç’aurait pu être une coincidence ( une probabilité infinitésimale n’est pas une impossibilité ), la faute à une obsolescence planifiée de la part de Microsoft, à un DRM trop restrictif ? Bref les spéculations allaient bon train.

En fait rien de tout cela il s’agissait d’un vulgaire bug. Plus d’info après le saut.

Certaines personnes ont mis la main sur le code qui contrôle l’horloge temps réel du Zune et cela a été confirmé indépendamment par Microsoft. 2008 est la première année bissextile (leap year in English) que rencontrent les Zune de première génération. Tout devrait être correctement géré, le code en question faisant appel à une fonction pour vérifier que l’année était bien bissextile et à ne sauter l’année que si le nombre de jours écoulés étaient supérieurs à 366. Seul problème, le code n’était pas complet.

while (days > 365)
{
if (IsLeapYear(year))
{
if (days > 366)
{
days -= 366;
year += 1;
}
}
else
{
days -= 365;
year += 1;
}
}

Si vous exécutez le code ci dessus et que la valeur de la variable days == 366 avec IsLeapYear(year) qui retourne TRUE, alors la condition de la boucle while est vraie, la première condition sur l’année bissextile est vraie, la deuxième condition sur le nombre de jours est fausse.. Et on reboucle puisqu’aucune condition sur les variables n’a changé.

Le gel des Zune est donc dû à une boucle infini dans ce code.

La solution ? Éteindre le Zune jusqu’à ce que la batterie soit complètement vide (pour faire un hard reset ?) et ne rebooter que le 1er janvier 2009 pour être sûr que la condition menant au bug ne soit plus exécutée. Et attendre patiemment jusqu’à 2012 (il y aura probablement une mise à jour du logiciel embarqué d’ici là).

Un autre bout intéressant dans ce code donne l’intervalle des dates valides et il semblerait que seule la plage 1980-2080 soit supportée, toute date qui n’est pas dans cet intervalle est considérée comme invalide. Là on est plus dans le cadre de l’obsolescence planifiée.

PS : Bonne année 2009 !

Comments

Leave your comment