¿Cuáles son ejemplos de software que pueden verse seriamente afectados por un salto en el tiempo?

¿Cuáles son ejemplos de software que pueden verse seriamente afectados por un salto en el tiempo?

La documentación crónica advierte

TENGA EN CUENTA: Cierto software se verá seriamente afectado por tales saltos en la hora del sistema. (Esa es la razón por la que chronyd utiliza el giro normalmente).Documentación

Pero la documentación no da ejemplos. ¿Cuáles son ejemplos de software que se verán gravemente afectados? ¿Está en riesgo el sistema operativo o algún proceso en segundo plano?

Respuesta1

Esta es una pregunta un poco abierta, pero permítanme darles algunos ejemplos:

  • bases de datos: la mayoría de ellas dependen mucho del tiempo preciso para almacenar registros, índices, etc.
  • Seguridad: el tiempo preciso es muy importante para que la seguridad asigne la acción al tiempo y no se aceptan brechas o duplicaciones de tiempo.
  • firma digital: generalmente parte del documento firmado es la marca de tiempo, por lo que un momento incorrecto puede invalidar la firma
  • software de programación: puede omitir o repetir trabajos dos veces dependiendo de la dirección del salto de tiempo.
  • software de agrupación en clústeres: probablemente cualquier clúster deberá estar sincronizado y cualquier salto de uno o más nodos puede tener resultados impredecibles.

Respuesta2

Recientemente me picó un error que se remonta a 1999 y afecta tanto a JVM como a Android Runtime:https://bugs.java.com/bugdatabase/view_bug.do?bug_id=4290274

... se activan dos ejecuciones adicionales (inesperadamente) cuando el reloj del sistema se adelanta un minuto después de programar la tarea usando ScheduleAtFixedRate().

Trabajo en un dispositivo que comienza con la época de 1970 como hora actual y luego recibe la hora de red correcta un poco más tarde. Ocasionalmente, una biblioteca de terceros se inicializaba antes de que se estableciera el tiempo, lo que provocaba un salto de tiempo de 50 años.

El resultado fue scheduleAtFixedRateintentar ponerse al día con ~50 años de invocaciones... que fueron alrededor de 27millóninvocaciones consecutivas sin demora entre ellas.

Eso haría que el GC se volviera loco y, en general, atascara el sistema hasta que se reiniciara.

Respuesta3

Todo el software que interactúa con hardware real. Si tienes una tostadora que tuesta pan durante 20 segundos y su software es lo suficientemente estúpido como para compararlo con el reloj de la pared, obtendrás pan blanco o quemado si corriges el reloj mientras esperas tu tostada.

Prácticamente todas las aplicaciones que controlan cualquier tipo de dispositivo industrial necesitan tiempos precisos, como, por ejemplo, "abrir una válvula durante 5,3 segundos para obtener la cantidad correcta de fluido". Un error de más de unos pocos milisegundos arruina su producto.

Las aplicaciones que posicionan cualquier cosa mediante motores utilizarán motores paso a paso (que son lentos) o interruptores finales para determinar cuándo detenerse. Pero a menudo, no tienes un interruptor en cada posición importante, por lo que harás una lógica de "xm/s durante A milisegundos, luego ym/s durante B milisegundos". Ahora imagine que su demonio NTP ajusta el tiempo incluso en un milisegundo mientras se ejecuta esta lógica...

Respuesta4

PalomarEl servidor IMAP se ve afectado y (en versiones anteriores) se suicida (deliberadamente) si detecta que la hora del sistema ha retrocedido. En la versión 2.0, al menos intenta remediar la situación.

Verhttps://wiki.dovecot.org/TimeMovedBackwards

información relacionada