CINXE.COM
Y2038 is coming!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <TITLE>Y2038 is coming!</TITLE> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <h1>Y2038 is coming!</h1> <h2>What is the Y2038 problem?</h2> <p>UNIX and UNIX-like systems like Linux count time since the "Epoch" - Jan 1st, 1970 00:00 UTC. The normal way to do this involves counting seconds since that point, and the standard <tt>time_t</tt> variable type for this is a <strong>signed</strong> 32-bit integer. This works well for many purposes, <strong>except</strong> one: the end of time is coming!</p> <h2>When does it happen?</h2> <p> <tt>$ date --date=@$((2**31-1)) -u <br>Tue 19 Jan 03:14:07 UTC 2038</tt> </p> <h2>Why is is a problem?</h2> <p>Lots and lots of systems are going to be confused when <tt>time_t</tt> wraps. If you thought Y2K was a problem, Y2038 is likely to be much worse. When we were worrying about Y2K, most of the systems involved were big obvious computers and we could expect to identify them easily and fix their software.</p> <p>When we get to January 2038, a lot of the systems that are likely to cause trouble are <strong>not</strong> going to obviously be computers. Imagine: a simple micro-controller in a washing machine, or a media player in a car, or a sensor embedded in an aircraft engine. Depending on how these were designed, a sudden failure of timekeeping could have disastrous effects.</p> <p>The systems that some people are developing and deploying <strong>now</strong> will still be in use in 20 years, so we need to get this fixed ASAP.</p> <h2>More details and discussion</h2> <p>See my DebConf 17 BoF session about it (<a href="/~steve/talks/Debconf17-eotw-2038/Debconf17-eotw-2038.pdf">PDF</a> / <a href="http://meetings-archive.debian.net/pub/debian-meetings/2017/debconf17/it-s-the-end-of-the-world-in-21-years.vp8.webm">Video</a>).</p> <hr> Steve McIntyre <steve@fix-2038.com> </body> </html>