The Engineer's Notebook Blog

The Engineer's Notebook

The Engineer's Notebook is a shared blog for entries that don't fit into a specific CR4 blog. Topics may range from grammar to physics and could be research or or an individual's thoughts - like you'd jot down in a well-used notebook.

Previous in Blog: Speaking of Social Robots...   Next in Blog: Biodynamic Wine: More than Organic
Close
Close
Close
2 comments
Rate Comments: Nested

2038: Y2K 2.0?

Posted July 06, 2015 9:03 AM by Hannes
Pathfinder Tags: 2038 problem date bug Y2K

Who could forget Y2K? I have fond memories of counting down to midnight on January 1, 2000 prepared to witness planes fall from the sky and neighbors rushing to their cars to initiate bank runs as computer systems reverted back to William McKinley's presidency. Little chaos actually occurred, of course, even in non-remediated computer systems. In the present day, though, worrywarts have set their sights on 2038, the latest date bug for which we're all currently unprepared.

Since the dawn of widespread computer systems date bugs have occurred for various reasons. Systems crashed on January 4, 1975 because that date overflowed the 12-bit time field in certain operating systems. The less-publicized Y2K+10 problem was due to a variance in the way hexadecimal and binary-coded decimal (BCD) represent numbers. In short, BCD systems mistakenly read hexadecimal encoding as "2016" rather than 2010, deactivating 20 million German bank cards but not much else. And the original Y2K was an issue because early time systems represented years as two digits rather than four, so unmodified computers would represent 2000 as 1900.

Y2038 is pretty similar to the 1975 incident in that it's essentially an overflow problem for Unix or Unix-like systems. These systems encode dates as a 32-bit integer, time_t, representing the number of seconds since the Unix epoch, 00:00:00 Coordinated Universal Time (UTC) on January 1, 1970. In the constantly incrementing binary integer, the first digit has always been 0, representing a future date post-1970. But the integer will wrap at 3:14:07 UTC on January 19, 2038. At this point, it will be a 1 (indicating a "past", or pre-1970, date) followed by a string of 31 zeroes, leading systems to encode a date of December 13, 1901.

Early programmers used 32-bit Unix coding because they didn't have the luxury of using fast, cheap memory and processors like the ones we run into today. A number of modern data structures still use 32-bit embedded time representations, however. File systems, databases, older COBOL systems, manufacturing equipment, and certain medical devices are all at risk of failure if not corrected.

Because this problem has been recognized and defined a good 23 years before its critical failure point, some researchers believe that some future technology might be able to bypass the situation altogether without any scrambling to modify today's systems. It's also reasonable to assume that at least some existing systems will be updated, and that fixes could become sticky. Remapping time_t to a 64-bit integer is simple enough, but persistent data migration could be time-consuming and costly. And if file system data is incorporated into remote networks, techs must update time values across all points of the system at once.

We don't know exactly what'll happen in January 2038. Long-lived embedded systems with future planning and forecasting cycles might cause minor infrastructure difficulties if not upgraded. Twenty years from now might therefore be a great time to get into IT consulting, yet as the old IT adage goes: if the job gets done and done well, no one will notice anyway.

Image credit: John Swindells / CC BY-SA 2.0

Reply

Interested in this topic? By joining CR4 you can "subscribe" to
this discussion and receive notification when new comments are added.
Guru

Join Date: Apr 2010
Location: About 4000 miles from the center of the earth (+/-100 mi)
Posts: 9910
Good Answers: 1141
#1

Re: 2038: Y2K 2.0?

07/06/2015 8:14 PM

At 03:14:07 UTC on 19 January 2038, party like it's 1970 !

Reply
Guru

Join Date: Feb 2005
Location: New York
Posts: 575
Good Answers: 16
#2

Re: 2038: Y2K 2.0?

07/08/2015 7:11 PM

When I was younger, I had a summer job testing McGraw Hill software for Y2K compliance. I literally just changed the date on the computer and used the software while it switched over.... for thousands of titles. The owner knew it was BS but they had to say it was Y2K certified.

__________________
Kaplin
Reply
Reply to Blog Entry 2 comments

Previous in Blog: Speaking of Social Robots...   Next in Blog: Biodynamic Wine: More than Organic

Advertisement