The Zune 30 bug was overinflated

(My sincerest apologies; this post was unpublished due to a database error. The issue has since been fixed.
This is a shout-out to all Zune 30 owners who remained patient.
This is to you, the faithful owner of a Zune 30, who didn’t buckle under stress and kept a keen eye on Microsoft, waiting for a solution.
This is to you, the discount shopper who picked up a Zune 30 and didn’t want to lose faith in your hardware.
Low and behold, Microsoft dug deep to find out the problem and, within minutes of finding out exactly what it was, pushed out an answer and a solution that didn’t void your warranty (thanks, Gizmodo). There’s a reason for why I’m bringing all of this up. July of 2008 saw cataclysmic server failure when a vast majority of all newly-purchased iPhone 3G units tried activating at nearly the same time, leaving both new iPhone 3Gs and some iPhone Gen 1 units dead in the water until the activation servers came back online. Poor planning led to the creation of a load-intolerant system on AT&T’s side (though the blame hardly belongs to them, given that Apple mandated this system in the first place). However, people weren’t infuriated by Apple’s ineptitude here. They were complacent and merely went with whatever explanation was fed to them. Meanwhile, a sizable majority of people who stuck with their own platforms of choice decided not to point and jeer.
Fast forward to December 31, 2008, and every Zune 30 device freezes due to a bug in a driver from Freescale Semiconductor in this while loop (between lines 259 and 274):
while (days > 365)
{
if (IsLeapYear(year))
{
if (days > 366)
{
days -= 366;
year += 1;
}
}
else
{
days -= 365;
year += 1;
}
}
(protip: day 366 triggers an infinite loop. To see the context of the code, check out the pastie link above, or just click here. You can see a breakdown of how this could’ve been handled here)
What happened? Every Apple-loyal iPhone, iPod, and Mac owner threw a fit even though none of them actually owned a Zune 30 (You can’t run a Zune 30… or any Zune, for that matter, on a Mac). Thanks in part to the additional sensationalism promoted by gadget bloggers and, subsequently, news outlets the world over, a problem with a Zune model sold only in North America suddenly became a "Worldwide Zune Outage."
This is the difference between the Social and the Kingdom of Apple. Those with Zunes held out patiently and were rewarded with verbose output by Microsoft, whereas Apple simply vaguely alluded to some other company being the source of their problems (or were otherwise mute for a long period of time) whenever something on Apple’s side went wrong.
Thank you, Zune 30 owners, for living up to the hype of the Social. I’m now quite proud to be an owner of a Zune myself.
Tags: Apple, dev fail, Infinite Loop, iPhone, Press Fail, Zune, Zune 30
Follow Bryant on Twitter! 
January 2nd, 2009 at 7:32 pm
One important thing to realize is that this is a flaw in a Freescale driver for a piece of hardware that the Zune 30 used. It could have easily been clock hardware used in an iPod, mobile phone, or any other piece of hardware (despite this not being the case.)
Microsoft’s response of “wait til’ tomorrow and it’ll work fine” was honestly a bit lame, but as the Zune froze during boot up, I doubt there was a way to apply a software patch while it was frozen. Now that they’re back to normal, I’m sure they’ll get around to adding the one line of code (if (days==366)break;) inside that else block before December 31, 2012.
I wonder though… did any other hardware use this part?
January 2nd, 2009 at 7:57 pm
Wow, great article. I agree with everything. I love the Zune, and while it was upsetting for some people, it was only for a short time. Like you said, it could have happened to anything! If it had been an iPod, people would have instantly forgiven Apple. At least it’s 3rd party code… what can Apple fanboys say now?
Also, I am studying Computer Science, so I found the source code very interesting. Thanks for posting it!
@Matt Boehm: While Microsoft’s response might seem lame to some people, I think it was the only thing they could do. Like you said, they couldn’t apply a patch while it was frozen. Sending it in would have taken many times longer. I don’t think 28 hours was too long to wait. At least it fixed itself!
January 2nd, 2009 at 9:03 pm
That was very informative. It did seem like something was a bit out-of-porportion with the response by the general media.
January 2nd, 2009 at 11:51 pm
Bryant,
Very good article. The naive environment of the extreme Apple Community will eventually come back to haunt them. The ridiculous uproar of a total non-issue with the Zune player was laughable at best. This didn’t spread viruses, mal-ware, or anything threatening. You just had to live without a music player for 28 hours. Big freaking deal.
I think all of the issues with Blaster, Slammer, and SoBig has help the Microsoft side to be calm and to deal with a malfunction much better than the Apple side.
Apple needs to embrace an Security Development Lifecycle and public beta testing. While hiccups like this with Zune happen at least it wasn’t security wise dangerous.
January 3rd, 2009 at 3:47 am
Oh please. If you remember the day that the iPhone launched and those servers went down, you’d remember that holy hell was raised on every tech blog because of the fact that activation went down and the phones that weren’t activated were bricks because of it. Most sites continued to cover the problems and complain about them until activation went back up reliably, which took a few days.
Fast forward to now, when 1 million+ Zunes all stopped working at the same time for an entire day. We’re not talking intermittent outages like the activation; we’re talking units that were not at all usable. Of course its a big deal. If the sites didn’t cover it as a big issue, I’d be concerned that they weren’t doing their job.
Now, imagine if the situation was reversed and all of Apple’s recent iPods, all 30 million+ of them, stopped working. You bet your ass that the world would be on fire with hate for Apple, and all the apple-haters would be sitting back with a smug smile saying ‘i told you so’.
Don’t imagine that just because you like Microsoft and Apple that you’re any different than those Apple zealots.
January 3rd, 2009 at 3:52 am
“Every Apple-loyal iPhone, iPod, and Mac owner…”
—
You mean all 3 people that use iPhones on Macs AND keep up-to-date with the tech news?
“Those with Zunes held out patiently and were rewarded with verbose output by Microsoft…”
–
You equate the miniscule numbers of Zune users getting over their hang-overs with patience?
“I’m now quite proud to be an owner of a Zune myself.”
–
Events totally unrelated to the purchase of your portable audio/video device finally make you proud you own one? That’s what it took?
January 3rd, 2009 at 3:32 pm
I should apologize; we had a slight database issue earlier which took out this post and rolled comments to an unpublished post.
The issue has now been fixed.
January 3rd, 2009 at 5:31 pm
@Josef
“You equate the miniscule numbers of Zune users getting over their hang-overs with patience?”
–
You mean you like making ad hominem attacks?
“Events totally unrelated to the purchase of your portable audio/video device finally make you proud you own one? That’s what it took?”
–
You mean you like spewing out logical fallacies?
January 3rd, 2009 at 5:50 pm
Wouldn’t the correct code be as follows:
if (IsLeapYear(year))
{
if (days == 366)
{
break;
}
}
January 3rd, 2009 at 5:54 pm
I’m doing a post on that in a little bit.
January 3rd, 2009 at 8:41 pm
Darren, assuming all is as it should be, I think that the while loop should be removed, since it looks like it should only execute one time.
As such, I think a solution is the following:
if (IsLeapYear(year)) {
if (days > 366) {
days -= 366;
year += 1;
}
} else if (days > 365) {
days -= 365;
year += 1;
}
If I missed the reasons the while loop is needed, then you could go with something like this
if (IsLeapYear(year)) {
while (days > 366){
if (days > 366) { //redundant…but whatever
days -= 366;
year += 1;
}
}
}else {
while (days > 365) {
if (days > 365) {
days -= 365;
year += 1;
}
}
}
I’m looking forward to seeing the actual solution…..as an aside, I really don’t get what the point of having a boolean return value when the function ALWAYS returns true.
January 3rd, 2009 at 9:17 pm
I posted a few solutions to the driver issue in my subsequent post:
http://www.aeroxp.org/2009/01/lesson-on-infinite-loops/
January 3rd, 2009 at 9:37 pm
My Zune still is stuck, any ideas? Did the battery dying thing and still stuck on boot up screen once it charges a bit.
January 3rd, 2009 at 9:43 pm
Yeah I saw that…I also saw how I completely forgot that the time passed in was since 1980. Great post.
January 4th, 2009 at 12:37 am
“Don’t imagine that just because you like Microsoft and Apple that you’re any different than those Apple zealots.”
_
I use both Microsoft and Apple. It doesn’t matter to me the platform. The big difference between the Zune crash and the iPhone crash is like night and day. The iPhone could be your ownly lifeline in an emergency. A Zune music player isn’t going to do jack if you’re in an emergency.
I am just as critical to Microsoft as I am to Apple. The only difference here is that Microsoft is actually attempting to get better. Apple keeps being lapse about security and the proof is in the National Vulnerability Database, Secunia, and tons of security research companies. So please, don’t give me this Mac vs Windows bias. I’m equally harsh on both. The difference is I equate a Phone over Music player differently.
January 7th, 2009 at 6:28 am
[...] 100% test coverage Browsing the blog that published the earlier Zune 30 bug analysis, I found another post, most philosophical about the media coverage of the bug. (Emphasis mine.) What happened? Every [...]
January 8th, 2009 at 7:55 am
Heh, this article comes off as a little aggressive-defensive about Apple products. But indeed, Apple also catches a lot of flak if they deliver underperforming products, rest assured of that. You can read about the 12 year old that found a security hole on the iPhone on CNET, for example. This is not unique, but more about Zune owners being seemingly over-defensive about their product, as they, like everyone else, realize that this bug look poor. Good to know it was only a temporary/temporal bug this time though.
January 25th, 2009 at 11:24 am
Ah, there they go, driver writers making Microsoft look bad again. Remind you of some other Microsoft product that people love to bash?
Nevertheless, it’s still Microsoft’s responsibility, even though they didn’t write the bad code. Even if the Freescale code had been correct, there could still be subtle issues dealing with the interaction between otherwise-working components. Integration testing should always explore the edge cases, and leap years are a classic edge case.
February 20th, 2009 at 8:18 pm
Great article, I just happened to stumble across it.
@Jonas,
There is a reason why Zune owners are defensive. We have witnessed almost every Zune feature somehow turned into a negative quality (3 play shared song limit, OPTION for subscription, wireless sync w/o a store (at the time), etc, etc, etc). I’ve never owned a product where so much lying and misleading statements were not only spoken, but were literally everywhere.
I have recommended this in great detail to many friends, explaining and showing them all of the amazing features, only to have them come back from the store stating that they needed to think more about it. Most of the time I would hear how the sales employee suggested so strongly against it; raising concerns that if they cancelled the subscription they couldn’t play music at all, the wireless sharing only works for 3 plays and then deletes itself and that they couldn’t use any of their iTunes music with it (even though they had random non-DRM mp3s). In two specific cases I had friends tell me that the sales person literally said they wouldn’t sell it because they couldn’t with good conscious. This happened at Best Buy and GameStop.
When I say I recommended this, I don’t mean just a little bit. I felt like I was a spokesman at times. I would have many of my friends, family and colleges extremely interested and down to the store. Not to mention I’ve purchased 5 myself so I know exactly what these sales reps were saying. Although I mentioned two stores above, the negative suggestions against the product were from any store I set foot in such as Circuit City and a couple college campus stores. Wal-Mart was the one place I didn’t happen to have bad luck at so I started referring people there which ended up working fine.
So yeah, Zune owners can get a little defensive but there’s a reason behind it.
-Zac
February 23rd, 2009 at 7:29 am
i bought a Zune 80 for my kid in December 2007. I liked the Zune better than the IPOD and thought it made sense. We had problems from the getgo. The player would play for 10 or 15 minutes and then shut off.
I called cupport and got the standard lines: you need to update, fully charge the battery,, etc. etc.
After doing a little research I found that other people had had the same type pf problems with other models. Apparently it related to a protection against static electricity in the software. Support acted like they had no idea what I was talking about. Eventuaqlly they sent me a box to return the unit. I decided to charge the unit before I sent it, and lo and behold there was a new update. Magically it was repaired.
The unit worked great until a week or so ago. All of a sudden it couldn’t find the song files on the unit.
I tried deleting songs and reloading. I cleared the software and reinstalled it. Nothing seems to work.
I’ve reloaded the software 5 or 6 times from 3 differnt computers. 2 with XP and one with Vista.
When Its reinstalled everything looks normal. Videos load fine, but when I go to load albums, songs, or playlists, it will load a few and then lock up giving me the C00D124D error Restarting doesn’t help.
Has anybody else had this problem.? I like the player and the Zune pass but I’m really tired of messing with this thing. Any ideas?
CC
March 1st, 2009 at 1:12 am
Chris,
Sorry about your luck. I actually haven’t heard of anything like that so I can’t give you any direct help. What I would say is that (and this goes for issues with any electronic product) once I’m dealing with support feeling like time’s just going to be wasted, send it out. Hopefully it’s covered still but if not you have two options. 1) Call support one last time to get the return info and explain that you’ve had the issue since day one. Let them know you sent it out and an update seemingly fixed it but that it’s ultimately defective. Even if it’s not covered most companies will not charge the repair fee. I know MS is very good about Xbox repairs but I haven’t had any issues with my Zunes. 2) You could just pay for the repair or buy a new one. I will advise you not to let this purchase steer your interest elseware. Well, at least not to a vendor who doesn’t allow for subscriptions. Regardless, I’ve owned many mp3 players and have had broken ones from 2 different brands and as much as I dislike one of the brands I know the broken mp3 player had nothing to do with them. It happens, you know?
-Zac
March 1st, 2009 at 2:17 pm
“What happened? Every Apple-loyal iPhone, iPod, and Mac owner threw a fit even though none of them actually owned a Zune 30 (You can’t run a Zune 30… or any Zune, for that matter, on a Mac). Thanks in part to the additional sensationalism promoted by gadget bloggers and, subsequently, news outlets the world over, a problem with a Zune model sold only in North America suddenly became a “Worldwide Zune Outage.”"
See, this is a propaganda technique called the ‘Big Lie’. It was used by Goebbels where the government blamed every single problem on the Jews, no matter how small and no matter if there was any evidence at all. It’s a startlingly effective technique. Microsoft fanboys use it to blame any and all bad publicity about Microsoft on Apple, as though Apple is part of some zionist conspiracy bent on controlling your precious bodily fluids.
Microsoft screwed up. Zune users were angry (not iPod owners, Zune owners. No iPod owner would even know about it if no zune users complained). The media picked up on it in the same way the media goes crazy every time Google’s down for a few hours. It was a pretty strange event to have all zunes just shut down and not start back up all of a sudden. Anybody would think so. Microsoft needs to take responsibility for their screw ups, and their customers (you) need to hold them accountable instead of blaming some mythical foe for a black ops mission to disable all zunes while their owners were sleeping.
March 1st, 2009 at 2:39 pm
Karl, you’re making quite a return by being a sore Apple fan.
“Microsoft screwed up.” –no, Freescale screwed up. Zune users complained that their devices didn’t work, but they didn’t complain that their devices sucked.
Karl, I’m surprised, but I’m also quite happy that you were shoveled out if this is your attitude to posts on the site.
March 6th, 2009 at 12:31 pm
I stumbled across this article and quite honestly didn’t want to write a comment.
Until I read the comment from Karl.
Where again did I read that in any MS vs Apple discussion at one point someone brings up the Nazis? Thanks, Karl, for making my day…*lol*