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.
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...
I did but all they told me was that I talk like a fag and my shit's all retarded.
If all else fails, immortality can always be assured by spectacular error.
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.
greetings earthling the good news is PEOPLE are tasty, when the motherships get here it's like thanksgiving on steroids.
(for the simple minded ones this is a joke)
https://www.gnu.org/philosophy/free-sw.html
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!
Should have fed them a politician. Al Gore comes to mind.
Msge to fleet command: Avoid the 3rd rock, the inhabitants taste like shit!
"Windows is like the faint smell of piss in a subway: it's there, and there's nothing you can do about it." - Charlie Br
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.
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.....
Text Messages from the FUTURE!! BRILLIANT!! It's just like phone calls, ham radio signals, and that movie about dreams from the future! All of those grossed huge sums!!! I have no idea what all the rest you where trying to get at but expect to see this movie in 2012!
Your Friends,
New Line Cinema
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."
The future replied back saying that climate change was a hoax and that Al Gore is now broke holding worthless carbon credits.
The second message said Apophis took care of any warming and humans where being so smart by pre-emotively dumping trillions of tons of CO2 into the atmosphere.
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?
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!
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)
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.
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
No... they just need to fix the software. The year in an SMS message is stored in an 8-bit packed BCD value. They decoded it incorrectly.
In other words, they don’t need to change 0x10 to 0x0A. They need to make their software decode 0x10 as the year 2010.
Yes, hex would be able to store a wider range of values than BCD, but who needs to keep an SMS message for longer than 100 years? In the rare case that you do, store it in some external data package that can hold 4-digit years.
Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
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.
Our Cockroach overlords also want to thank us for making them the worlds dominant species.
Calling someone a "hater" only means you can not rationally rebut their argument.
I have an HTC Touch Diamond. All text messages I've received since the new year are showing from 2016.
One of my favorite comedies ever.
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"
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
+1 Insightful
It could be that the only purpose of your life is to serve as a warning to others.
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...
Don't tell me, I never said it was a fix.
However It does seem to be a useful workaround for many people, especially for people who like to view their texts in threaded mode.