Matt Rickard

Share this post

Year 2038 Problem

blog.matt-rickard.com

Discover more from Matt Rickard

Thoughts on engineering, startups, and AI.
Continue reading
Sign in

Year 2038 Problem

Feb 28, 2022
Share this post

Year 2038 Problem

blog.matt-rickard.com
Share

On January 19th 2038 at 03:14:08 UTC many computer programs will inadvertently stop working. Some will crash, others will report the time as December 13th 1901 at 20:45:52 UTC. A flashback to Y2K, we'll have Y2k38.

Why? Many programs measure time in Unix time, which is the number of seconds elapsed since the Unix epoch (January 1st 1970 00:00:00 UTC). The current epoch time of this post is 1,646,058,600. On January 19th 2038, Unix time will reach an important number to computer scientists, 2,147,483,647.

2,147,483,647 can also be written as 231 − 1. Unix timestamps usually are stored in 32-bit signed integers. A 32-bit signed integer uses the first bit to determine the sign, and the next 31 to encode the number, so it can represent integers from −(231) to 231 − 1.

When a 32-bit signed integer overflows, or goes beyond its maximum value, it flips the signed bit, or −(231). Unix timestamps stored in 32-bit integers that overflow will read −(231), or 231 seconds before epoch – December 13th 1901.

Many programs have already safeguarded against this by storing Unix timestamps in a 64-bit integer (that kicks the problem 292 billion years into the future), but some legacy programs will inevitably fail in unexpected ways. We'll have a lot more legacy software in 2038 than we did in 2000 (Y2K).

Share this post

Year 2038 Problem

blog.matt-rickard.com
Share
Previous
Next
Comments
Top
New
Community

No posts

Ready for more?

© 2023 Matt Rickard
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing