Um bug estranho do macOS impede que qualquer máquina fique ligada por mais de 50 dias, caso contrário ela perde a conexão de rede. No entanto, uma equipe de desenvolvedores encontrou a origem e o culpado: o kernel do macOS.

Se há algo pelo qual o macOS pode ser comemorado é sua estabilidade. O kernel do sistema é baseado em Unix, o mesmo que Linux e muitos outros sistemas operacionais móveis. Além de fornecer segurança quase perfeita e um pequeno paraíso para os desenvolvedores, o macOS é, portanto, menos sensível às questões de desempenho e confiabilidade do que o núcleo antigo do Windows 11.

Dessa forma, é totalmente possível deixar o Mac ligado permanentemente sem risco de vazamentos de memória ou outros problemas de estabilidade que podem se acumular com o tempo. Pelo menos foi o que pensávamos até agora. Foi descoberta uma falha técnica, no mínimo surpreendente, paralisando a conectividade de rede de máquinas deixadas ligadas por muito tempo.

macOS: paralisia da rede após 49,7 dias

A equipe de serviço Photon, uma estrutura de agente de IA para aplicativos de mensagens, destacou uma disfunção que é no mínimo estranha. Foi durante o gerenciamento diário de serviços de monitoramento de servidores Mac como o iMessage que ela percebeu que diversas máquinas paravam de responder simultaneamente após um longo período de atividade.

Especificamente, os Macs em questão responderam a um comando “ pingar “, mas não conseguiu mais iniciar nenhuma conexão web ou SSH. Ainda mais surpreendente, todas as máquinas falharam na rede após exatamente 49,7 dias. Para garantir que não fossem casos isolados, a equipe criou milhares de conexões TCP antes e logo após o momento fatídico. Resultado, uma vez que as 16.000 portas do macOS “ consumido », a máquina não consegue mais abrir nenhuma conexão. A rede está, portanto, fora de serviço, embora o computador pareça estar funcionando.

A única maneira de resolver o problema é reiniciar o computador para acertar o relógio por mais 49,7 dias.

Um erro no kernel do macOS

A equipe, portanto, investigou o código-fonte do kernel do macOS (chamado XNU) e assim encontrou a origem precisa do bug. Origina-se da função que atualiza o relógio TCP, tcp_agora. Concretamente, o sistema calcula o tempo atual desde a inicialização em milissegundos, compara esse novo tempo com o antigo armazenado, mas causa um travamento quando esse tempo ultrapassa a capacidade de um número inteiro de 32 bits. A condição para o funcionamento adequado torna-se então se (4 bilhões <0), o que é obviamente falso.

O sistema se recusa a atualizar o relógio. O relógio TCP do macOS congela para sempre no valor máximo pouco antes do bug. Para evitar estragar o desvio do bug, ele não exibe nenhuma mensagem de erro, qualquer “ Pânico do Kernel “. A equipe Photon até descobriu depoimentos nos fóruns da Apple descrevendo com precisão esse mau funcionamento há vários anos, sem detectar sua origem.

Se não for muito prejudicial para os usuários do público em geral, esse bug é muito incapacitante para servidores de dados executados no macOS, que não conseguirão sobreviver mais de 50 dias sem uma reinicialização. A única solução definitiva está com a Apple, que terá que implantar uma atualização em seu kernel.


Fonte

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *