logo linux

El efecto 2038

Ya se ha hablado de este problema pero esta semana Jonathan Corbet, editor de LWM.net, ha sacado el tema de nuevo en su informe anual sobre el kernel en la conferencia de la Linux Foundation Collaboration en Santa Rosa, California.

Todos hemos oído hablar del conocido efecto 2000. De hecho, se hicieron incluso películas sobre es problema que al final no supuso grandes inconvenientes, en parte porque se tomaron medidas y en parte porque se magnificó hasta niveles absurdos.

Los sistemas Unix-like tienen un problema similar, pero esta vez con el año 2038. En concreto, el efecto 2038 afectará los sistemas a las 03:14:07 del 19 de enero de 2038. Poder determinar una hora, un minuto y segundo específico puede chirriar, pero precisamente son los segundos los que generan el problema. La forma en que los sistemas Unix-like como Linux, cuentan el tiempo, es mediante el conteo de segundos desde la medianoche del 1 de enero de 1970. Para contar los segundos se emplea una variable (time_t) de 32 bits con signo. Eso quiere decir que cuando hayan pasado 2³¹ segundos desde el 1 de enero de 1970, el contador se desbordará y volveremos al inicio. Y eso sucederá exactamente a las 03:14:07 del 19 de enero de 2038.

A pesar de que todavía quedan 23 años para que esto ocurra, según Corbet, deberíamos empezar a preocuparnos de este desbordamiento a partir de ya. Según dice «la cuestión es que los sistemas que se están haciendo y se están poniendo en funcionamiento hoy, todavía estarán en servicio dentro de 23 años. Los sistemas basados en Linux se están instalando en coches, sistemas de control de edificios, centrales eléctricas y en quién sabe qué otros lugares donde sencillamente se instalarán y harán su trabajo hasta que time_t se quede sin bits. Y después de eso, dejarán de funcionar. Una vez instalados y olvidados, será muy difícil localizar esos sistemas antes de que salte el error del año 2038«.

El problema es que arreglar este fallo es sumamente complicado ya que un cambio en el tipo de dato de time_t rompería la retrocompatibilidad con una gran cantidad de programas e incluso con sistemas de archivos.

Jonathan Corbet continúa «por ejemplo, el sistema de archivos ext3 dejará de funcionar. No sé si se arreglará algún día o si esperamos que para entonces nadie use ext3. Afortunadamente ni siquiera hoy se está usando demasiado. Ha habido conversaciones con los desarrolladores de la biblioteca de C, así que las cosas se están pensando. Pero no creo que haya un plan serio para reensamblarlo todo«.

En cualquier caso, a los usuarios de a pié este problema no nos afectará. Pero sí es posible que de aquí a 23 años ciertos sistemas empiecen a fallar y ni siquiera se tenga certeza entonces de qué está ocurriendo.

Vía The Registrer.