Ir ao conteúdo
  • Cadastre-se

A nova preocupação: o bug do ano 2038


     9.789 visualizações    Outros    5 comentários
A nova preocupação: o bug do ano 2038

Nos anos 1990, o mundo temia o emblemático Bug do Milênio (Y2K), que aconteceria na passagem do ano de 1999 para 2000. O problema afetaria programas mais antigos, escritos em linguagens como o COBOL, que traziam datas armazenadas com o número do ano representado apenas pelos seus dois dígitos finais. Diante disso, empresas e usuários, com receio de que os sistemas retornassem ao ano 1900, atualizaram software e hardware. Entretanto, na ocasião ocorreram apenas pequenas falhas, fáceis de serem corrigidas.

Agora, já existem muitas especulações sobre a próxima falha, chamada Bug do Milênio Unix, Y2K38, Y2.938K ou S2G, que pode fazer com que programas que usam o padrão POSIX/IEEE 1003, em que a data é calculada através do número de segundos ignorando os segundos bissextos desde o dia 1º de janeiro de 1970, utilizando variável de 32 bits (formato conhecido como timestamp), não consigam mais contar o tempo a partir de 2038.

Segundo informações, no dia 19 de janeiro de 2038, às 3 horas, 14 minutos e 5 segundos, no horário universal (UTC), os computadores que ainda estiverem usando variáveis de 32 bits não conseguirão lidar com a mudança de data, visto que terão atingido seu limite máximo de armazenamento de 2.147.483.647 segundos. Então, para continuar a contar os segundos, os valores começarão a ser armazenados em uma contagem negativa, a partir de -2.147.483.647 até zero.

Diante disso, não se sabe com exatidão como os sistemas se comportarão ao chegar no limite da contagem. Alguns podem continuar funcionando normalmente, porém com a data incorreta, e outros, que dependem da precisão de dados, parem de operar.

A solução mais viável para resolver o problema seria transformar o tipo de marcação de 32 bits para o sistema de 64 bits, uma vez que utiliza datas mais elásticas, adiando o erro para cerca de 292 bilhões de anos no futuro. Apesar disso, a mudança poderia prejudicar a compatibilidade binária de software. Muitos programas usados na operação de servidores Unix, Linux e suas variantes, como é o caso do MySQL, por exemplo, ainda usam variáveis de 32 bits para o armazenamento do valor do timestamp.

O Bug do Milênio custou mais de US$ 300 milhões para ser amenizado e estima-se que o Y2K38 custe muito mais.

  • Curtir 14
  • Obrigado 1
  • Amei 3

Comentários de usuários

Respostas recomendadas

  • Administrador
Em 09/05/2023 às 12:30, die4peace disse:

Amém que nos possuímos IAs muitos espertas pra resolver problemas como este

 

IA não resolve esse tipo de problema. É como dizer que IA vai resolver problema de motor de carro. Alguém tem que ir lá abrir o motor e consertá-lo.

  • Curtir 9
  • Amei 1
Link para o comentário
Compartilhar em outros sites

@Gabriel Torres sim, de certa forma está certo mas da mesma forma que alguém vai ter que ir lá consertar o carro, ele irá usar alguma ferramenta.. existe ferramentes que deixa essa ajuda quase automatizada. 
Para desparafuzar uma roda de carro, hoje usam aquelas maquina encaixou apertou rodou automatico e pronto... Em pensar que antigamente fazer aquilo demorava muito mais do que hoje em dia..
Da mesma forma que uma IA pode ser e creio eu que vai ser uma ferramenta muito bem usada na questão do noticia acima. 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Falando do Linux...

 

Lembrando que isso afeta apenas arquiteturas 32-bit em que time_t seja 32-bit (a maioria). O grosso da solução é substituir time_t 32-bit por 64-bit. Requer no mínimo uma recompilação dos programas -- e possivelmente mudanças no código.

 

No kernel, está encaminhado desde, mais ou menos, o 5.6 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=22b17db4ea05561c7c8e4d770f10751e22e339f9). Faz anos que Arnd Bergmann enfrenta o problema. Os principais sistemas de arquivos também suportam datas posteriores (Btrfs, XFS, EXT4, ...). No espaço de usuário, a glibc, biblioteca C mais popular, manterá as interfaces antigas para programas que não possam ser recompilados/adaptados: 

 

https://sourceware.org/glibc/wiki/Y2038ProofnessDesign

 

Podemos esperar que todos os componentes críticos sejam portados muito antes da fatídica data.

 

No entanto, mesmo em arquiteturas 64-bit, há alguns lugares em que time_t continua sendo 32-bit:

 

https://github.com/thkukuk/utmpx/blob/main/Y2038.md

 

O pessoal da glibc simplesmente não vai consertar essas interfaces, pois são consideras obsoletas. Então, Thorsten Kukuk da SUSE tem trabalhado em substitutos.

 

Não vai ser uma hecatombe, pois:

 

1) Arquiteturas 64-bit serão a esmagadora maioria em 2038 e os poucos pontos de fraqueza (como as interfaces citadas acima) terão sido resolvidos.
2) Arquiteturas 32-bit requererão mais trabalho. Os códigos importantes estarão preparados. Algum programa caduco que outro não será atualizado e vai ter problema em 2038.

  • Curtir 6
  • Haha 1
Link para o comentário
Compartilhar em outros sites



Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!