Allá por 1999, la amenaza de un colapso a nivel tecnológico por el temido “Efecto 2000” o “Error del milenio” provocó un temor generalizado en la sociedad ante el fallo que provocaría que tras el 31 de diciembre de 1999 los sistemas informáticos pasarían al 1 de enero de 1900 en vez de al 1 de enero de 2000 debido a que muchos sistemas codificaban el año en dos dígitos. Este “Efecto 2000” que se corrigió con unos miles de millones de euros, nos sirve para explicar el “Efecto 2038” o “Y2K38”.
El “Efecto 2038” no es sino otro “bug” relativo, en este caso, a la codificación del tiempo en los sistemas de 32 bits (el reloj que usan), que nos afectaría en enero del año 2038. Y es que el reloj que tienen muchos equipos se basa en POSIX, un simple contador de segundos que va ascendiendo con cada segundo que pasa y que tiene como fecha de referencia el 1 de enero de 1970; por tanto, el tiempo es igual al número de segundos transcurridos desde esta fecha de referencia.
Sin embargo, como en los sistemas de 32 bits los tiempos se codifican con un número entero y un signo, llegará un momento en que el contador llegará al número máximo que es capaz de almacenar en positivo y comenzará a contar en negativo (volveremos a 1901). Los sistemas que cuentan la hora desde (21:00 31/12/1969) provocarían el error de cálculo a las 00:14:07 del 19 de enero de 2038, ya que confundirán la fecha con el 13 de diciembre de 1901.
Por el momento se desconocen las consecuencias exactas que este problema informático provocará en algo más de 20 años, pero está claro que aún hay tiempo para solventarlo con eficacia y sin crear el pánico que se generó con el Y2K o Efecto 2000.
El “Efecto 2038” afectará principalmente al sistema operativo Unix, sobre el que se asientan tanto Android como iOS así como muchos servidores de Internet, puntos de acceso Wi-Fi o routers.
Casi todos los sistemas operativos que se utilizan hoy en día se remontan a UNIX. Cuando los ingenieros desarrollaron el primer sistema operativo para máquinas UNIX en la década de 1970, decidieron arbitrariamente que el tiempo se representaría como un entero de 32 bits con signo y se mediría como el número de segundos desde las 12:00:00 am del 1 de enero de 1970. Los sistemas de fecha y hora de bits solo pueden contar hasta 2,147,483,647, lo que se traduce en el 19 de enero de 2038 (3:14:08 am). En esta fecha, cualquier programa en C que utilice la biblioteca time_t estándar de 32 bits tendrá problemas para calcular la fecha.
La mayoría de las funciones de soporte que utilizan el tipo de datos time_t no pueden manejar valores time_t negativos. Fallan y devuelven un código de error, y esto hace que el programa de llamada se bloquee espectacularmente.