Why Windows 7’s CEIP bug shouldn’t have happened

posted on January 19, 2009 by Bryant Zadegan

When an application or operating system in beta crashes, it’s expected. Typical beta testers don’t throw a fit about failing beta applications; instead, they file bugs to the appropriate teams handling the parts of the program(s) which failed. This is standard procedure (at least with those used to Quality Assurance).

On the other hand, the systems which are not supposed to crash are the ones which are associated with bug reporting, user experience improvement, et cetera. So, when said utilities crash, what do you do?

Chris Holmes, a mutual friend of mine and Rafael, recently discovered (along with Rafael) the source of a round of interesting crashes in Windows 7 Beta 1. The bug itself is uninteresting and typical; besides crashing virtually anything running on top of a Windows service which calls the SQM client (a part of the CEIP), it’s nothing big. What interests me the most is that this bug is triggered when the Customer Experience Improvement Program is running.

Catch my abnormally detailed reasoning after the break.

Update: The Windows Team pushed a nicer solution to the Action Center. The solution may need to be re-used every once in a while as disabled sessions accumulate, but it’s better than killing the CEIP outright. Catch more at the end of the post.

Read More »

The release of Beta 1: a missed opportunity

posted on January 10, 2009 by Bryant Zadegan

bad7 Microsoft tossed Windows 7 Beta 1 live for public consumption yesterday. Unfortunately, inadequate planning led to servers which they were using for the release (likely hosted by Akamai, though it would look even worse if Microsoft hosted the bits directly) to collapse under pressure at least twice. This is an IT headache which, sadly, came at a terrible time for those involved (Lisa, don’t lay them off just over one mistake!)

However, this situation could have been handled in two far better ways. The first possibility would have been the bit torrent protocol. Given the ubiquity of torrent clients, this would have been a great way to get the bits into peoples’ hands fast. However, given that bit torrent is, unfortunately, automatically associated with piracy, Microsoft may have felt that using it would have legitimized the protocol’s existence, thus causing “problems” down the road for their anti-piracy teams.

Thus, bit torrent usage for distribution of Windows 7 Beta 1 would have been a Very Bad Thing™. However, this doesn’t mean Microsoft didn’t have another far more tantalizing tool up their sleeves. Keep in mind that Microsoft needed a

  1. cost effective
  2. internet scalable
  3. very fast file distribution solution

for distributing Beta 1.

Enter Avalanche. Let’s do a quick take on the first paragraph of Avalanche’s description, shall we?

The code-named research project “Avalanche” studies how to enable a cost effective, internet scalable and very fast file distribution solution (e.g. for TV on-demand, patches, software distribution). Such an approach leverages desktop PCs to aid in the distribution process, relieving congested servers and network links from most of the traffic.

Right. Obviously, Akamai, identified in part thanks to the wonders of 20/20 hindsight, hasn’t served its role as a “cost effective, internet scalable, very fast file distribution solution.” Avalanche, on the other hand (assuming proper implementation), would have worked perfectly given that Microsoft would have had a few “peers” online to kickstart the distribution (a fraction of the Akamai capacity it asked for). This was one of those times where Microsoft had a shot at implementing something absolutely wonderful but skipped on doing so for… well, nothing’s sake really.

Implementing Avalanche would have posed a solid number of benefits for Microsoft:

  1. A new protocol and application would have seen mass deployment across a solid number of computers.
  2. Microsoft would have reinforced their desired image as an “innovator” (using bit torrent has its benefits, but it’s hardly considered secure. The largest benefit to Avalanche is that peers have “zero-information of who has what,” which is certainly an innovation in its own right given the lack of privacy with the bit torrent protocol).
  3. Windows 7 Beta 1 would have been handed off to those wanting a copy far faster than the current direct download solution.

Maybe it was the piracy stigma associated with p2p technology, but a quick rewording of how Avalanche works would have solved this in the public eye.

In the end, it just seems as if Microsoft blew a great shot.

Update: Stebet points out that Avalanche did leave whitepaper status for the distribution of Visual Studio 2008 Beta 2, but it seems the client is no longer available for download.

A lesson on infinite loops

posted on January 3, 2009 by Bryant Zadegan

 quality assurance baby

 

Yesterday, I took a look at the varying perspectives taken with regards to the Zune 30 debacle. Today, I’ll take a look at what exactly led the Zune 30s to freeze. If you’d like to see the code for the entire driver, click here.

Below the fold lies a sufficiently sized code sample with everything you’ll need to understand what happened with the Zune 30 bug.


Read More »

The Zune 30 bug was overinflated

posted on January 2, 2009 by Bryant Zadegan

Zune Logo
(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.