Fixing Reliability Issues in IE8

In a previous post, Andy wrote about some of the new features we introduced to improve reliability in Internet Explorer, such as Loosely Coupled IE and Automatic Crash Recovery. These features help minimize the impact of reliability issues (such as crashes and hangs) once our users encounter them, allowing them to return to their original browsing state as soon as possible.

From an engineering perspective, our goal is to minimize the occurrences of these issues in the first place. In today’s post I’d like to walk you through the various approaches we use to identify, prioritize and address reliability issues in IE8. Each of these approaches covers different angles of the product and is equally useful in ensuring a reliable experience for different types of users.

End-user Feedback

Users are our greatest resource for feedback pertaining to reliability issues. We receive lots of information from our feedback channels about specific problems that users are experiencing. We also leverage Windows Error Reporting, which sends details of user-reported crashes and hangs back to Microsoft. The accumulation of these reports helps us understand overall browser reliability in customer environments and enables us to identify our top issues.

In last month’s post, I described how we used a failure curve to identify and fix reliability issues for IE8 on the Windows 7 Beta. We follow a similar approach when we ship a new IE release. Below you can see the failure curve for the top crashes and hangs caused by IE in the IE8 Beta cycle. The data is based on snapshots taken 50 days after each IE8 pre-release. The green bars indicate failures that have been fixed in IE8.

A failure curve typically shows that a small number of failures impact a large number of users. These are represented by the leftmost bars on the curve and are most likely crashes in mainstream scenarios. The issues in the “long tail” are generally encountered in specific hardware and software configurations. While these bugs are important to fix, we focus our efforts on the most impactful issues first and systematically work our way down the failure curve. The top remaining issues that are not addressed in time will be fixed and shipped to customers in future security updates. To date, we have fixed 80% of all the reported crashes and hangs in IE8.

Feature Testing

Reliability testing starts from the feature level and helps maximize product quality from the ground up. The owners for each feature run automation on their new code to identify and fix key stability issues. These people are also the most prominent users of their respective features, and would be able to encounter any issues that are not discovered via automation. Therefore, the majority of stability issues for a certain feature are identified and addressed during this phase.

In addition, teams leverage several mechanisms that scan through and identify potential faults in their source code, such as buffer overruns, memory leaks, or uninitialized memory. Many of these faults could have become top crashes and hangs in the public, but our teams work to fix the issues before they are even encountered internally.

Internal Product Usage

Amongst the IE team and other divisions throughout Microsoft, thousands of people are using the latest versions of IE8 every day. One critical benefit of this internal network is that we can work directly with the employee who encountered a crash to investigate and fix it quickly, often debugging directly into their machines.

Internal users send us crash and hang data through Windows Error Reporting as well. We use their data to fix the most impactful issues seen in recent builds. The shape of the failure curve generated via internal data can be a good approximation of what we see from the public as well.

For example, many of our internal users upgraded to the Windows 7 Beta build several weeks before it was publicly available. The data generated from the extensive Beta-testing allowed us to create a preliminary failure curve. We began to investigate a handful of crashes that were clearly the most impactful issues. By fixing these crashes ahead of time we stayed ahead of our failure curve, and were able to swiftly address the remaining issues after the Beta was released.

Lab Reliability Testing

To discover crashes in more far-reaching usage scenarios, we perform a series of tests on lab machines to continuously monitor for new issues in recent builds. We employ two common techniques often referred to as Stress and Long Haul testing.

Stress Testing Stress testing the browser is critical to identifying architectural bugs and other hidden issues. Our goal is to be able to stress-test IE8 for a defined period of time without interruptions. To measure this, we rapidly navigate to websites and perform user actions such as opening and closing tabs and windows. We hope to identify important issues that may not be seen from regular browsing behavior. Over the course of a day, it’s possible for our stress tests to navigate the same browser instance to over 100,000 web pages!

Long Haul Testing Part of our vision for IE8 reliability is to allow users to run IE for as long as they desire without interruptions. We devise different types of tests to simulate long term usage of the browser and measure how long the tests can run before experiencing a crash or running out of memory. We then engage with teams to get the top issues fixed as soon as possible. We also run tests to track memory consumption after long periods of usage.

Summary

Each of the above approaches has played an important role in driving reliability improvements in IE8. In fact, we are able to quantify these improvements using various tests and analyses, and compare our results to IE7. For example, we are now able to run stress tests continuously for over 12 hours on IE8, compared to less than 8 hours on IE7. Also, we found that IE8 uses up 90% less memory than IE7 after running continuously for 24 hours under Long Haul testing.

We’re convinced that our approaches to identifying reliability issues have generated significant stability improvements to IE8. We encourage you to try out Internet Explorer 8 today and send us your feedback. We rely on your collective feedback to determine the most important reliability issues to address in future releases. If you experience a crash or hang please be sure to let us know by submitting an error report.

"The data is based on snapshots taken 50 days after each IE8 pre-release."

to be honest, it doesn’t make sense to overlaps error reports from different builds.

Let’s imagine a scenario:

If your team introduces a frequently occuring bug in one pre-release, say, the one on left hand side of the chart, and you fix it in the next build.

This leaves you with a large amount of error reports which buries the actual long-existed problems.

Your "failure curve" failed to show the improvement between builds, and your statement on bugfix rate:

"To date, we have fixed 80% of all the reported crashes and hangs in IE8."

Is misrepresented in the chart, which implies 20% of the crashes are due to "infrequently appearing issues", so IE8, as opposed to the massive green bar in the chart, actually has a lot of bugs left in it.

Thus I question the statistical usefulness of "failure curve", IMHO its existance serves as a pretty marketing term.

"To measure this, we rapidly navigate to websites and perform user actions such as opening and closing tabs and windows."

I wish. I frequently have problems when I open tabs and try to type in the address bar of click a favorites bar link. My keystrokes are either missed, or it prompts me to open/save the .url file of my favorite. All bets are off when a tab is in the middle of its rather lengthy startup procedure.

I have Windows Vista Ultimate x64 SP1, and I don’t experience the issues you describe.

However, I also have Windows Server 2008 Enterprise x64 though, and the "Windows Explorer opening folders in new windows" issue does occur there… I wasn’t suspecting IE8 to be the problem, though indeed it first appeared after I isntalled it.

Right now it is weighing in at 1.5 Gigs. Changing pages does no good it just keeps eating memory. I use the RSS content feed capability and that eats so much more than IE7. How anyone could release such a terible iteration of a product is beyond me.

@kh: Neither of the tweaks you mention is currently recommended by the IE team.

The latter tweak disables the TCP/IP auto-scaling feature of Vista, which could result in *slower* performance rather than faster performance. If you’ve encountered specific sites where this improves performance, please let us know so that we can investigate.

Notice how the image starts off normal, but after a few seconds it starts to get slower, your CPU usage sky rockets, and then the animation starts tearing after each frame getting slower, and repeats.

I’ve searched through Google but I never really found a clear answer as to why this happens. Can anyone shed some light as to why this is happening, and if there is any way to fix the problem? Am I the only one having this problem?

I want to allow Flash contents in certain website so i used the "remove all site" in manage add-ons but the thing that i find annoying is that information bar keep appearing even when i choose to run Flash add-in the website. The flash works when i run the add-on in a website but the information bar keep showing up. Is that how it work normally? I thought that when allowing to run a flash add-on in a website it won’t show the information bar in the website anymore. I like the feature a lot and next IE version should have it more visible.

@hAl: I’ll reiterate– Neither of the tweaks mentioned is currently recommended by the IE team.

@ky: Can you explain a bit more about your scenario with Flash? What is the exact option that you choose in the Information bar? Also, when you say "The allow on all site list", what list are you referring to?

the problem is that the information bar may appear for an flash animation hosted on an external site i.e. different from the current site you’re. You’re on microsoft.com, the information bar appears and your intention is to authorize flash for microsoft.com, but the result you’ll authorize an external advertising site such as atdmt.com.

The problem is that the information bar don’t show the real site you’re attempting to authorize, and this is not really safe.

the problem is that the information bar may appear for a flash animation hosted on an external site i.e. different from the current site you’re. You’re on microsoft.com, the information bar appears and your intention is to authorize flash for microsoft.com, but the result is that you’ll authorize an external advertising site such as atdmt.com.

The problem is that the information bar doesn’t show the real site you’re attempting to authorize, and this is not really safe.

the problem is that the information bar may appear for a flash animation hosted on an external site i.e. different from the current site you’re. You’re on microsoft.com, the information bar appears and your intention is to authorize flash for microsoft.com, but the result is that you’ll authorize an external advertising site such as atdmt.com.

The problem is that the information bar doesn’t show the real site you’re attempting to authorize, and this is not really safe.

the problem is that the information bar may appear for a flash animation hosted on an external site i.e. different from the current site you’re. You’re on microsoft.com, the information bar appears and your intention is to authorize flash for microsoft.com, but the result is that you’ll authorize an external advertising site such as atdmt.com.

The problem is that the information bar doesn’t show the real site you’re attempting to authorize, and this is not really safe.

the problem is that the information bar may appear for a flash animation hosted on an external site i.e. different from the current site you’re. You’re on microsoft.com, the information bar appears and your intention is to authorize flash for microsoft.com, but the result is that you’ll authorize an external advertising site such as atdmt.com.

The problem is that the information bar doesn’t show the real site you’re attempting to authorize, and this behaviour is not really safe.

I thought the issue was within IE but I found out later that its actually a Hotspot Shield that is causing the information bar to appear constantly because of the Ads flash that belongs to the Hotspot shield.

When I said "allow on all site list" I’m actually refering to the "You have approved add-on to run on the following websites" list when clicking "More Information" in Manage Add-ons. Any Possibilities of keeping the website list when allowing add-on to run in all website or a option to save the list

Are you aware that Outlook Web Access (at least version from Server 2003) no longer works 100% correctly under IE8? This is a problem, as IE is the only browser that OWA worked with 100% in the past.

I’ve encountered numerous small problems, including that none of the paragraph formatting buttons in the compose new message window work under IE8; also IE8 warns about self-signed certificates for every new window that opens (not just when signing in to OWA.)

I understand these problems are likely the fault of Exchange; still, it would be nice if you could get Exchange 2003 (as it is still supported!) patched to work correctly with IE8.

It seems there is some problem with IE 8. I have a bookmark on favourite bar which is a frameset. If I click on this link to open the page I get ‘webpage cannot bo found’ on both frames of the frameset page.

This used to work fine with IE7. Can someone tell what might be wrong.

@EricLaw – "Neither of the tweaks mentioned is currently recommended by the IE team." – so what DO you recommend?

Installing IE8 broke Windows Explorer and SQL Server. Re-registering the DLL fixed them. I need those apps working to do my job. MS MVPs are also suggesting that fix. How long should 64-bit users have waited for you to recommend something?

The silence on these 64-bit issues is deafening. It would be nice if the IE8 team even admitted the bug exists. Nicer still would be a timetable for a patch.

hAl, is this really the first time you’ve met a snake-oil salesman, promising you a solution to your problems? This reminds me of my local computer shop, which used to sell a little "computer fixing elf" that you’d affix to the top of your computer. Put him there, and anytime you have a problem, just reboot and it’s fixed. Of course, the Troll did nothing, but the "cure" usually worked.

Stu, while everyone is chatting about this re-register the DLL thing, no one here knows what you’re talking about with this "64bit issues" nonsense. Why don’t you actually describe the problem in a useful way?

If I’m in the tab2 and I click on a link to open it in a new tab, the tab11 will appear after the tab10, but this is not comfortable because I have to move me to the end of list in order to reach the last tab.

Why the tab11 is not opened between tab2 and tab3 ? tab1, tab2, tab11, tab3,…

I have three computers running XP Pro Service Pack 3. I have installed IE 8 on two of these systems and on both the "Toolbars" have a translucent background which means I can not read the text below the icons but you can see the information on the page behind the one you are viewing. I am not got to install IE 8 on the third computer untill this issue is resolved.

I have read at least a thousand MS information documents and both computers are up-to-date with Windows Updates.

Ok I’m getting really annoyed with the IE Accelerator icon popping up all over the place in my web application(s).

I don’t want to restrict my end users from being able to search for related stuff or map things, but there are many places where this accelerator stuff just does not belong – AT ALL.

for example, we have a column of checkboxes in a table similar to any web mail client you may have seen. As the user scrolls down checking the boxes they inevitably start a drag action which highlights a checkbox rather than checking it.

Then IE8 pops up an accelerator icon.

Why would anyone want to Map/Translate/Bookmark/Search/Blog or Email the non-existent content currently selected?

Highlighted Text? – Sure, totally justified

Highlighted Image? – Hmmm, ok its a judgement call

Highlighted FormField with no text content? – No. There is absolutely no use for this.

So my question is:

a.) How do I disable it for a given element (e.g. the TD that wraps my checkbox)

b.) How do I disable it for a whole page?

(e.g. there are just some pages that really have no use for this feature)

Jace, if you look at the date on that article, it’s pretty clear that it was written long before IE8 came out. If the IE team isn’t recommending you do that, you might want to take that into consideration.

It sounds like you’re having some pretty crazy problems I’ve never heard of… the "entering text backwards" thing is pretty funny!

rep, you must have an odd sense of humor. The idea that some software vendor /isn’t/ tracking crashes is a scary one. The fact that Microsoft does should not be surprising in any way.

Sayied, line 144 of that file calls window.external.BuildNewTabPage(). If that function is missing, it suggests your IE8 install might be corrupted. Have you had any other problems with IE? Have you followed any troubleshooting steps suggested by others?

Sayied, you might also want to try running in No-Addons mode to see if that makes the problem go away. It’s possible that one of your addons (e.g. "FDM"?) is causing the problem by taking over the window.external object.

Running IE8 on XP in compatibility mode to view a website with an animated gif results in slow animation, high cpu spike (single thread max cpu usage) and on my laptop, eventually overheating the GPU. Nice. Same page in FF3 runs very low CPU and no noticeable GPU temp increase.

I wonder how this type of issue makes it to a final product. Rapid release schedule? Internal decision to ‘encourage’ the adoption of silverlight for web graphics? 😀

@Eric – I’ve sent an NFO file through to you, with a couple more to follow over the next few days. Hopefully they will help you triangulate in on this issue. If the email doesn’t get through, let me know and I’ll arrange an alternate method of delivery.

What IE8 needs is a decent help file. What’s included is utterly useless. Example: ADVANCED tab in Internet options: what does each item do? There are TONS of options. Clicking the help icon, I thought, was supposed to show context-sensitive help. Instead, it opens the help file and shows this helpful bit: "The Advanced tab contains settings for various Internet Explorer options, organized by category." DUH! How hard can it be? Why bother putting in anything at all??

What IE8 needs is a decent help file. What’s included is utterly useless. Example: ADVANCED tab in Internet options: what does each item do? There are TONS of options. Clicking the help icon, I thought, was supposed to show context-sensitive help. Instead, it opens the help file and shows this helpful bit: ‘The Advanced tab contains settings for various Internet Explorer options, organized by category.’ DUH! How hard can it be? Why bother putting in anything at all??

jeff, clearly you’re new here or don’t know much about IE8. The feature you’re slamming has been in the public product for over a year, including 3 public pre-release versions.

If you (the user) wants to turn off Accelerators altogether, use the option in Tools / Internet Options / Advanced.

As for the idea that websites should be able to turn this off– why? I think the user should be in control of their browser. We all know what websites will do if they can prevent the use of services provided by others– they’ll do so! They’ll turn off Accelerators and provide their own (crappy) equivalents, forcing the user to use only that company’s services. That would be lame.

hAl, Sounds like Sophos needs an update to deal with the real world. TONS of legitimate programs use multiple processes for legitimate reasons. Of course, what do you expect? Such programs are DELIBERATELY noisy, otherwise users won’t pay for them! Those programs must convince the user that they’re not safe without them, which is why they freak out about cookies and things like this…

On March 19, 2009 I have installed the final version of IE8 on my Windows XP Professional SP3 (Dell Inspiron 6400 laptop). Please note also that the SP 3 was installed AFTER I previously installed IE7 (due to the fact that, chronologically, Microsoft has first released the IE7 and then the SP3). Anyway there was no noticeable difference in terms of browsing speed and moreover IE8 seemed to me too sophisticated. So I decided to uninstall it. THIS was the START of my problem. After I uninstalled IE8 the system reverted to an IE7 that was totally non-functional (hang-up / freezing-up a few seconds after it opened the home page of my browser – http://www.microsoft.com).

I tried everything: uninstalling and reinstalling IE7, to uninstalling and reinstalling SP3 (both in normal and safe mode) even under the guidance of a representative of Microsoft support representative in Romania to whom I have granted remote access to my laptop. The same negative result was obtained when, as suggested by the same Romanian Microsoft Support representative I uninstalled the Norton Internet Security 2009 and the Spybot Search and Destroy and I even performed a repair install of my Windows XP professional. Everything was in vain tough.

I should mentione that currently I am able to browse the Internet using IE6 with SP3 and all related Microsoft updates installed.

After doing and extensive research on the net among other things I found out this IEBlog and this article on “IE and Windows XP Service Pack 3 ” blogs.msdn.com/ie/archive/2008/05/05/ie-and-xpsp3.aspx . After reading this article I am wondering whether IE8 has installed also a file that blocks the normal reverting to a functional IE7, after uninstalling IE8. I am wondering this due to the fact that when reinstalling IE8 this is working fine.

ie8 is different from ie7 in sound mixer/manager in vista in the bottom of the right corner. There are in ie8 no names for each tabs og webpage. In ie8 it says "internet explorer". So if you want to turn off sound for a specific webpage you have open it is pretty difficult.

Please fix ie8 so names in sound mixer/manager in windows vista are visible so you can tell them apart.

ie8 is different from ie7 in sound mixer/manager in vista in the bottom of the right corner. There are in ie8 no names for each tabs og webpage. In ie8 it says "internet explorer". So if you want to turn off sound for a specific webpage you have open it is pretty difficult.

Please fix ie8 so names in sound mixer/manager in windows vista are visible so you can tell them apart.

I’ve been using IE 8 (8.0.6001.18702). My biggest problem seems to be that whenever I go to a site that pops up a new window when you click on a link, I’ll get an error msg and if I follow it as help, it tells me that it’s a DEP error.

Hi, i’m running into some serious problems with the latest version of IE8 on Windows XP Pro. Before getting to that though i’d like to comment that the RAM usage from multiple tabs is truly horrendous compared to IE7. In IE8, I currently have 10 tabs open and it is using 700mb of RAM. 700/10 = 70mb per tab. Previously in IE7, I would sometimes have 40-50 tabs open with only 300mb of RAM used. 300/50 = 6mb per tab. A 12x inrease in the RAM usage by a tab seems unacceptable to me for an upgraded IE, even if it does prevent a crash from claiming all tabs as victim.

With that said, the issue i’m running into seems to be a sort of memory leak. It was a problem I had in IE7 and unfortunately still seems to be a problem in IE8, only magnified. I tend to open a lot of forum posts in new tabs to read them, and i’ve noticed that when I close these newly opened tabs, a big chunk of the RAM they were using is not restored.

As an example, I just opened 4 new tabs by clicking links on a forum, and I then promptly closed them all. My available RAM before opening the tabs was 384MB. After closing the tabs, it is 356MB. The RAM is gradually eaten away during the day like this until it gets below 100MB. I can usually tell when this occurs as the computer gets sluggish. If I then close the IE window with the tabs in it and then reopen them all as they were before (now only possible to do now with End Task in IE8 and then restore), the available RAM will jump back to 400MB.

ie8 is different from ie7 in sound mixer/manager in vista in the bottom of the right corner. There are in ie8 no names for each tabs og webpage. In ie8 it says "internet explorer". So if you want to turn off sound for a specific webpage you have open it is pretty difficult.

Please fix ie8 so names in sound mixer/manager in windows vista are visible so you can tell them apart.

I have the following problem when running IE8 on Vista. I have a parent window that opens a new window (window.open) and the new window is automatically minimized. If we try to do a window.focus() on the new window, it does not make it the active window. Any suggestions would be appreciated.

This falls in the realm of suggestion. The Automatic Crash Recovery feature is exceptionally nice.

I wonder why, though, you have to actually crash IE8 to get its functionality? I regularly have a number of IE windows open, each with sets of tabs for projects I’m working on. I’d like to preserve the browsing history etc. on each, just like ACR.

But the only way I’ve discovered to do it is to kill IE8 in Task manager; and that only lets me save one set. When you start the next browse, it asks if you want to recover the last "session" but if you go to create a "session" it only opens up a single new browser instance. You can get the last tab set, but again, only from the "last" instance closed.

Quick followup – I just saw Mark Adams April 12 post that brings up the subject I addressed. But I’d also like to mention that the issue of excessive memory consumption is one of the reasons I have to kill IE8 – do that and then session-recover the browser windows will bring back a ton of memory.