martes

Game Over (o tilt) nuevamente en el 2038

Game Over!

En el 2000 los aviones no cayeron, las tostadoras no se revelaron, los sistemas informáticos no fallaron. Todos pensamos que estábamos a salvo del apocalipsis digital, pero no, solo lo dilatamos 38 años (muy a lo trama de Terminator).

Buscando información de las especificaciones de POSIX me entero que todo software que representa el tiempo basándose en él colapsaría en el año 2038 sobre plataformas de 32 bits (mayoría de los actuales).

Esto se debe a que esta implementación se basa en contar el número de segundos transcurridos desde el 1 de enero de 1970 a las 00:00:00.

Les cito la explicacíon formal de Wikipedia para ser más exactos:

En la mayoría de sistemas de 32 bits, el tipo de dato time_t usado para guardar el contador de segundos es un entero de 32 bits con signo, es decir, que puede representar un rango de números entre -2.147.483.648 y 2.147.483.647 (-231 y 231-1; 1 bit para el signo, y 31 para el valor absoluto), por lo que el último segundo representable con este formato será a las 03:14:07 UTC del 19 de enero de 2038, cuando el contador llegue a 2147483647. Un segundo después, el contador se desbordará, y saltará al valor -2.147.483.648, que causará el fallo de programas que interpretarán el tiempo como que están en 1901 ó 1970 (dependiendo de la implementación), en vez de 2038. A su vez, esto causaría cálculo y procesamiento incorrecto.

Un dato alentador: de migrar completamente los sistemas (soft y hard) a arquitecturas de 64 bits se retrasaría la fecha del problema unos 290 mil millones de años, ya que se usa el doble de bits para guardar el tipo de dato time_t.

Esperemos que Homero se acuerde esta vez de parchear su maquina en la planta nuclear :lol:

TAGS: