[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [FW1] Dayligth saving time problem explanation [Fw: [BUGTRAQ] The April Fools 2001 bug in Windows]
so according to these articles, there is no fix, just wait it out until after the 8th? ----- Original Message ----- From: "Vitaly Osipov" <[email protected]> To: <[email protected]>; <[email protected]> Sent: Tuesday, April 03, 2001 6:50 AM Subject: [FW1] Dayligth saving time problem explanation [Fw: [BUGTRAQ] The April Fools 2001 bug in Windows] > > It looks like that you experience the problem discussed in the message below > (from BugTraq) > And it is going to last for a week. > > ----- Original Message ----- > From: "Richard M. Smith" <[email protected]> > To: <[email protected]> > Sent: Wednesday, March 28, 2001 3:14 PM > Subject: [BUGTRAQ] The April Fools 2001 bug in Windows > > > > Hi, > > > > Attached is a message I wrote 2 years ago about a time-related bug in > > Windows. It turns out the bug is going to hit on this Sunday. > > Applications built with certain versions of Visual C++ could > > start giving the wrong time of day starting on Sunday. The problem > > will last for a week. > > > > Microsoft released a patch for this problem in early 1999, > > and many computers have been updated with a fix. However, > > in some cases applications also need to be updated and it is > > very unclear how many of them are deployed with the > > bug. This bug will most likely be present in embedded computers > > that are dedicated to doing particular jobs. These systems > > typically don't get software updates as often as desktop > > computers. > > > > Some systems that might be affected by the bug include: > > > > - Airport arrival and departure time monitors > > - Building access control systems > > - Scheduling systems for transportation > > - Hotel wake-up systems > > > > I've attached a second message which details how the problem > > also affects programs that use the MFC library. > > > > Here is a Microsoft FAQ about the bug: > > > > http://msdn.microsoft.com/visualc/headlines/2001.asp > > > > My crystal ball is very fuzzy is if this bug is going > > to cause any problems or not. > > > > Richard M. Smith > > CTO, Privacy Foundation > > > > ======================================================================== > > > > From Thu Jan 7 08:35:45 1999 > > Date: Thu, 7 Jan 1999 10:18:33 +0100 > > From: Richard M. Smith > > To: [email protected] > > Subject: The Windows "April Fools 2001" bug > > > > January 7, 1999 > > > > I have discovered a serious bug in Windows which will cause > > many Windows applications to give the incorrect time starting > > on April 1, 2001. Although this new bug is not technically a Y2K > > bug, it is similar because programs will fail on a particular > > day in the next century. > > > > The bug causes Windows applications to give times which are off by one > hour > > even though the Windows clock shows the correct time. The bug will > continue > > for one week until April 8th of 2001, when applications will again show > the > > correct time. The bug occurs under Windows 95, 98, and NT. > > > > The problem is caused by the Visual C++ runtime library being > > confused and assuming that daylight saving time doesn't start until > > April the 8th. In fact, daylight saving time starts on April 1 in > > the year 2001. The confusion appears to be caused by the fact that > > April 1 falls on a Sunday in the year 2001. The same bug occurs > > in other years where April 1 also falls on a Sunday. The last time this > > happened was in 1990 and after 2001 it will occur again in 2007. If April > 1 > > falls on any other day of the week, the bug does not occur. > > > > I reported the bug to Microsoft on Jan. 5th and got confirmation of > > from them on the evening of Jan. 6th. At the present time, Microsoft told > > me that they don't know when a fix will be available for the bug. > > > > For some applications, users should be able to fix the > > problem by downloading a new version of the Visual C++ runtime > > library DLL, MSVCRT.DLL. Since the DLL now ships as part of Windows, > > I would assume the fixed DLL will be available of the Windows Update > > site. > > > > Unfortunately not all applications can be corrected with a new release of > > MSVCRT.DLL. Any applications which statically links with the Visual C++ > > runtime will have to be fixed by the application vendor. Users will > > have to download the new releases of these kinds of applications. > > > > In my testing, I believe that the bug was introduced in version 4.1 of > > Visual C++. It is present in versions 4.2, 5.0, and 6.0 according to > > my testing. > > > > At the present time, the bug has been confirmed only in North American > > time zones. Outside North America it is unknown if the same bug > > exists or not. If it does exists, it may occur on different days > > and different years. > > > > I have written a small program in C that tests for the problem. > > The source code for the test program is attached to the end of this > > message. > > > > This "April Fools 2001" bug is present in the localtime() function, but > > is probably also in other functions defined in the C language "time.h" > > header file. > > > > Here is the output from the test program under Windows 98: > > > > 0x3AC796D0 = Sunday, April 1, 2001 -- 16:00:00 Eastern Standard Time -- > > DOY=90 > > 0x3ACF2B70 = Saturday, April 7, 2001 -- 10:00:00 Eastern Standard > Time -- > > DOY=96 > > 0x3AD06EE0 = Sunday, April 8, 2001 -- 10:00:00 Eastern Daylight Time -- > > DOY=97 > > > > The hours and time zones are incorrect for April 1st and April 7th. The > > time > > on April 8th is correct. > > > > A bit of background. In the United State and Canada, daylight > > saving time (DST) always starts on the first Sunday in April and ends on > > the last Sunday in October. More information of the DST rules can > > be found in the article at http://www.energy.ca.gov/daylightsaving.html. > > > > I am interested for folks to test for this same bug in other > > operating systems and programming tools. If you do run any tests, > > I would appreciate in hearing the results via Email. I know that > > JavaScript has the bug in Netscape and Internet Explorer as well as > > Win32 version of Perl. Excel and Netscape Java Virtual Machine on > > the other hand seem immune to the bug. > > > > Thanks, > > Richard M. Smith > > > > -------------------------------------------------------------------------- > -- > > ---- > > > > // > > // APRIL1.C -- Simple test program for the "April's Fools 2001" bug > > // > > // by Richard M. Smith > > // copyright (C) 1999 > > // > > > > #include <stdio.h> > > #include <time.h> > > #include <string.h> > > > > #define SECS_PER_HOUR (60 * 60) > > #define SECS_PER_DAY (24 * SECS_PER_HOUR) > > #define SECS_PER_YEAR (365 * SECS_PER_DAY) > > > > #define START (3 * SECS_PER_DAY) > > #define INCR (23 * SECS_PER_HOUR) > > #define MAXTIMES ((0x80000000L - START) / INCR) > > > > void print_time(time_t mytime); > > > > char *month_tab[] = > > { > > "January", > > "February", > > "March", > > "April", > > "May", > > "June", > > "July", > > "August", > > "September", > > "October", > > "November", > > "December" > > }; > > > > char *dow_tab[] = > > { > > "Sunday", > > "Monday", > > "Tuesday", > > "Wednesday", > > "Thursday", > > "Friday", > > "Saturday" > > }; > > > > int main() > > > > { > > > > print_time(0x3AC796D0); // Sunday, April 1, 2001 > > print_time(0x3ACF2B70); // Saturday, April 7, 2001 > > print_time(0x3AD06EE0); // Sunday, April 8, 2001 > > return 0; > > > > } > > > > // > > // print_time -- print out a time_t value converted by localtime() > > // > > > > void print_time(time_t mytime) > > > > { > > > > char month[100]; > > char dow[100]; > > struct tm *tmp; > > > > tmp = localtime(&mytime); > > if(tmp == NULL) > > { > > printf("0x%08lX = Invalid time\n", mytime); > > return; > > } > > if(tmp->tm_mon >= 0 && tmp->tm_mon <= 11) > > strcpy(month, month_tab[tmp->tm_mon]); > > else > > sprintf(month, "BadMonth=%d", tmp->tm_mon); > > if(tmp->tm_wday >= 0 && tmp->tm_wday <= 6) > > strcpy(dow, dow_tab[tmp->tm_wday]); > > else > > sprintf(month, "BadDOW=%d", tmp->tm_wday); > > printf("0x%08lX = %s, %s %d, %d -- %d:%02d:%02d %s -- DOY=%d\n", > > mytime, dow, month, tmp->tm_mday, tmp->tm_year + 1900, > > tmp->tm_hour, tmp->tm_min, tmp->tm_sec, _tzname[tmp->tm_isdst > != > > 0], > > tmp->tm_yday); > > return; > > > > } > > > > ========================================================================= > > > > From: "Richard M. Smith" > > Subject: MFC and the April Fools 2001 bug > > Date: 18 Jan 1999 00:00:00 GMT > > Newsgroups: microsoft.public.vc.mfc,microsoft.public.vc.language > > > > Hello, > > > > A couple of weeks ago I reported a serious bug to Microsoft > > with the localtime() function of the C runtime library. This > > bug will cause many Windows applications to show the incorrect > > time of day starting on April 1, 2001. The bug will last for one > > week. The bug is due to the Visual C++ runtime library being confused > > about the start date for daylight saving time. Microsoft has > > confirmed the bug and is currently working on a fix. > > > > Today I did more research on the bug and found that bug is also > > present in the MFC library. In particular, the two MFC classes > > for dealing with times and dates, CTime and COleDateTime, both > > have the bug. The reason that both classes have the bug because > > they call the broken localtime() function as well as mktime() > > which I discovered today also has the bug. > > > > I located the April Fools 2001 bug in MFC by first searching > > the MFC source code for calls to localtime() and mktime(). I then > > confirmed these bugs by building a short C++ test program that uses > > CTime and ColeDateTime classes. This test program displayed the > > wrong times when I moved my Windows clock forward to April 1, 2001. > > > > Here are the member functions of MFC which have the "April Fools > > 2001" bug: > > > > CTime::CTime > > CTime::GetCurrentTime > > CTime::GetLocalTm > > CTime::GetHour > > CTime::GetDay > > CTime::GetDayOfWeek > > CTime::Format > > > > COleDateTime::COleDateTime (with a time_t argument only) > > COleDateTime::GetCurrentTime > > > > The following MFC classes also make use of CTime class so they will > > likely hit the "April Fools 2001" bug when dealing with times and dates: > > > > CTimeSpan > > CFileFind > > CFile > > CGopherFileFind > > COleStreamFile > > CDateTimeCtrl > > CMonthCalCtrl > > > > The C runtime functions with the bug are: > > > > ctime > > localtime > > mktime > > _strtime > > _strdate > > > > Microsoft has created a Web page for news about the April Fools 2001 bug. > > The URL of the page is: > > > > http://msdn.microsoft.com/visualc/headlines/2001.asp > > > > Richard M. Smith > > > > ============================================================================ ==== > To unsubscribe from this mailing list, please see the instructions at > http://www.checkpoint.com/services/mailing.html > ============================================================================ ==== > ================================================================================ To unsubscribe from this mailing list, please see the instructions at http://www.checkpoint.com/services/mailing.html ================================================================================
|