Sometimes, an app just wants to crash

Date:December 19, 2003 / year-entry #170
Orig Link:
Comments:    14
Summary:I think it was Internet Explorer 5.0, when we discovered that a thirdparty browser extension had a serious bug, the details of which aren't important. The point was that this bug was so vicious, it crashed IE pretty frequently. Not good. To protect the users from this horrible fate, we marked the object as "bad"...

I think it was Internet Explorer 5.0, when we discovered that a thirdparty browser extension had a serious bug, the details of which aren't important. The point was that this bug was so vicious, it crashed IE pretty frequently. Not good. To protect the users from this horrible fate, we marked the object as "bad" so IE wouldn't load it.

And then we got an angry letter from the company that wrote this browser extension. They demanded that we remove the marking from their object and let IE crash in flames every time the user wanted to surf the web. Why? Because they also wanted us to hook up Windows Error Reporting to detect this crash and put up a dialog that says, "A fix for the problem you experienced is available. Click here for more information," and the "more information" was a redirect to the company's web site (where you could upgrade to version x.y of Program ABC for a special price of only $nnn!). (Actually I forget whether the upgrade was free or not, but the story is funnier if you had to pay for it.)

In other words, they were crashing on purpose in order to drive upgrade revenue.

(Astute readers may have noticed an additional irony: If the plug-in crashed IE, then how could the user view the company's web page so they could purchase and download the latest version?)

Comments (14)
  1. (6) says:

    You’ve got to admire their ingenuity and bare-faced cheek though :) So what did Microsoft do? Did they continue to treat the plugin as ‘bad’?

  2. Andy says:

    well normally you’d just open a new webpage and hopefully their app wouldn’t crash ie before you reached the home page.

    I must admit i’ve yet to have been told a crashing feature has been fixed when i send the report to MS and was wondering if it was just a PR exercise /cynic

  3. AlisdairM says:

    Many years ago I purchased a game for my PC (OK, I purchases many games, but this story only refers to one of them <g>) that crashed and burned every time we got past the introductory level.

    When we got around to complaining (Brits can be so slow sometimes) we were told this was a feature intentionally designed as an antipiracy measure. Registered customers would of course be sent the patch, so if we were registered customers we would have nothing to complain about… [This in the days before internet was commonplace, so patch had to be physically mailed out]

    Not impressed.

    Last game I bought had a bug in the copy protection, so that it simply refused to run on my PC. So I turn to the web, and find this is known problem and a patch is available online to those loyal US customers. Clearly anyone from another country is a nasty pirate and doesn’t qualify, and should contact their local representative (if they can find one) during office hours to see about being snail-mailed the patch. This was last year, when I really would expect internet distribution for a critical bug (such as cannot start app!)

    Suffice to say, I intend never to buy a product from this second company again. Intentional bugs to ‘persuade’ us to register may be a nice idea in the boardroom, but it is hard enough to make a modern complex program bug-free as it is without intentionally breaking it! This sort of abuse is self defeating in the long-run (although I suspect any exec trying the policy will get a pat on the back and promote himself out of harms way before the repercussions hit :¬ (

    I hope MS told the mystery part where to draw the line, and in no uncertain terms.

    [Just as I’m sure others try to tell MS all the time ;¬ )]

  4. Raymond Chen says:

    Andy: Your crash report is sent anonymously so we have no way to contact you even if we wanted to. I have myself fixed quite a few crashes that were sent in via Windows Error Reporting. Debugging from crash dumps is quite a challenge: You have no information as to what the user did to trigger the crash.

  5. asdf says:

    Raymond, since you have more success reporting MSDN doc errors, how about you report this one for me:

    GetIconInfo cannot take any system cursor resource constants (IDI_ASTERISK, IDC_ARROW, etc.) as the first parameter (contrary to what MSDN says).

  6. Raymond Chen says:

    Okay, I just checked. Those values work only on Windows 95/98/Me. Somehow somebody noticed this and decided to documented this behavior, even though it’s platform-specific.

    This is a common trap. Something works on one OS so people assume it works on all OSs. It’s sad that sometimes people at Microsoft fall into the same trap.

    I suspect this is how this error got in: Somebody "discovered" that icon numbers worked as faux icons on their Windows 95/98 machine and said, "Wow this is cool, I’d better tell the doc people to mention it" without checking first with the API owners that the behavior they were seeing was in fact intentional. (In this case, it was merely an artifact of the Windows 95/98 parameter validation layer.)

    So consider this a lesson to all you folks hunting for and relying on undocumented behavior and then demanding that Microsoft document the undocumented behavior. A mistake like this slips through and everybody loses.

  7. Jordan Russell says:

    Speaking of MSDN docs, would you happen to know if this scary-sounding note in the remarks for QueryPerformanceCounter() is still valid for today’s machines and operating systems?

    "On a multiprocessor machine, it should not matter which processor is called. However, you can get different results on different processors due to bugs in the BIOS or the HAL. To specify processor affinity for a thread, use the SetThreadAffinityMask function."

  8. Raymond Chen says:

    I don’t know whether BIOS and HAL vendors have fixed all their bugs. That note sounds like a "People keep reporting bugs in QPC but each time we investigate, we trace it to a bug in the BIOS / HAL, so it’s not our fault."

  9. Windows Update has a new driver for the NVIDIA GeForce FX 5200. After installing it and opening display properties again, the display applet properties crashed and sent reports to Microsoft.

    The error reporting tool said that a fix is available. The error reporting tool said that there is a known bug in a QuickTime player and I should go to Apple’s web site for support.

    Even though QuickTime has never been installed on this computer, and no Apple software has ever been installed on this computer. (Not that I have any particular grudge against Apple, since I even use a graphical interface that was copied from Apple’s copy of the inventions of a famous copier company.)

    Anyway, so much for the error reporting tool and for pretending that there are fixes available.

    The correct fix was to rollback the display driver to the one that came preinstalled with Windows XP SP1.

  10. Raymond Chen says:

    So the automatic crash diagnosis isn’t perfect. Even humans have trouble diagnosing a crash. Apparently the NVIDIA crash looks enough like a Quicktime crash that the tool got confused. Sorry.

  11. mule says:

    Upgrade to Mozilla?

  12. Patrice Villeneuve says:

    Raymond, can you just tell me why Microsoft doesn’t have bug report desk ???

    I have report a few bug in Visual Studio 6 since it exist… (I know, Microsoft doesn’t develop it anymore) but still, I report a bug in VS6 like 4 or 5 years ago… still not fixed and I show the representative an exact wy to reproduce it… The first bug I succeed sending to them, they got it fixed 2 years later… so I still wonder… why isn’t some report bug desk?

  13. Raymond Chen says:

    Everything sent to

    gets read. There are many reasons why a reported bug might not get fixed. For example, it might not even be a bug but rather a misunderstood feature.

Comments are closed.

*DISCLAIMER: I DO NOT OWN THIS CONTENT. If you are the owner and would like it removed, please contact me. The content herein is an archived reproduction of entries from Raymond Chen's "Old New Thing" Blog (most recent link is here). It may have slight formatting modifications for consistency and to improve readability.

WHY DID I DUPLICATE THIS CONTENT HERE? Let me first say this site has never had anything to sell and has never shown ads of any kind. I have nothing monetarily to gain by duplicating content here. Because I had made my own local copy of this content throughout the years, for ease of using tools like grep, I decided to put it online after I discovered some of the original content previously and publicly available, had disappeared approximately early to mid 2019. At the same time, I present the content in an easily accessible theme-agnostic way.

The information provided by Raymond's blog is, for all practical purposes, more authoritative on Windows Development than Microsoft's own MSDN documentation and should be considered supplemental reading to that documentation. The wealth of missing details provided by this blog that Microsoft could not or did not document about Windows over the years is vital enough, many would agree an online "backup" of these details is a necessary endeavor. Specifics include:

<-- Back to Old New Thing Archive Index