It is a programming truism that dealing with time is hard; "Falsehoods
Programmers Believe About Time" comes back round every so often, and
I've certainly made my share of errors. But there was one Windows bug
that doesn't seem to have been widely discussed, and I observed in
person.
This was in the autumn of 1998, and I was working in network
operations for Demon, both day and night shifts; our machines were
mostly FreeBSD, but we had one NT4 box because some bit of software
that was used to poke the games servers would only run on Windows. We
hardly ever had to use it, but there it was ready to go in case.
If you already know this technical detail, or aren't interested, feel
free to skip: there's a fundamental difference in timekeeping between
MS-DOS and Unix. Unix machines were designed with the expectation of
networking, so the machine's internal clock runs on GMT, and times are
translated on the fly to be displayed in whatever timezone is
appropriate. The IBM PC was expected to be a stand-alone machine, and
DOS was very constrained for space, so it knows nothing about time
zones: you set the clock to your local time, and in early machines you
have to do that every time you turn it on because there isn't even a
battery-backed clock. So a Unix machine in the UK at the end of summer
time changes its time display formula from "GMT + 60 minute" to "GMT +
0", but a DOS machine has to set the clock back from 2am to 1am. And
NT4 at least followed the DOS tradition.
So it was 2am on Sunday, and the end of summer time. The NT4 box
popped up an alert, to the effect of "I've noticed we're in winter
time now, so I've set the clock back an hour. Aren't I clever!" We
left it there, because we were mildly amused at how pleased with
itself it was, and we didn't need to use the box anyway.
Come 3am, same thing. 4am, same thing.
When we changed shifts at 9am on Sunday, we told our counterparts and
encouraged them to see how long it would keep going. (There was in
theory some kind of synchronisation of clock time to a reference clock
elsewhere, but Windows in those days was very bad at it, because even
once they admitted it might be useful Microsoft refused to implement
NTP and insisted on inventing their own protocol.) By the time I came
back at 9pm on Sunday the alerts were filling the screen..
We let it go until about 9am on Monday, with dozens of alerts as its
clock eternally ran from 1am to 2am on Sunday and then reset; then one
of the bosses came in and said it looked "unprofessional", and the
daytime team had to reset the clock. by hand.
Perhaps MS had thought that a machine would always be turned off
during the time transition. (Well, very few people were daft enough to
run servers on Windows in those days, but surely there must have been
some?) Or there was some wonkiness in the interaction between the
operating system clock and the hardware clock.