By now, you've probably heard about that text message that shuts iPhones down. It's been wreaking havoc on users of the Apple device everywhere — but although we know Apple is already hard at work developing a solution, the question remains: Why does the text shut down iPhones in the first place? Because seriously — how can one particular string of characters cause so much trouble?
Unfortunately, we don't totally know yet. But! The Internet, marvelous place that it is, has a lot of ideas, which I dutifully went and tried to sift through. Here's what I found — although fair warning: A lot of it is super technical and I don't completely understand all of it. I'll do my best to explain it, though, as well as point you in the direction of the folks who actually do get it. And hey, if you're tech-savvy to begin with, it might already make sense to you, anyway.
Ready? Here we go.
Lost in Translation:
Apple's statement about the issue gives us a good place to start: “We are aware of an iMessage issue caused by a specific series of Unicode characters and we will make a fix available in a software update.” Aha! Unicode! Popular Mechanics grabbed onto this tidbit and did a little digging — so according to them, here's what might be going on.
First, we need to understand what Unicode is (besides part of the name of the consortium responsible for emoji). Its official definition is, “An international encoding standard for use with different languages and scripts, by which each letter, digit, or symbol is assigned a unique numeric value that applies across different platforms and programs”; from there, Popular Mechanics describes how it works as follows: “Behind every character you see on your screen is a numeric Unicode tag. It's this little number that tells different parts of different programs what letter or number or 'glyph' they should be showing you.” So, as I understand it, Unicode is basically what helps translate any given piece of data your phone receives into the language that device recognizes.
Then we need to talk about something called Core Text. Core Text is responsible for what everything actually looks like on your phone — once it gets the information from Unicode, it “draws” it on your screen. So, when someone texts you, data gets sent from their device to yours; Unicode is what allows that text to be “read” by your phone; and then Core Text takes the information gleaned from Unicode and displays (draws) it on your iPhone screen. Whatever is going wrong seems to be happening somewhere around the Unicode to Core Text stage, wherein, as Popular Mechanics put it, “Core Text just cannot freaking deal with whatever Unicode is coming through from that crashy text string.” When it tries to draw the code it's reading, it can't do it and shuts down instead.
A Few More Details:
Redditor TheDarocker did some testing with a friend and determined that the crash itself has something to do with “SpringBoard.” I had never heard this term before, so I had to look it up — and it turns out that “SpringBoard” is the application that actually manages the home screen on an iPhone. TheDarocker's logs from CrashReporter show that the text cause SpringBoard to crash, among other things — which, in turn, leads to your phone rebooting itself.
Another Redditor, wtf_are_my_initials, also suspects that the crash has something to do with how messages in general — and that message in particular — get abbreviated on the lock screen and on the main menu of the Messages app. Writes wtf_are_my_initials:
The words “effective” and “power” can be anything as long as they're on two different lines, which forces the Arabic text farther down the message where some of the letters will be replaced with '…' The crash happens when the first dot replaces part of one of the Arabic characters (they require more than one byte to store). Normally there are safety checks to make sure half characters aren't stored, but this replacement bypasses those checks for whatever reason.
Redditor _theowen_ then took it a step further, asking, “Why does splitting the character crash the app? Is it because it can't render the split [character]?” — to which wtf_are_my_initials responded, “That's what I'm assuming.”
OK, But What's Actually Going On in the Code Itself?
Because that's where we're going to find the real answers, right? UK-based IT site The Register broke down what's happening in the actual code in great detail, but because I don't speak that particular language, I had to turn back to Popular Mechanics for a translation. They use a road sign metaphor that actually makes a lot of sense:
Somewhere in Core Text's code, there's something called a “pointer.” This is basically the code version of a road sign; its whole job is to point at a place in memory. If a pointer is null, it means there's nothing on the sign, and if you tell a computer to follow a null pointer to a location, stuff gets crashy because a computer is too dumb to say, “Wait, what? I don't understand.”
Good code, like Core Text, apparently has a check in place to prevent this from happening — that is, it stops your phone from “trying to read a blank sign.” But the text message appears to load up that pointer with a bad value, which means the sign itself isn't blank... but it points to somewhere that is, like the nothingness beyond the edge of a cliff. When your phone follows that sign, it effectively walks off the cliff, which leads to it crashing — both literally and metaphorically.
What Can We Do About It?
As Popular Mechanics notes, we still don't totally know why this particular string of text does all this — but at least now we know more or less what's actually happening. Hopefully Apple will have a fix for us soon; in the meantime, if you've been hit with the Text of Doom, here are a few workarounds. Good luck, everyone!
Images: Rebloggy; instantreplay, giffity-gif-gif/Tumblr; Giphy