Hace 16 años | Por --761-- a hackosis.com
Publicado hace 16 años por --761-- a hackosis.com

De acuerdo a http://www.y2k38.info, todos los sitemas Unix/Linux 32bit, en sus actuales estados, llegarán a su fín el 19 de Enero de 2038 (Y2K38). Esto es debído al hecho de que los sistemas *nix llevan un registro del tiempo en un entero de 4 bytes que corresponde al número de segundos después del 1 de Enero de 1970. El máximo valor de un entero de 4 bytes es 2,146,483,547 el cual es equivalente al 19 de Enero de 2038.

Comentarios

Kartoffel

Como que en el 2038 vamos a estar usando todavía sistemas 32-bit roll

D

#6 ¿quedan solo 30 años eh? lol

Tambien hay que migrar a IPv6, a HDTV... no se yo si dará tiempo a tanto cambio.

DZPM

#1 eso se decía en los años 60, y mira

De todas maneras no me acabo de creer lo que dice la web: o estoy muy equivocado, o las distros actuales almacenan la fecha en 64 bits desde hace bastantes años.

Los problemas se darán con máquinas antiguas o con chips empotrados (a los que es muy difícil actualizar el firmware).

Taikochu

#13 Aguafiestas

D

#3 cualquier programa corriente y moliente utiliza el tipo de datos "time_t", que en un sistema de 32 bits acaba siendo un int.

Peor aún, muchos programas no utilizan el time_t para almacenar la fecha y lo hacen con int directamente.

diegocg

Yo utilizo un sistema de 64 bits hoy, a mi me la suda...si quereis probar el efecto, poned la fecha momentaneamente a 31 de diciembre de 2037 a las 11:59. Aquí no he tenido ningún problema, excepto tener que hacer login de nuevo para entrar en meneame, y una expiración de certificado en firefox.

De todas maneras hay que destacar que este no es un problema de Linux, sino del hardware. Los procesadores de 32 bits no pueden incrementar de forma atómica un número mayor de 32 bits, todo lo que se haga para solucionar este problema por software será una chapuza.

D

También está el problema del año 2070... http://en.wikipedia.org/wiki/Year_2070_problem
Pero para esa fecha, no creo que esté yo por aquí

D

¿2038?
Bueno, me preocuparé en 2018... si para entonces todavía no hemos vuelto a la edad de piedra después de que se acabe el petróleo.

D

#13 Ditto...

Zakatua

#19 De aquí a 30 años Vista... será un gigantesco parche...

jotape

#10 en realidad pasaría algo más tarde, las 3:14:07 serán el último segundo computable con 32 bits

omefilo

no es por ser alarmista pero como fabriquen los t-800 usando ubuntu ya sabemos lo que va a pasar

i

#30 Non comment. Lo único relevante y decente en to la noticia. Un aplauso.

Nildur

#30 Realmente no es Y2K38 en lugar de 2038. Más bien es Y2K38 en lugar de "Year 2038", y si me apuras, "Year 2038 effect" lol

D

El problema del efecto 2038 es muy conocido , sino preguntarle a John Titor : http://es.wikipedia.org/wiki/John_Titor

D

#10 "De todas maneras hay que destacar que este no es un problema de Linux, sino del hardware. Los procesadores de 32 bits no pueden incrementar de forma atómica un número mayor de 32 bits, todo lo que se haga para solucionar este problema por software será una chapuza."

Mande? lol

D

#7 Al HDTV le queda bastante tiempo... con que pasemos a TDT me sentiré satisfecho. Y luego veremos que pasa con el ancho de banda del espectro radioeléctrico como para ver si se podrá pasar a HDTV.

D

#34 Aquí hablamos de un tema de hardware y el y2k era puro software (1999 > 19100 2000). Se basta por que como dice #2 el máximo valor en UNIXTIME es la fecha del fenomeno Y2K(38)... no se si me explico.

D

#40 http://en.wikipedia.org/wiki/Time_t

The time_t datatype is a data type in the ISO C library defined for storing system time values. Such values are returned from the standard time() library function. This type is a typedef defined in the standard header. ISO C defines _time_t_ as an arithmetic type, but does not specify any particular type, range, resolution, or encoding for it. Also unspecified are the meanings of arithmetic operations applied to time values.

Unix and POSIX-compliant systems implement the time_t type as a signed integer (typically 32 or 64 bits wide) which represents the number of seconds since the start of the Unix epoch: midnight UTC of January 1, 1970 (not counting leap seconds). Some systems support negative time values, while others do not. 32 bit _time_t_ is deprecated, due to the Year 2038 problem.

Como dice la Wikipedia, los sistemas POSIX suele implementar time_t como un entero con signo.

DiThi

No hará falta 64 bits para entoces: con quitarle el signo a ese entero de 32 bits ya tenemos el doble de tiempo, hasta 2106.

¡¡Rápido, tenemos que quitarle el signo a un int en todos los sitemas antes de que pasen 30 años!!

D

#20 ¿Vista? na, para entonces ya habrá salido Tacto... no será tan bonito, pero mucho más políticamente correcto, y sólo con el doble de bugs.

DiThi

#26 Mientras restes al numero mayor el numero menor, no hay ningún problema incluso aunque no tenga signo. Es más, cuando restas a un numero menor otro mayor, el resultado lo puedes tomar como con signo y seguirás teniendo un resultado válido. El problema vendría cuando restas 2 fechas separadas más de 68 años entre sí (y además restes a la fecha menor la mayor). Pero para entoces seguro que el software está preparado para ello, simplemente con comparar cuál es más reciente es suficiente. Todo esto suponiendo que el anticuado procesador de 32 bits se pasa el carry por el forro.

dale

Yo creo que de aquí a 30 años vista, algún parche sacarán, ¿no?

Lobo_Manolo

#40 mírate #2 ...

zitro

#10,#12 gogo #0 la fecha no es el 1 de enero, es el 19 de enero...

Pajblito

conocia pero no habia notado el detalle de q muchas cosas no estan corriendo con chips de 64bits. Interesante igualmente ver si dentro de 30 años AUN tenemos chiches a 32bits...

PD: me pregunto q pasara con las hojas viejas de excel en ese entonces?

D

Por cierto, espero que en el 2038 ya no usemos ninguno de los SOs "con fama" de hoy en día, o mal asunto ;/

D

Para ese tiempo ya habré comprado un cyborg para el asilo y usará debian venticatorce, así que no hay nada que deba preocuparme.

D

#44 El problema no es usar enteros con signo o sin signo, sino que los procesadores cuando realizan operaciones los interpretan con signo. Y sobre lo demás que comentas, los procesadores suelen utilizar complemento a dos.

D

Perdonad, no me había dado cuenta de lo del signo. De todas formas veo un poco absurdo utilizar un entero con signo para almacenar valores que siempre serán positivos, o también se podía haber empezado a contar el primer segundo desde el valor negativo mas bajo posible, incrementando hasta cero y continuando posteriormente con los valores positivos. Esto daría el doble menos uno de valores. O simplemente utilizar solo enteros y empezar desde el 0 hacia delante, que también daría el doble menos uno de valores posibles.

g

#40 ya lo ha comentado alguno en el hilo.

El tipo de datos time_t que es el que está en "crisis". Este tipo de datos es un typedef de otro tipo de datos entero, esto depende de la biblioteca que se use puede ser uno u otro, con signo y sin signo. Y además el tipo de datos puede tener un tamaño diferente e incluso alineación de bits distinto según la arquitectura.

En C se puede llegar a tener bastante control sobre estas cosas, alienaciones de bits, tamaños de tipos de datos, etc...

El caso es que la peor de las combinaciones sería una definición de time_t como int con signo representado por 4 bytes. Como cometas 4 bytes son 32 bits, pero en el caso de que sea un tipo de datos con signo (no unsigned int) el bit más significativo se emplea para almacenar el signo, de este modo los mayores valores de números en valor absoluto realmente estarían representando cantidades enteras negativas.

MArkFIA

si se solucionó el y2k en windows, como no se va a solucionar una similaritud en una comunidad de gente que mejora, investiga y corrige.

D

#23, esa solución no arregla del todo el problema, porque como la reprentación de los números negativos y de los mayores de 2^(n-1) es la misma, habría que revisar de todas formas todo el software y bios para asegurarse que no habrá problemas.

Además, por un efecto relacionado, si se hace eso las operaciones con fechas (restar dos valores por ejemplo para ver cuanto tiempo pasa de una a otra) puede dar resultados inesperados.

Saludos

g

Hombre yo creo que los SO de 64 bits para entonces ya estarán a la orden del dia, creo yo.

C

bueno, por lo menos tienen hasta ese año para enmendar el error, no a toda prisa como con el 2000

Jata

Si mi padre, al mes de usar Windows Vista me dijo que le migrara a Ubuntu, ... en el 2038 no vamos a estar rulando con 64 ? ...

D

Eso es lo que pasa cuando usas C sin tener que usarlo, que tu código es demasiado e innecesariamente dependiente de la arquitectura. De todas formas dentro de 30 años espero que ni se usen ya 32 bits ni se use ya C excepto como un asm portable.

D

#9 (...) HDTV le queda bastante tiempo... con que pasemos a TDT(...)

Creo que tienes un pequeño lío con esto del cambio a digital... pero bueno tampoco tengo ganas de aclarate nada ahora. Lee si te interesa el asunto. Me voy a dormir que ya es hora y creo que con los comentarios que llevo habré recaudado suficientes negativos para donarlos esta navidad.

D

4 bytes=32 bits
2^32=4294967296

Es 4.294.967.296 y no es 2.146.483.547 como pone en la noticia.

4294967296 segundos = 71582788,2666 minutos = 1193046,47111 horas = 49710,269629629 dias = 136,1925195 años

1970+136 = 2106

Según mis cálculos fallaría en 2016 y no 2038. O en algo me equivoco o hay algún dato mal en la noticia.

J

Que ganas de armagedones, cataclismos y ecatombes que tenemos.
Esto es un síndrome holliwodiense, sin duda.
Sería irónico que después de tanto lío los únicos ordenadores que sobreviviesen fuesen los basados en windows, o incluso en Atari, spectrums y de más.

Ya hemos tenido la dosis catastrofista del día en Meneame. Cual será la siguiente? Petroleo? Meteorito? Clima? Enfermedades? Acebes presidente? Se aceptan apuestas

(todas las opciones me dan repelús por igual)

birdy

Otro fake como el YK2000? venga ya.

omefilo

pero no me pongais negativos, que es una broma. Jo! ahora sufro. Como llame a mi primo Chuck os vais a enterar