Domain/OSの日時

Domain/OSの日時

[1] InterWorks - Apollo Domain/OS 02 NOV 97 Problem, , https://web.archive.org/web/19980713042319/http://iworks.erls02.siemens.de/Tech/apollonov2/

The internal clock of DOMAIN/OS is defined as a thirty-two-bit number that continues to count the number of 1/4-second increments (approximately) since January 1, 1980 which is the beginning of the DOMAIN/OS.

On November 2, 1997, 14:59 GMT (the "Rollover"), the clock will increment such that the thirty-second bit will be set. In some computer operations, this is evaluated as a negative number. In particular, comparison operations of time stamps before the Rollover with time stamps after this rollover will never work properly. Once the system allocates various resources, it captures a time stamp associated with the resource allocation. At a later time, the system might compare the current time with the previous time stamp. Since one value would be negative and the other positive, the comparison will never succeed.

[2] Latest News on the Date Bug, , https://jim.rees.org/apollo-archive/date-bug

The bug apparently results from the high 32 bits of the clock data type being declared as a 31 bit value instead of 32 bit in the pascal include files. The reason for this is lost to history, but early pascal compilers may have had problems with 32 bit unsigned numbers, possibly because the early Motorola 68000 processor chips didn't have 32 bit unsigned multiply operations.

The bug will cause problems when the high bit (not the "penultimate bit," as the patch description says) becomes set at 14:59 GMT on November 2, 1997.

[3] Time formatting and storage bugs - Wikipedia, , https://en.wikipedia.org/wiki/Time_formatting_and_storage_bugs#Year_1997

The Domain/OS clock, which is based on the number of 4-microsecond units that has occurred since 1 January 1980, rolled past 47 bits on 2 November 1997, rendering unpatched systems unusable.

[4] >>3 の出典は >>2>>2 が参照しているのが >>1>>3 は4ms, 47ビットと書いてあるけど >>1>>214s, 31ビットと書いてある。

[5] >>1 によるとから14s 31ビットでになるはずだけど、実際計算してみると1月になってしまう。 なにか単純計算と違うことをしているのだろうか。

[6] >>1 は approximately と書いてあるけど、これのかかっている位置が?