Quais são os exemplos de software que podem ser seriamente afetados por um salto no tempo?

Quais são os exemplos de software que podem ser seriamente afetados por um salto no tempo?

A documentação do chrony avisa

ESTEJA ATENTO: Certos softwares serão seriamente afetados por tais saltos na hora do sistema. (Essa é a razão pela qual o chronyd usa o giro normalmente.)Documentação

Mas a documentação não dá exemplos. Quais são os exemplos de software que serão seriamente afetados? O sistema operacional ou algum processo em segundo plano está em risco?

Responder1

Esta é uma questão um pouco aberta, mas deixe-me dar alguns exemplos:

  • bancos de dados - a maioria deles depende de muito tempo preciso para armazenar registros, índices, etc.
  • segurança - o tempo preciso é muito importante para a segurança mapear a ação no tempo e lacunas ou duplicação de tempo não são aceitas
  • assinatura digital - geralmente parte do documento assinado é o carimbo de data e hora, então a hora errada pode invalidar a assinatura
  • software de agendamento - pode pular ou repetir trabalhos duas vezes, dependendo da direção do salto no tempo.
  • software de clustering - provavelmente qualquer cluster precisará estar sincronizado e qualquer salto de um ou mais nós pode ter resultados imprevisíveis.

Responder2

Recentemente fui atacado por um bug que remonta a 1999 e afeta tanto a JVM quanto o Android Runtime:https://bugs.java.com/bugdatabase/view_bug.do?bug_id=4290274

... duas execuções extras são disparadas (inesperadamente) quando o relógio do sistema é adiantado um minuto após a tarefa ser agendada usando agendaAtFixedRate().

Eu trabalho em um dispositivo que começa com a época de 1970 como horário atual e recebe o horário correto da rede um pouco mais tarde. Ocasionalmente, uma biblioteca de terceiros era inicializada antes do tempo ser definido, causando um salto no tempo de 50 anos.

O resultado foi scheduleAtFixedRateuma tentativa de recuperar cerca de 50 anos de invocações... o que foi cerca de 27milhãoinvocações consecutivas sem atraso entre elas.

Isso faria com que o GC ficasse descontrolado e geralmente paralisasse o sistema até que fosse reiniciado

Responder3

Todo software que interage com hardware real. Se você tiver uma torradeira que torra pão por 20 segundos e seu software for estúpido o suficiente para verificar o relógio de parede, você obterá pão branco ou queimado se acertar o relógio enquanto espera pela torrada.

Praticamente todas as aplicações que controlam qualquer tipo de dispositivo industrial necessitam de temporizações precisas, como, por exemplo, “abrir uma válvula por 5,3 segundos para obter a quantidade correta de fluido”. Estar desligado por mais de alguns milissegundos estraga seu produto.

As aplicações que posicionam qualquer coisa usando motores usarão motores de passo (que são lentos) ou interruptores finais para determinar quando parar. Mas muitas vezes, você não tem uma chave em todas as posições importantes, então você fará alguma lógica "xm/s para A milissegundos, depois ym/s para B milissegundos". Agora imagine que seu daemon NTP ajusta o tempo em um único milissegundo enquanto essa lógica está em execução ...

Responder4

PombalO servidor IMAP é afetado e (em versões mais antigas) ele (deliberadamente) suicida-se se detectar que a hora do sistema retrocedeu. Na v2.0, pelo menos tenta remediar a situação.

Verhttps://wiki.dovecot.org/TimeMovedBackwards

informação relacionada