January 19, 2038 is a date which will live in infamy. It is on that day that the 32-bit integer storing the number of seconds since the beginning of The Epoch will overflow, causing death and destruction unseen by the world since the Y2K Bug. As they did in 2000, software will spectacularly crash, hardware will explode, appliances will go haywire and attack their owners, and nuclear missiles will simultaneous launch and destroy the world. Casper Kvan was reminded of this impending doom when one of his systems suddenly went down.

The system that crashed was a vendor application and failed as a result of the database shutting down. Easy enough to fix, Casper restarted the database. It came back up, then went down again. He restarted it again, it came up, then went down. Up, down, up, down. The log files revealed the problem was in the vendor's startup script, which went something like this:

start oracle
sleep 1000000000
stop oracle

It was pretty clear why the script failed. Time passed 2^31-10^9 that weekend, so the sleep command was overflowing and terminating, and thus the database was shut down. No one, including the vendor, could explain why their startup script issued 30+ year sleep command and then a shutdown, but the fix was pretty simple: the vendor shaved a zero off the sleep command.

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!