IE8 and Loosely-Coupled IE (LCIE)

IEBlog The Windows Internet Explorer Weblog

IE8 and Loosely-Coupled IE (LCIE)

  • Comments 55

Hi, my name is Andy Zeigler, and I’m a Program Manager on the Internet Explorer Foundations team. I’d like to tell you about a new IE8 feature called Loosely-Coupled IE, or LCIE for short.

Essentially, LCIE is a collection of internal architecture changes to Internet Explorer that improve the reliability, performance, and scalability of the browser. It also paves the way for future improvements in other areas, including security and usability. To do this, we’ve

isolated the browser frame and its tabs and changed them to use asynchronous communication between components.

In this post, I’ll walk you through the changes we’ve done in IE8 Beta 1.

You may have noticed that computers come pre-loaded with all sorts of software. While a lot of this software is useful and works well, some of it, including IE add-ons, can crash and interfere with your browsing experience. Internet Explorer 3rd-party add-ons are COM-based, which enables developers to write high-performance add-ons with powerful features. This also means that IE and running add-ons share the same process and memory address space, so when an add-on crashes, it causes the whole browser to crash. According to an analysis we did of our Windows Error Reporting data, over 70% of all IE hangs and crashes are caused by 3rd-party add-ons. We work closely with software vendors of the most frequently installed IE add-ons to help improve the quality of their add-ons. However, due to the large number available add-ons, it is difficult to provide outreach to every developer.

The IE Process Model

Part of what we’ve done with LCIE is to split the frame from the tabs, and allow them to function more autonomously. As a refresher, here’s a somewhat simplified view of the IE7 process model:

IE7 Process Model Diagram

In the IE7 model, each browser window (UI Frame) usually has its own process. There are a couple of exceptions. For example, if you press ctrl-n to open a new window, IE creates a new UI frame in the same process. The tabs, toolbar extensions, browser helper objects, and ActiveX controls all reside in the same process as the browser window. The problem with this model is that a single access violation, stack overflow, or any other type of failure will cause your entire browser, and all its tabs, to crash.

Below is a diagram of how we’ve changed the process model in IE8:

IE8 Process Model Diagram

There are a number of notable changes here:

  • Tabs are isolated from the frame, and are located in separate processes
    This gives IE the opportunity to isolate many failures to the tab process, thereby reducing the amount of damage done to the rest of your browsing session.
  • The frame and the broker object are located in the same process
    This is a win for startup performance. The broker object is responsible for examining a URL, and determining if it should be loaded under Protected Mode or not, and launching IE at the appropriate integrity level. We no longer have to wait for the protected mode broker object’s process to startup before loading the rest of the browser.
  • Low and Medium integrity tabs can reside in the same UI frame
    The Windows Integrity Mechanism operates on a per-process basis. Now that we can place tabs into their own processes, we can turn Protected Mode on or off on a per-tab basis. This is a big usability improvement. You no longer need separate browser windows to view sites in and out of protected mode.

See LCIE in Action

Although these are all internal architecture changes, you can see their effect in a few different ways.

For example, on a computer running Windows Vista, open Internet Explorer, browse to some websites, and then open an HTML page from your computer’s hard disk. Notice that the page will open in a tab in the same window, alongside the tabs that are already there. Previously, we would have shown a dialog that said, “Internet Explorer needs to display this webpage in a new window”. This is because Internet files must run in Protected Mode, and local files must open outside of Protected Mode, and a single process runs with only one integrity level. With LCIE, we simply create two tab processes: one with Protected Mode on for your Internet files, and one with Protected Mode off for your local files.That dialog box is history!

We also have a new feature called Automatic Crash Recovery that uses tab isolation to recover from crashes in a really new and exciting way. I’ll be blogging about that shortly.

Thanks,

Andy Zeigler
Program Manager

Edit: first image updated; enhanced explanation added in "See LCIE in Action" section

  • Does this mean that if an addon crashes in one tab that the other tabs remain open? Or you restart the browser and try to recover the session anyway.

    I have seen ie8 go down as a whole and then recover the tabs. So it was either caused by an ie bug (not an addon) or you really always restart the browser and recover the tabs?

    Nice work anyway. I heard a lot of people complaining that FF crash recovery is cool. Yours is now cool too.

    If the tabs are in separate processes why do we need to restart all ie windows when changing "emulate ie7" state?

  • Have you any information on IE8 webbrowser control in general or related to this topic ? There is no information for IE webbrowser control since IE7 from you guys.

    Are you not allowed to talk about IE COM Interface ? Do you still support this interface for IE in the future or not ?

    I've evaluate the (piece of sh*t).NET wrapper for IE, and still waiting for something better.  

    .NET politics is so stupid, as you can see it with Windows Vista. Lessons learned, now give us a new IE8-COM control !

  • How does the change in the process model affect the security of the browser or the browsers ability to maintain the security of the desktop?

  • If each tab is a separate process, shouldn't each process in the second diagram have only one single tab?

  • Great, the browser is ready to recover gracefully from bad add-on crashes! Now that it's safe to open the floodgates to potentially poorly-written add-ons, can we have some way to write managed code add-ons for the browser? I'd be happy with a supported shim from Microsoft (like the pre-VSTO Office add-in shims)! C'mon IE team, the time has come.

  • If the tabs are in separate processes why do we need to restart all ie windows when changing "emulate ie7" state?

    thats a vary good and well said ? i been wanting to no that too evere time i hit the emulate ie7 it dos not work for me  like why have some in if it dos not work?

  • Can we make a tab run under a separate process if we want (or a specific domain)?

  • @Mirronelli

    yes, if a tab crashes, the other tabs remain open

  • I would also appreciate to get some information about a IE8 webbrowser control in NET Framework. With IE8 Beta 1 installed, .NET 2.0 SP1 still uses the IE7 engine for rendering at the moment.

  • I see a nice feature linked tot that in my IE8 on XP.

    While displaying the page http://tirania.org/blog/archive/2008/Mar-10.html it crash the tab (due to the google javascript on the right, as it also crash if i extract the code), then restore it, crash again.

    ... And then it give up with the message "Internet Explorer has stopped trying to restore this website. It appears that the website continues to have a problem" and doesn't enter an infinite loop.

    Nice (but the crash isn't).

  • virtualblackfox: I like how it's the website that "continues to have a problem", and not IE. :p

  • Where is the list of known bugs in IE8 beta 1?

    I want to file some bug reports but I can't find the list of "known issues" and I obviously don't want to waste any time filing dups.

    Also when I try to log in to post a bug report in Connect I can't.  It only shows me the bugs already entered, there is no link to add a new one, what gives?  I thought this was the public bug tracking tool?

    rich

  • > You may have noticed that computers come pre-loaded with all sorts of software

    I think you mean “Windows computers”.

    > a lot of this software is useful and works well

    Ha ha ha ha! Aw, you guys.

  • When debugging an ASP.NET project with Viusal Studio 2008, IE8 Beta 1 always tries to restore the tab I am debugging.

    Can this feature be turned off during debugging?

  • In a more polite way than IEdude, I'd also like to request information on how current client-developers using the WebBrowser control will be affected by IE8. I know a lot of things may still be up in the air, but *our* product depends on *your* product so we need plenty of advance notice to test it.

Page 1 of 4 (55 items) 1234