2016 Bug Hits Text Messages, Payment Processing
An anonymous reader writes "It seems some systems are suffering from a Y2K16 bug. When 2009 ticked over to 2010, some Australian EFTPOS machines skipped to the year 2016. Coincidentally, some Windows Mobile users are also having issues with their new year SMSes coming from 2016. What function could cause this kind of error?"
Uncle Bill decided to do some coding. That's why.
BCD/binary mismatch?
0x09 = 9 decimal when interpreted as either binary or BCD.
0x10 = 10 decimal when interpreted as BCD, as 16 when interpreted as binary.
"National Security is the chief cause of national insecurity." - Celine's First Law
A 4-bit year field? Wrapping from 9 to 0 (16) ?
Seems Microsoft is supplying some code for EFTPOS machines that is common with Windows Mobile, so it's most likely the same bug in both.
No dial tone, no incoming calls.
Had to reset the internal datetimes back to 2007, then they started working again. Nice job, Panasonic.
Imagine that, the ability to text to the past. We could get warnings about impending events! New Text Message From Marty McFly: I HV TO TELL U ABT TEH FUTURE Reply from Doc Brown: WHAT? New Text Message From Marty McFly ON THE NIGHT YOU GO BACK, YOU GET SH*message text missing*
Could be botched string parsing. Could be binary coded decimals interpreted as binary numbers: BCD encodes two decimal digits in the high and low nibbles of a byte. Therefore BCD 10 is 0001 0000 in binary, which is 16 in decimal.
Quick, someone send an sms to the future and ask if they solved the climate change problem.
It's a Y2K10-Bug. The Y2K-Bug was not titled Y1900-Bug (to name one of the bug types) as well.
It's to avoid the world ending in 2012 by skipping straight to 2016. We've left a few years either side of the fateful date as a safety buffer.
The beam collisions have opened a portal into the future...
Imagine that we now have to suffer a lame Sci-Fi show based on the lame premise that the hero/ine send sms from the future to prevent two trains from colliding because s/he saw it all in a newspaper and the name of the machinist was there and a friend that was once part of the geek squad was able to find the machinist's cell number and now that they know that 0x10 is 16 in HEX all they had to do is change the year on their cell phone and send an SMS: " your about to crash. alot more in next MSG"
Start worrying about SMSs that warns about future events. The "avoid seeing that movie" sms could have been because a limited preview somewhere, but im still a bit worried about the "the alien landing on Jan 8 will be real" sms.
Time to quote Joel (from www.joelonsoftware.com):
Jamie Zawinski is what I would call a duct-tape programmer. And I say that with a great deal of respect. He is the kind of programmer who is hard at work building the future, and making useful things so that people can do stuff. He is the guy you want on your team building go-carts, because he has two favorite tools: duct tape and WD-40. And he will wield them elegantly even as your go-cart is careening down the hill at a mile a minute. This will happen while other programmers are still at the starting line arguing over whether to use titanium or some kind of space-age composite material that Boeing is using in the 787 Dreamliner.
When you are done, you might have a messy go-cart, but it’ll sure as hell fly.
Hey, Jamie! Your proprietary date datatype didn't fly! Would you please turn around and fix it?
Bob- Happy Nw Yr! What a decade so far. Cubs winning the series, and who would have predicted that the Mayan calendar was really right? Glad I loaded up on all the MSFT back in '10. Are you going to visit your wife's grave next week for the 6th anniversary? kthx!
These messages had better not be spending years getting routed around the phone company network. The phone can infer what year it is.
You don't need a month even. I'm not sure you need a day, and you could probably skip the rest as well. This is a stupid waste of bytes, and thus air-time. It eats away at space that could go to the message or anything else useful.
Suppose we really do want sender-side time. OK, let's use an 8-bit count of minutes. That covers over 4 hours. We take UNIX time (UTC seconds since 1970), divide by 60, and throw away all but the low 8 bits. The receiver assumes this is in the recent past, unless it could fall within the future 5 minutes.
Kids, when you've written code to drive 40-character HP 7 by 5 LED displays, with the data and the buffers having to fit into 256 bytes of memory, then you can argue with msuave.
From scarped cliff or quarried stone she cries "A thousand types are gone, I care for nothing, no not one."
and they can bill you the future rate as well. In the Year 2016 texts are $2 each way. and your bill in 6 years past due.
It is 2016, not 2k16. Is there something cool about replacing a zero with a k now?
Any EE will tell you that 2k16 means 2.16k or 2160. How does this garbage continue making it to the front page?
Are the negative effects of the Y2K10 bug worse than those of the Y2K bug ?
No to mention Y2K was a pun of sorts for shortening 2000 to three bytes from four. Now we're taking more space than the original; Y2K16 vs 2016. Those COBOL programmers would be rolling in their graves.
We're all hypocrites. We all have hidden parts, it's the contrast between them that make us more a hypocrite than others
WTF indeed... who were you replying to?
Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
Parent makes no sense.
This is an indication that the human race will survive 2012! Rejoice!
New Economic Perspectives
MMXVI
Red to red, black to black. Switch it on, but stand well back.
Y bugs are named for the year in which they occur, not the year they jump....otherwise Y2K would have been Y1.9K, or even better YMCM
Hi, guys!
Due to a glitch in your space-time continuum, some of us have found ways to contact you. I just wanted to let you guys know that we are yet to invent flying cars.
Please plan your expenses accordingly. That is all. Goodbye, past-commenters!
I can still recall in 2009 when they passed health care legislation, that would start after a long wait in 2014, but the time passed really quickly!
Y7E0
I'M NOT ANGRY!
As the OP pointed out, you're confusing the C literal expression with it's datatype.
"0x" preceeding a C literal simply means that the literal is being expressed in hexadecimal. It tells the compiler how to interpret the literal, it doesn't type it. The type is given separately (e.g. "int 0x10" is the same as "int 16"). C doesn't provide binary literals, because it doesn't need to. Expressing as hexadecimal is more compact, and well understood (by most). One could equally well express that same literal as " '\020' " (which expresses a character of ordinal 10 decimal, and is expressed as an octal number), or by simply "10". They're all the same thing, the differences just make source code easier to read, they have nothing to do with how the data is actually used (encoded) by that code.
But, it would have no doubt confused you even more if I had said that "16 is 10 decimal in BCD."
The C literal "0x10" has the meaning "00010000" when interpreted in binary, 16 in decimal, 10 in BCD, and might mean "the clueful flags are off and the pedant flag is on" for a bit field.
"National Security is the chief cause of national insecurity." - Celine's First Law
That should read:
" '\020' " (which expresses a character of ordinal 16 decimal, in turn expressed as an octal number), or by simply "16".
"National Security is the chief cause of national insecurity." - Celine's First Law
0x10 is 16 decimal, when interpreted as the binary representation of a decimal number (i.e. an int).
0x10 is 10 (hex) when interpreted as the binary representation of a hexadecimal number and is 10 (decimal) when interpreted as the binary representation of a BCD number. There is no "bcd/hex" mismatch in this case.
It's a mismatch between BCD encoding and binary encoding.
"National Security is the chief cause of national insecurity." - Celine's First Law
the Y2.01K bug
If enithin kan gow rong it whil. (Murfey)
On new years day Comcast spammed my email with "Welcome To Fancast" emails. I got at least ten of the same email.
Which should be a hint about what's happening here.
Any EE will tell you that 2k16 means 2.16k or 2160. How does this garbage continue making it to the front page?
Actually, most EE's I know are smarter than that. The fact that X means Y in some contexts does not mean X means Y in all contexts. Most competent speakers of the language have no trouble determining meaning, taking context into account. It's rare that someone manages to get an EE while lacking the level of intelligence required to do that.
"Convictions are more dangerous enemies of truth than lies."
Let's try this again. The issue is getting confused. Or rather, it already was.
0x10 (hex), in binary is 00010000. That same BINARY number expressed in BCD is 10. Okay so far. But the actual numeric value being represented is different: 16 and 10 (decimal).
Something like "fuckUpIn2010(time);" I would recon.
Table-ized A.I.
What rolls down stairs
alone or in pairs,
and over your neighbor's dog?
What's great for a snack,
And fits on your back?
It's log, log, log
It's log, it's log,
It's big, it's heavy, it's wood.
It's log, it's log, it's better than bad, it's good."
Everyone wants a log
You're gonna love it, log
Come on and get your log
Everyone needs a log
log log log
-- Ren and Stimpy
It doesn't take away from the fact that 2k16 is dumb as hell.
Yeah... they need to fix it so that this year's SMS messages are stored with a year of 0x000A instead of 0x0010. Then, there will be no more messages from 6 years in the future. And, next year better be 0x000B. The routine being used is converting decimal to hex such that the two nybbles represent the decimal digits. Hex is better anyway, one byte can store 2000 to 2255 that way (instead of 2000 to 2099).
More like an attempt to capitalize on Y2K's notoriety by partially mimicking it.
Or...just be glad nobody's trademarked Y2K.
anyone remember the zune mass suicide? http://it.slashdot.org/article.pl?sid=08/12/31/1428254
billy really needs to get back to basics
Another example of nature preventing us from discovering the Higgs and annihilating ourselves.
The Large Hadron Collider was calibrated late 2009 and began doing physics in early 2010. The Higgs was discovered in 2011 and promptly engulfed us all, absorbing all parallel universes up to about 2015 (our timescale) through entanglement of the Class I strings. Only 2016 onwards is defined.
Google Drs Holger Bech Nielsen and Masao Ninomiya and read all about it!
So, basically, this was a simple case of code misconverting from BCD to binary, interpreting 4-bit nybbles representing 1 ten and zero ones as 1 sixteen and zero ones. Or, to summarize the summary, they were hexed.
Time travel.
I have an HTC Touch Diamond. All text messages I've received since the new year are showing from 2016.
shouldn't this be called y2kxf?
They would be ... if they were dead. Or undead, by day. Or just had particularly odd sleeping habits.
There are probably still a lot of people maintaining, and possibly even coding from new in COBOL.
I read on Wikipedia that: "The COBOL 2002 standard includes support for object-oriented programming and other modern language features."
I shudder. That sounds truly horrible. Can I have Object-Oriented Intercal for next Christmas?
Birds are not dinosaur descendants;birds are dinosaurs, for all useful meanings of "birds", "are" and "dinosaurs"
Surely the testing strategy should be brought into question? Would seem sensible to test various dates in a currency-handling system. However, having worked for a short while as a tester for an EFT/POS company, I can fully understand. Though not the main reason for leaving, the quality of engineering practices and principles was very poor.
This time it isn't bytes, but pronunciation.
"Two thousand sixteen", the most natural way to say the number, uses three syllables for the "20.." part.
How can we make that shorter and easier to say? Using "twenty..." sounds a bit silly as it doesn't flow well and there's no "twenty hundred" to abbreviate from. The retro hipster in me wants to see something with "two ought" in it, but let's face it, the "2k" thing saves a syllable and is already popular, and has a futuristic, metric/computer feel to it. It's perfect.
(Now can we get started on actually bringing 2k10 into the "metric age"? It was disappointing to pick up Clarke's classic on the first day of 2010 and see him make a wrong prediction in the first sentence!)
If by "twenty hundred" you were referring to 2100, I would think that "twenty-one hundred" would be fine for that, and "twenty-one forty-six" for 2146, etc. "two kay one-forty-six" is a lot more confusing IMHO...
SIG FAULT: Post index out of bounds.
"Twenty-one hundred" for 2100 is just fine, as is "twenty-one forty-six" (because you're just omitting the word "hundred"). The "k" stuff only works until 2099, when it stops being an advantage. Then we go back to what we did in the nineteen-hundreds, which is to take out the word "hundred". In the current century, there's no word "hundred" that needs to be abbreviated.
To make matters worse, strictly speaking Y2K16 evaluates to 2160 (think of a 4K7 resistor). It would be more accurate to say Y2K016, in which case the 'K' is completely redundant.
"Nine times out of ten, starting a fire is not the best way to solve the problem." - my wife
Docken may have just gotten to the chicken... Symantec effectively D-DOSed their update servers with code that made practically every one of their own customers think they hadn't updated recently enough and query to see if there was anything new. Nice work guys...
As an EE I'd like to say that yes I am smart enough to know what was meant when people WRONGLY referred to 2016 as 2K16.
Some slimy git on the Sprint BBS is pretending to be ziggy471 that creating the original workaround for this Wm bug and released it here:
http://forum.ppcgeeks.com/showthread.php?t=104248
as "Ziggy 2016 fix.cab"
The main thread in the sprint BBS is this:
http://community.sprint.com/baw/thread/25879
The impersonator is calling himself Ziggy on the Sprint BBS.
He has changed the file name to "Ziggy 2016 fix final.cab" and is spouting some rubbish about the final version having been fixed so that the problem will not happen again on various other dates in 2010 and 2011!!
HE IS ASKING FOR DONATIONS!!
The real ziggy471 went on the BBS and pointed out that it was his work and he did not want donations but the idiots at Sprint appear to believe the impersonator and have locked the thread and deleted all the messages from the real ziggy471.
I am disgusted.
This is not a fix. It merely substitutes an incorrect date (the time/date the message was received) for another incorrect date. When I turn on my WM 6.1 phone, it takes anywhere from 5 minutes to 4 hours to receive text messages, the timestamp inder the “fix” would be off considerably.