La Causa De La Muerte Del Zune
Al parecer el problema de los suicidios masivos del Zune ya ha sido identificado por un usuario de Zuneboards.
Si entendí bien lo que dijo este usuario, el "crash" repentino del Zune se debe al manejador del reloj del Zune. Este registra el tiempo en términos de de días y segundos desde 1ero de Enero de 1980. Cuando uno accede al reloj del Zune, este convierte el numero de días en un formato de años/meses/días y los segundos en horas/minutos/segundos. De la misma manera, cuando alguien ajusta el reloj, sucede lo contrario, de años/meses a días solamente e igual con las horas.
Este es el código que se activa cuando el Zune accede al reloj:
Code:
year = ORIGINYEAR; /* = 1980 */
while (days > 365)
{
if (IsLeapYear(year))
{
if (days > 366)
{
days -= 366;
year += 1;
}
}
else
{
days -= 365;
year += 1;
}
}
Se supone que esto funciona bien y siempre esta restando ya sea 365 o 366 hasta que se baja a lo que equivale un año, después lo convierte al mes y al día del mes. Pero cuando resulta que es un año bisiesto (como lo fue el 2008) este programa sigue y sigue hasta que llega a los 366, gracias al if (days > 366), este deja de restar si el ciclo esta en un año bisiesto. Pero 366 es muy grande para romper el ciclo, por lo que el Zune se queda en un loop para siempre y prácticamente no hace nada. La única solución es desconectar la batería; en el siguiente día todo volverá a estar normal.
En resumen: un mal manejo de los años bisiestos en el código del firmware del Zune, para dejarlo mucho mas claro.
La parte "fea" de todo esto es de que es un error de firmware, por lo que esto volverá a pasar en 4 años si no es corregido. Aunque realmente dudo que en 4 años la gente siga usando Zunes de 30 Gigas.
Vía: ZuneBoards
0 comentarios:
Publicar un comentario