----- Original Message -----
From: "Joao Rocha Braga Filho" <goffredo@xxxxxxxxx>
2008/1/18 Josias LG <josiaslg@xxxxxxxxxx>:
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
-------------------------
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd