시간 점프로 인해 심각한 영향을 받을 수 있는 소프트웨어의 예는 무엇입니까?

시간 점프로 인해 심각한 영향을 받을 수 있는 소프트웨어의 예는 무엇입니까?

chrony 문서는 경고합니다

경고: 특정 소프트웨어는 시스템 시간의 이러한 점프로 인해 심각한 영향을 받습니다. (이것이 chronyd가 일반적으로 slewing을 사용하는 이유이다.)선적 서류 비치

그러나 문서에는 예제가 나와 있지 않습니다. 심각한 영향을 받을 소프트웨어의 예는 무엇입니까? OS 또는 백그라운드 프로세스가 위험합니까?

답변1

이것은 약간 개방적인 질문이지만 몇 가지 예를 들어 보겠습니다.

  • 데이터베이스 - 대부분 레코드, 색인 등을 저장하는 데 정확한 시간이 많이 필요합니다.
  • 보안 - 보안이 작업을 시간과 공백에 매핑하는 데 있어 정확한 시간이 매우 중요합니다. 또는 시간 중복은 허용되지 않습니다.
  • 디지털 서명 - 일반적으로 서명된 문서의 일부는 타임스탬프이므로 시간이 잘못되면 서명이 무효화될 수 있습니다.
  • 예약 소프트웨어 - 시간 점프 방향에 따라 작업을 두 번 건너뛰거나 반복할 수 있습니다.
  • 클러스터링 소프트웨어 - 아마도 모든 클러스터는 동기화되어야 하며 하나 이상의 노드가 점프하면 예측할 수 없는 결과가 발생할 수 있습니다.

답변2

나는 최근에 1999년으로 거슬러 올라가 JVM과 Android 런타임 모두에 영향을 미치는 버그를 발견했습니다.https://bugs.java.com/bugdatabase/view_bug.do?bug_id=4290274

... ScheduleAtFixedRate()를 사용하여 작업이 예약된 후 시스템 시계가 1분 앞으로 설정되면 두 번의 추가 실행이 (예기치 않게) 시작됩니다.

저는 1970년을 현재 시간으로 시작하고 조금 후에 정확한 네트워크 시간을 수신하는 장치에서 작업합니다. 때때로 시간이 설정되기 전에 타사 라이브러리가 초기화되어 50년의 시간 점프가 발생하는 경우가 있었습니다.

결과는scheduleAtFixedRate 약 50년 동안의 호출을 따라잡으려고 시도했습니다. 이는 약 27년이었습니다.백만사이에 지연 없이 연속 호출이 가능합니다.

이로 인해 GC가 혼란에 빠지고 일반적으로 다시 시작될 때까지 시스템이 정체됩니다.

답변3

실제 하드웨어와 상호 작용하는 모든 소프트웨어입니다. 20초 동안 빵을 굽는 토스터가 있는데 그 소프트웨어가 벽시계와 대조할 정도로 멍청하다면, 토스트를 기다리는 동안 시계를 수정하면 빵이 하얗게 되거나 탄 빵이 나올 것입니다.

실제로 모든 종류의 산업용 장치를 제어하는 ​​모든 애플리케이션에는 정확한 타이밍이 필요합니다. 예를 들어 "정확한 양의 유체를 얻으려면 5.3초 동안 밸브를 엽니다". 몇 밀리초 이상 차이가 나면 제품이 망가집니다.

모터를 사용하여 위치를 지정하는 애플리케이션은 스텝 모터(느린)를 사용하거나 종료 스위치를 사용하여 정지 시점을 결정합니다. 그러나 중요한 모든 위치에 스위치가 없는 경우가 많으므로 "A 밀리초 동안 xm/s를 수행한 다음 B 밀리초 동안 ym/s" 논리를 수행하게 됩니다. 이제 이 논리가 실행되는 동안 NTP 데몬이 1밀리초라도 시간을 조정한다고 상상해 보세요.

답변4

비둘기장IMAP 서버는 영향을 받으며 (이전 버전에서는) 시스템 시간이 뒤로 이동한 것을 감지하면 (고의적으로) 자살합니다. v2.0에서는 최소한 상황을 해결하려고 시도합니다.

보다https://wiki.dovecot.org/TimeMovedBackwards

관련 정보