<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite>InterWorks - Apollo Domain/OS 02 NOV 97 Problem</cite>, <time>2023-01-01T09:48:57.000Z</time>, <time>1998-07-13T05:14:59.521Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://web.archive.org/web/19980713042319/http://iworks.erls02.siemens.de/Tech/apollonov2/">https://web.archive.org/web/19980713042319/http://iworks.erls02.siemens.de/Tech/apollonov2/</anchor-external></p><blockquote><p>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.</p><p>On November 2, 1997, 14:59 GMT (the &quot;Rollover&quot;), 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. </p></blockquote><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <cite>Latest News on the Date Bug</cite>, <time>1997-09-11T15:44:52.000Z</time>, <time>2023-01-01T09:49:43.373Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://jim.rees.org/apollo-archive/date-bug">https://jim.rees.org/apollo-archive/date-bug</anchor-external></p><blockquote><p>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.</p><p>The bug will cause problems when the high bit (not the &quot;penultimate bit,&quot; as
the patch description says) becomes set at 14:59 GMT on November 2, 1997.</p></blockquote><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <cite xml:lang="en">Time formatting and storage bugs - Wikipedia</cite>, <time>2022-12-28T01:04:23.000Z</time>, <time>2023-01-01T09:51:34.341Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://en.wikipedia.org/wiki/Time_formatting_and_storage_bugs#Year_1997">https://en.wikipedia.org/wiki/Time_formatting_and_storage_bugs#Year_1997</anchor-external></p><blockquote><p>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.</p></blockquote><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> 
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;3</anchor-internal> の出典は <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal> で <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal> が参照しているのが <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal>。 <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;3</anchor-internal> は4ms, 47ビットと書いてあるけど
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal> と <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal> は<mfrac xmlns="http://www.w3.org/1998/Math/MathML"><mtext>1</mtext><mtext>4</mtext></mfrac>s, 31ビットと書いてある。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> 
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal> によると<time>1980-01-01</time>から<mfrac xmlns="http://www.w3.org/1998/Math/MathML"><mtext>1</mtext><mtext>4</mtext></mfrac>s 31ビットで<time>1997-11-02</time>になるはずだけど、実際計算してみると1月になってしまう。
なにか単純計算と違うことをしているのだろうか。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal> は approximately と書いてあるけど、これのかかっている位置が<time>1980-01-01</time>?</p></body></html>