[FUG-BR] OFF-TOPIC- Bug do ano 2038 - faltam 30 anos (Unix)

Luiz Otavio O Souza luiz em visualconnect.com.br
Segunda Janeiro 21 09:35:14 BRST 2008


----- Original Message ----- 
From: "Joao Rocha Braga Filho" <goffredo em gmail.com>


2008/1/18 Josias LG <josiaslg em uol.com.br>:
> http://uoltecnologia.blog.uol.com.br/arch2008-01-13_2008-01-19.html#2008_01-17_20_57_59-126529944-29
>
> O titulo do post já dá pistas: vem mais encrenca por aí. Mal saímos do
> bug do milênio e já estão preocupados com outro.
>
> Na mesma linha do bug anterior, este também tem a ver com tempo e datas.
> O problema afeta programas que utilizam a representação de tempo Posix
> (Interface portátil entre sistemas operacionais), baseada em Unix -
> sistema operacional que controla a maioria dos servidores.
>
> Nessa representação, o tempo é cálculado desde 1o de janeiro de 1970 e
> usa um número binário (representado por zeros e uns) de 32 bits. A
> última data que pode ser representada nesse formato é 03:14:07 de 19 de
> janeiro de 2038 (32 números 1 seguidos).
>
> Após esse momento, a data será representada por um número decimal
> negativo (foto). Isso fará o calendário voltar para 1970 ou 1901,
> afetando a maioria dos programas executados pelo sistema. Bug a vista!
>
> PS - E dessa vez não vai ser tão simples resolver. Mudar a base de dados
> para 64 bits. A mudança quebraria a compatibilidade binária de alguns
> softwares. O Zip - compactador - foi construído para 32 bits. Muitos
> sistemas embarcados feitos até 2006 usam arquitetura de 32 bits. Tomara
> que consigam fazer a migração dos sistemas até 2038. No aguardo e 
> torcendo!
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd

Bug velho. Eu sei deste bug deste a década de 90. Mas existe um
Workaround, tornar o tipo time_t unsigned. O bug passa a ser em
2107. Já fiz as contas a uns 15 anos atrás.
--------------

João,

É isso mesmo... se cada ano tem 31.536.000 segundos (60 X 60 X 24 X 365 - 
Segundos por minuto X Minutos por hora X Horas por dia X Dias por ano), 32 
bits poderiam representar 136 anos (que a partir de 1970 nos levariam até 
2106), mas parece que só utilizam 31bits (signed int) o que pode representar 
apenas 68 anos que vai nos levar até o ano de 2038.

32^2 = 4.294.967.295
31^2 = 2.147.483.647

luiz



Mais detalhes sobre a lista de discussão freebsd