Pular para o conteúdo

Bug afeta todas as distros

Quer ver se o seu Linux tem o bug? Digite no terminal: "date -d 01/19/2038". Veja o resultado e depois digite: "date -d 01/20/2038". Quer concertar? Veja o artigo.
M4iir1c10 M4iir1c10
Hits: 20.517 Categoria: C/C++ Subcategoria: Avançado
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Explicação

Eu estava brincando com o terminal e a função date, acabei descobrindo por acidente esse bug... esse é o mesmo caso que ouvimos falar em 1999 que no ano 2000 tudo ia parar e coisa do tipo, fazendo a Microsoft e outras empresas lucrar um pouco mais com os patches para consertar esse bug.

Bom, os comandos que retornam datas se baseiam em códigos binários para fazer os cálculos dos segundos etc. Quando o calendário do sistema POSIX foi iniciado, a data de início foi estipulada como 14/12/1901 (e a SCO teima que o Linux e UNIX, sendo que o UNIX começa em 19/01/1970)... bom essa data para o computador não é 14/12/1901 00:00:00 e sim 00000000 00000000 00000000 00000000.

Nos concentrando nos 3 primeiros zeros vamos contar até 5 em binários:

1 =000
2 =001
3 =010
4 =011
5 =101


Ao chegar em 19/01/2038 03:14:07 em binário será 01111111 11111111 11111111 11111111, após isso o computador vai entender como 13/12/1901 20:45:52.

Veja um exemplo do que eu estou falando:



Bom, graças a Deus não somos como os pessoal da M$ que só avisa em cima da hora para você ser obrigado a comprar o patch dos programas que eles criam... esse bug foi descoberto com 32 anos de antecedência e já tem um patch para consertá-lo. Veja o código na próxima página.

Caso você queira ler o artigo no qual eu baseei a pesquisa:
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   1. Explicação
   2. A solução

Proteção de tela ou vídeo como papel de parede

SSH Blindado - Protegendo o seu sistema de ataques SSH

MEncoder - Criando Programa Gráfico Para Conversão

Como controlar todas as mídias da sua casa somente com 1 controle remoto e 1 Linux

Instalando Beryl no Windows XP

Programação de Jogos com SDL

openCertiface: Biométrica Facial em nuvem baseada em software livre

Compilando o Mono 2.2 no Ubuntu 8.10

Como funcionam os alocadores de memória do STD C?

Algum humor e C++ Design Patterns (parte 2)

#1 Comentário enviado por elgio em 04/03/2008 - 10:42h
Parabéns pela didática!
Excelente!

Me fez lembrar do bug que a primeira versão do NT tinha: eles usaram uma variável de 32 bits para contar o número de milisegundos que a máquina estava ligada. Em 49 dias esta variável entrava em overflow e o computador se resetava :-O

Mas não se preocupem, foi sem impacto. Ninguém conseguia ficar com um Windows tanto tempo ligado sem ter que reiniciá-lo por outros motivos :-D

hehehehe
#2 Comentário enviado por hellnux em 04/03/2008 - 10:47h
Opa,

Interessante o artigo. No BUG de 2000 nem conhecia Linux e nem windows direito.... e do NT nem sabia x]

Vi algo que pode estar errado, acho que seja assim:

0 = 000
1 = 001
2 = 010
3 = 011
4 = 100
5 = 101

[]´s
#3 Comentário enviado por hlegius em 04/03/2008 - 11:11h
Em 64bits parece que o erro não ocorre mais ...

[hlegius@Selene ~]$ date -d 01/19/2038
Ter Jan 19 00:00:00 BRST 2038
[hlegius@Selene ~]$ date -d 01/20/2038
Qua Jan 20 00:00:00 BRST 2038

Acho que a limitação está na plataforma 32bits...
#4 Comentário enviado por m4tri_x em 04/03/2008 - 11:15h
Valeuu...

[]´s
#5 Comentário enviado por M4iir1c10 em 04/03/2008 - 11:41h
Obrigado pela dica hlegius, eu esqueci de colocar esse detalhe no artigo o bug e em plataformas 32bits.

hellnux esse sitema binario e coisa de computador mesmo... olha so eu erei uma conta de 1 a 5, k-ra-k.... valeu pela correcao.
#6 Comentário enviado por removido em 04/03/2008 - 11:56h
gostei cara,
muito interessante !!!!!!!!!!!!!!!!!!
#7 Comentário enviado por Teixeira em 04/03/2008 - 13:19h
Valeu, muito bom o artigo.
O que eu iria comentar os colegas já comentaram.
( Tá passeando em Sydney? "Gudái, máite!..." Tem "snáiks" por aí?... hehehe!)
#8 Comentário enviado por removido em 04/03/2008 - 14:36h
só uma observação gramatical na introdução...

Seria Consertar, Concertar vêm de Concerto, de Orquestra, música e tal. =)
#9 Comentário enviado por removido em 04/03/2008 - 18:59h
Convenhamos, né cambada... A gente nem sabe se daqui a 32 anos a informática base-ar-se-á (gostaram ?????) em 111110000 e, então, sem exageros.....

Agora, que ficou um muuuuuuuust os códigos mudando constantemente na página, isso ficou..


Aaaaaaaaiiiiiiiiiiiiiii, gamei!!! ;-)
#10 Comentário enviado por M4iir1c10 em 05/03/2008 - 07:48h
Desculpe Rodrigo Campelini mais eu escrevi consertar ou concertar? Eu acho que foi com s e nao com c... qual eu devo usar ? Desculpem pelos erros ja tem um tempo que eu estou sem falar portugues, ai ja viu ne? o verbo to be em portugues "Eu estarei indo comprar chocolate"...rsrsrs

Contribuir com comentário

Entre na sua conta para comentar.