Was sind Beispiele für Software, die durch einen Zeitsprung ernsthaft beeinträchtigt werden könnte?

Was sind Beispiele für Software, die durch einen Zeitsprung ernsthaft beeinträchtigt werden könnte?

Die Chrony-Dokumentation warnt

ACHTUNG: Bestimmte Software wird durch solche Sprünge in der Systemzeit ernsthaft beeinträchtigt. (Das ist der Grund, warum chronyd normalerweise Slewing verwendet.)Dokumentation

Die Dokumentation enthält jedoch keine Beispiele. Welche Software ist beispielsweise ernsthaft betroffen? Sind das Betriebssystem oder irgendwelche Hintergrundprozesse gefährdet?

Antwort1

Dies ist eine etwas offene Frage, aber lassen Sie mich einige Beispiele geben:

  • Datenbanken - die meisten von ihnen benötigen viel Zeit für die Speicherung von Datensätzen, Indizes usw.
  • Sicherheit - genaue Zeitangaben sind für die Sicherheit sehr wichtig, um Aktionen zeitlich abzubilden. Lücken oder Zeitduplizierungen werden nicht akzeptiert.
  • digitale Signatur - normalerweise ist ein Zeitstempel Teil des signierten Dokuments, eine falsche Zeitangabe kann also die Signatur ungültig machen
  • Planungssoftware – Jobs können je nach Zeitsprungrichtung übersprungen oder zweimal wiederholt werden.
  • Clustersoftware – wahrscheinlich muss jeder Cluster synchronisiert werden und jeder Sprung eines oder mehrerer Knoten kann unvorhersehbare Ergebnisse haben.

Antwort2

Ich wurde kürzlich von einem Fehler betroffen, der aus dem Jahr 1999 stammt und sowohl die JVM als auch die Android Runtime betrifft:https://bugs.java.com/bugdatabase/view_bug.do?bug_id=4290274

... werden zwei zusätzliche Ausführungen (unerwartet) ausgelöst, wenn die Systemuhr nach der Planung der Aufgabe mit scheduleAtFixedRate() eine Minute vorgestellt wird.

Ich arbeite an einem Gerät, das mit der Epoche 1970 als aktueller Zeit beginnt und dann etwas später die richtige Netzwerkzeit empfängt. Gelegentlich wurde eine Drittanbieterbibliothek initialisiert, bevor die Zeit eingestellt wurde, was zu einem Zeitsprung von 50 Jahren führte.

Das Ergebnis war scheduleAtFixedRateder Versuch, etwa 50 Jahre an Anrufungen nachzuholen... das waren etwa 27Millionaufeinanderfolgende Aufrufe ohne Verzögerung zwischen ihnen.

Dies würde dazu führen, dass der GC durcheinander gerät und das System im Allgemeinen blockiert, bis es neu gestartet wird.

Antwort3

Alle Software, die mit echter Hardware interagiert. Wenn Sie einen Toaster haben, der Brot 20 Sekunden lang toastet, und seine Software dumm genug ist, dies mit der Wanduhr abzugleichen, erhalten Sie entweder weißes oder verbranntes Brot, wenn Sie die Uhr korrigieren, während Sie auf Ihren Toast warten.

Praktisch alle Anwendungen, die Industriegeräte jeglicher Art steuern, erfordern präzise Zeitabläufe, wie beispielsweise „Öffnen Sie ein Ventil 5,3 Sekunden lang, um die richtige Flüssigkeitsmenge zu erhalten“. Eine Abweichung von mehr als ein paar Millisekunden ruiniert Ihr Produkt.

Anwendungen, die etwas mithilfe von Motoren positionieren, verwenden entweder Schrittmotoren (die langsam sind) oder Endschalter, um zu bestimmen, wann angehalten werden soll. Aber oft haben Sie nicht an jeder wichtigen Position einen Schalter, sodass Sie eine Logik wie „xm/s für A Millisekunden, dann ym/s für B Millisekunden“ verwenden. Stellen Sie sich nun vor, Ihr NTP-Daemon passt die Zeit um nur eine einzige Millisekunde an, während diese Logik ausgeführt wird ...

Antwort4

TaubenschlagDer IMAP-Server ist betroffen und (in älteren Versionen) führt er (absichtlich) einen Selbstmord aus, wenn er feststellt, dass die Systemzeit zurückgesprungen ist. In v2.0 versucht er zumindest, die Situation zu beheben.

Sehenhttps://wiki.dovecot.org/TimeMovedBackwards

verwandte Informationen