Y2K38 Watch Starts Saturday
Jon Masters writes "I just wanted to remind everyone that Saturday, January 19th 2008 will mark the beginning of the 30-year countdown to the Y2K38 bug, when Unix time will overflow 32 bits. Some 30-year loan calculation software might start having problems with this over the weekend."
I think Boeing or some aircraft company was one of the first company to run into Y2K problems because of how they plan their building schedule or something. So they might encounter Y2K38 problems.
I always found it interesting that 1 billion seconds happened 2 days before 9/11. It never seemed to be mentioned much. I'm not trying to make conspiracy theories, but its probably one few times that an apocalyptic-like event happened so close to a man made time scale.
The raw calculation won't have a problem but maybe in displaying/storing the amortization table there could be a hiccup. You're not going to get out of your mortgage or anything but it's interesting none the less.
Is 123456789, Unix time. No shit. 29 Nov 1973. Guess I'm a confirmed geek then?
They might... After all, transistor computers were up to 32 and 36 bits before the first 4-bit microprocessor was introduced. It is possible that a revolutionary new concept in processing will result in an insanely fast processor but technological limitations will force it to only be 8 bits.
Actually, it would probably be in 1901, since the overflow only takes place for signed ints. We'll have another bug for unsigned 32-bit ints in 2106 or so.
Put simply, a lot of software is poorly written and uses int as synonymous with time_t (or somesuch). The two are often interchanged by programmers; particularly those with a Windows background who can't find CTime (or whatever it's called) on non-Windows platforms.
;)
Moving to 64-bit machines won't fix all the magic 32-bit binaries out there but software that's recompiled for 64-bit machines will automagically use 64-bit ints where the programmer held the time in an int.
Of course, I've seen a lot dumber bugs than ignoring to use the operating system's time structures and methods for dealing with time so I don't doubt that there are some bugs that actually will need some serious considerations made.
I guess it's a fault of the Unix people from way back. They made this epoch thing and used a 32-bit number to store the number of seconds since it. I guess they were assuming that all their software would have been replaced by something better on bigger machines. They shouldn't have written such reliable software and then maybe some of it would have been replaced by now
I drink to make other people interesting!
40 and 50 year loans are really 30 year loans that will be refactored (or rewritten or reset, whatever terminology they used) at 10 and 20 years left respectively. From my recollection based on work in subprime IT for a few years, it has to do with laws that limit the life of a loan to 30 years or something.
Regardless, 40 and 50 year loans are right up there with negative amortization adjustable loans. HORRIBLE ABUSE OF TEH SYSTEM. If you have to stretch that far to get into a house, rent a fucking apartment and save up some money for cryin' out loud.
This credit crunch is a good thing, we as consumers need to get off the endless debt teat.
So the recent housing loan problems were not a test to see what would happen when loan companies crash?
Strangely enough I got hit by a Y2K bug last week which will not get fixed for several months. Some idiot decided that 0000 would be good for a permanent licence - which means all the new permanant licences for a product my company is using expired on 1/1/2000. The work around the vendor approved is to disable the licence checking software entirely for the six to nine months before a solution is released. Don't you love expensive closed source abandonware?
Did you base your program on the one In Office Space, or the one in Superman 3? If it was the one in Superman 3, you're totally screwed because the libraries are GPL instead of LGPL and now your entire project has to comply with the license.
Oh god... I forgot this is slashdot: now someone is going to spend 30 minutes composing a reply that explains how the GPL doesn't work like that....
Nope. They use two integers. One for the dollars, and one for the cents. Some older programs get fancy and use a special 4 (or 6, or 8)-byte number, where 7 (or 8) bits are used for the cents, and the rest for the dollar signs. These are known as "fixed-point fractions." The important thing to keep in mind is that floating point numbers are not accurate enough for banks.
Write your own Choose Your Own Adventure. http://www.freegameengines.org/gamebook-engine/
It's not a big issue and as long as programmers are aware then hopefully it will be avoided.
But there are pitfalls out there now which naive programming may fall into.
I came across this one at http://www.2038bug.com/. We hit the 31st bit of POSIX time in 2004. That means that if you add together any two current times, for example when taking an average, then you will overflow a 32 bit signed integer.
Apologies for code quality but this artificial example hopefully shows the issue:
gives the following on my x86 Linux system:
It's easy to fix by casting to 64 bit or dividing first but there may be similar examples hiding away in old code which are less easy to spot.