Professional Documents
Culture Documents
Y 2 K 38
Y 2 K 38
1. INTRODUCTION
January 19, 2038 will be a serious problem for many platforms, because these
systems will "run out of time". Starting at GMT 03:14:07,Tuesday, January 19, 2038,it is fully
expect to see lots of things breaking magnificently: satellites falling out of orbit, massive power
outages, hospital life support system failures, phone system interruptions, bank problems, etc. Thats
because one second later, many of these systems will have wildly inaccurate date settings, producing
all kinds of unpredictable consequences. In short, many of the dire predictions for the year 2000 are
much more likely to actually occur in the year 2038. Most programs written in the C programming
language are relatively immune to the Y2K problem, but suffer instead from the Year 2038 problem.
This problem arises because most C programs use a library of routines called the standard time
library (time.h). This library establishes a standard 4-byte format for the storage of time values, and
also provides a number of functions for converting, displaying and calculating time values. A signed
4-byte integer has a maximum value of 2,147,483,647, and this is where the Year 2038 problem
comes from. The maximum value of time before it rolls over to a negative (and invalid) value is
2,147,483,647, which translates into 19-January-2038 at 3:14:08 AM GMT On this date, any C
programs that use the standard time library will start to have problems with date calculations.
Because of its high compactness it is the mainly used embedded software. So y2k38 not only affects
the computers, but also many embedded systems. The year 2000 was just a dry run. In case you
think we can sit on this issue for another 30 years before addressing it, consider that the temporal
echoes of the 2038 problem are already starting to appear in date calculations for mortgages and
vital statistics. One second later, on 19-January-2038 at 3:14:08 AM GMT, disaster strikes. The year
2038 problem (also known as Unix Millennium Bug, Y2K38 orY2.038K by analogy to the Y2K
problem) may cause some computer software to fail before or in the year 2038.The problem affects
all software and systems that both store system time as a signed 32-bit integer, and interpret this
number as the number of seconds since 00:00:00 UTC on Thursday, 1 January 1970. The furthest
time that can be represented this way is 03:14:07 UTC on Tuesday, 19 January2038. Times beyond
this moment will "wrap around" and be stored internally as a negative number, which these systems
will interpret as a date in 1901 rather than2038.This will likely cause problems for users of these
systems due to erroneous calculations Further, while most programs will only be affected in or very
close to 2038, programs that work with future dates will begin to run into problems much sooner.
Department of Computer Science and Engineering, September 2011
2. EARLY PROBLEMS
In May 2006, reports surfaced of an early manifestation of the Y2038 problem in the
AOL server software. The software was designed with a kludge to handle a database request that
should "never" time out. Rather than specifically handling this special case, the initial design simply
specified an arbitrary time-out date in the future. The default configuration for the server specified
that the request should time out after one billion seconds. One billion seconds (approximately thirtytwo years) after 9:27.28 pm on 12 May 2006 is beyond the 2038 cutoff date. Thus, after this time,
the time-out calculation overflowed and returned a date that was actually in the past, causing the
software to crash. When the problem was discovered, AOL's server managers had to edit the
configuration file and set the time out to a lower value
2.1 Y2K-PROBLEM
The Year 2000 problem (also known as the Y2K problem, the millennium bug, the
Y2K bug, or simply Y2K) was a problem for Both digital(computer related) and non-digital
documentation and data storage situations which resulted from the practice of abbreviating a fourdigit year to two digits. In computer programs, the practice of representing the year with two digits
becomes problematic with logical error(s) arising upon "rollover" from x99 to x00. This has caused
some date-related processing to operate incorrectly for dates and times on and after January 1, 2000
and on other critical dates which were billed "event horizons". Without corrective action, it was
suggested that long working systems would break down when the "...97, 98, 99, 00..." ascending
numbering assumption suddenly became invalid. Companies and organizations worldwide checked,
fixed, and upgraded their computer systems. While no globally significant computer failures
occurred when the clocks rolled over into 2000, preparation for the Y2K problem had a significant
effect on the computer industry. There were plenty of Y2K problems, and that none of the glitches
caused major incidents is seen as vindication of the Y2K preparation. However, some questioned
whether the absence of computer failures was the result of the preparation undertaken or whether the
significance of the problem had been overstated. Many banks have responded to the Y2K problem
by forcing full 4-digit year entries on check forms, which helps to prevent the error from occurring
in accounting environments.
60
3 600
86 400
172 800
2 678 400
5 097 600
31 536 000
63 072 000
By the year 2038, the time_t representations for the current time will be over
2140000000. And that's the problem. A modern 32-bit computer stores a
signed integer" data type, such as time_t, in 32 bits. The first of these bits is
used for the positive/negative sign of the integer, while the remaining 31 bits
are used to store the number itself. The highest number these 31 data bits can
store works out to exactly 2 147 483 647. A time_t value of this exact number,
Department of Computer Science and Engineering, September 2011
# Set the Time Zone to GMT (Greenwich Mean Time) for date calculations.
for ($clock = 2147483641; $clock < 2147483651; $clock++)
print ctime($clock);
10
11
these
guidance, and machine control etc. With the advent of the space age, the utilization of real time
computers for aiding navigation in outer space has become essential, since a human pilot could not
possibly solve the complex problems of guidance and control in time to make the appropriate
trajectory corrections. Speeded-up hybrid techniques can be applied directly to the problems of realtime computation and control. The ever-increasing demand for faster aircraft and missiles has placed
such string requirements upon the computers and techniques in use today.
12
13
COBOL databases from the 1970s, 1980s and 1990s that have not been replaced by 2038
compliant SQL systems
14
Each one of these places where data structures using 32 bit time are in place have their own risks
related to failure of the product to perform as designed.
15
8 EXPERIMENTS
8.1 Experiment 1
Lets see some simple experiments that I did on my computer which runs in 32 bit Windows 7.
Step 1:
First I need a net based application to do the experiment. I took my Google talk (can also take yahoo
messenger also) and sign out from it.
Step 2:
Now I need to change my system time to a time above 2038. So I changed my system time to 31
July 2045 as shown in figure below.
Fig 1: Step 1
Fig 2: Step 2
Step 3:
Now I tried to login back to my Google talk. And
observed what I got.
There I got an error message as shown in fig 4
below. It says that Google talk encountered an
internal error and need to close it. But this leads to
another doubt. Now the system time of my PC and
Google Server will be different. Is this caused the
error? So I continued my experiment.
Step 4:
Now I changed my time to year between current
time and 2038. I changed my system time to 31
July 2031 and tried to sign in again. There I got a different error message
Connecting to google talk network has failed due to an expired authentication certificate. The
common cause of this expired certificate is due to time differences between your computer and the
Google talk network. Please verify your computer's clock settings are correct and then retry
It clearly says that its due to time difference between my pc and Google Talk server. And the
previous error report differs from this. So it shows that the Y2K38 bug will hit Google Network.
Department of Computer Science and Engineering, September 2011
16
Fig 3: Step 3
17
8.2 Experiment 2
Now in this experiment I changed the platform. I took a laptop with a 64 bit Windows
7 and done the same steps 1 to 4 as I done on 32 bit computer. Interestingly I got the same result as
in the previous experiment and it is show below from fig 6 to 10.
These experiments show that even if the systems changed from 32 to 64 bit there will
be some problems still remaining. Google talk network doesnt support 64 bit date. It shows that we
need a lot of effort to overcome this problem.
18
Fig 6: Step 1
Fig 7: Step 2
19
20
From all this experiments we can say that y2k38 bug will affect even the Google server!!!
21
will
be
22
the out
to
6:23:15 AM 7-
Feb-2106. Surely giving us more than enough years for 64-bit software to dominate the planet .It
sounds like a good idea at first most of the standard time_t handling function do not accept negative
time_t value any way. If we make time_t in to a data type that only represents positive number? Well
there is problem. Time_t is not just use to store just date sand times, it is also used in many
application to store difference between time/date values that is, to answer the question of how
much time is there in between date A and date B? In these cases, we do need time_t to negative
values. It is entirely possible that date B comes before date A. Blindly changing time_t to an
unsigned integer make the code useless.
23
9.3 Will fixing year 2000 bugs help fix year 2038 bugs?
No, time_t is never, ever at fault in any Year 2000 bug. Year 2000
bugs usually involve one of three things: The user interface, i.e., what year do
you assume if the user types in "00"; a database where only the last two digits
are stored, i.e., what year do you assume if the database entry contains a 00
for its year; and, in rare instances, the use of data items (such as the struct tm
data structure's tm_year member in a C or C++ program) which store the
number of years since 1900 and can result in displays like "19100" for the year
Department of Computer Science and Engineering, September 2011
24
25
26
27
10. CONCLUSION
Still there is 26 years ahead; scientists are not thinking it as a big period.
They are trying their best to find out a solution for Y2K38. Now looking back on
all that has happened, I hope humanity has learned a valuable lesson with Y2K.
The possible effects of Y2K had been known over 20 years ago!! Why did we
wait so long to fix it? The answer is simple, we didnt think that the computers
would last that long. Well, now that we know, we had better get going on the fix
for Y2K38, the next computing doomsday. Weve got 26 years and a few days to
fix it, so lets get it done now! Of course, Im being idealistic we wont begin to
worry about Y2K38 until there are only a few years left before it arrives. I really
cant wait for that!! Can you? Good luck and I hope no ones flying car breaks
down in 2038! : -
28
11. REFERENCES
http://computer.howstuffworks.com
http://en.wikipedia.org/wiki/Year_2038_problem
http://www.2038bug.com
29