Vinte anos mais tarde, o bug Y2K está voltando

Em 03:14:08 Hora Média de Greenwich (GMT, também conhecida como Tempo Universal Coordenado) 19 de Janeiro de 2038 (que é uma terça-feira), o mundo acaba. Bem, não no sentido do Livro Bíblico do Apocalipse. Mas, o que vai acontecer é o valor do tempo em sistemas operacionais baseados em Unix de 32 bits, como o Linux e versões antigas do MacOS, ficar sem números e começar a contar o tempo com números negativos. Isso não é bom. Podemos esperar que computadores de 32 bits rodando estes sistemas operacionais tenham ajustes. Felizmente, os desenvolvedores do Linux já tinham uma correção pronta para ser feita.

O problema começa com a forma como o Unix diz o tempo. Unix, e suas relações — Linux, macOS, e outros sistemas operacionais compatíveis com POSIX — datam o início da hora da Epoca: 00:00:00 GMT em 1 de janeiro de 1970. A família Unix mede o tempo pelo número de segundos desde a Epoc.

Até agora, tudo bem. Mas, desde que Unix e família começaram como sistemas operacionais 32-bit, o valor do tempo é mantido como um único número inteiro de 32-bit assinado. Esses são muitos segundos, mas assim como o bug Y2K do século passado, não é suficiente.

Os programadores do Linux viram isto a chegar há décadas. Então, o desenvolvedor do kernel Linux Arnd Bergmann e outros têm trabalhado em um conserto. Estas correções estão agora no próximo kernel Linux 5.6. Bergmann explicou, “Linux-5.6, ou meu backport dos patches para 5.4, deve ser o primeiro lançamento que pode servir como base para um sistema de 32 bits projetado para rodar além do ano 2038”

Existem alguns cuidados:

  • Todo o espaço do usuário deve ser compilado com um tempo_t de 64 bits, que será suportado no próximo musl-1.2 e glibc-2.32, juntamente com os cabeçalhos instalados do kernel do Linux-5.6 ou superior.
  • Aplicações que utilizam as interfaces de chamada de sistema precisam ser portadas diretamente para utilizar as chamadas de sistema time64 adicionadas no Linux-5.1 no lugar das chamadas de sistema existentes.
  • Aplicações que usam uma cópia privada dos arquivos de cabeçalho do kernel uapi ou seu conteúdo podem precisar atualizar para a versão do Linux-5.6.
  • As poucas interfaces restantes não podem ser alteradas para passar um time_t de 64 bits de uma maneira compatível, então elas devem ser configuradas para usar CLOCK_MONOTONIC times.
  • Todos os problemas Epoch presentes em máquinas de 64 bits também se aplicam a máquinas de 32 bits. Em particular, isto afecta os sistemas de ficheiros com timestamps no disco usando 32-bit segundos assinados: ext4 com pequenos inodes estilo ext3, ext2, xfs (a ser corrigido em breve) e ufs.

Em suma, há muito trabalho de limpeza a ser feito mesmo depois do problema principal ter sido corrigido.

MacOS tem estado a afastar-se dos softwares de 32 bits há mais de uma década. Mas, tt foi apenas no final do lançamento do MacOS Catalina em 2019, que a Apple deu o boot aos aplicativos 32-bit.

Agora, você pode estar se perguntando — já que todos nós estamos rodando computadores de 64 bits hoje em dia — por que isso é um problema. Bem, é assim. Primeiro, muitos sistemas embarcados e dispositivos de Internet das Coisas (IoT) ainda estão rodando sistemas operacionais de 32 bits. De fato, até 2038, provavelmente ainda haverá novos dispositivos 32-bit chegando ao mercado.

Também sabemos, graças ao bug Y2K que volta a aparecer em 2020, que os sistemas que você pode assumir serão despejados em aterros em 18 anos ainda estarão vivos e bem — e o mau comportamento virá na Epoch.

Mas veja desta forma: Depois de corrigirmos isto, não teremos de nos preocupar com o Linux de 64 bits a ficar sem segundos até às 15:30:08 GMT de domingo, 4 de Dezembro, 29.227.702.659. Pessoalmente, eu não vou me preocupar com isso.

Estórias Relacionadas:

  • O bug Y2K está de volta, causando dores de cabeça para desenvolvedores novamente
  • O governo da Coréia do Sul explora a mudança do Windows para o desktop Linux
  • Nasty Linux, o bug do MacOS sudo encontrado e corrigido

admin

Deixe uma resposta

O seu endereço de email não será publicado.

lg