Opening a New Tab may launch a New Process with Internet Explorer 8.0


Hi everyone!

Shahinur again, with an IE8 topic this time…

If you have been using IE7, you are probably used to all your tabs opening under the same iexplore.exe process. The only exception is if you are on a Windows Vista machine and you are moving from Protected to Unprotected mode.

Internet Explorer 8 had a big makeover in this area. You will now notice that new tabs typically open in a new process.  By default,  IE8 will start with two instances of iexplore.exe (one for the Frame, one for the tab) and grows the number of tab processes as needed based on the amount of available RAM, the number of tabs, the integrity levels for tabs, and the number of distinct IE sessions .

You do have control over this new design through a registry key:

HKCU\Software\Microsoft\Internet Explorer\Main – TabProcGrowth (string or dword)

Tab Process Growth : Sets the rate at which IE creates New Tab processes.  There are two algorithms used by Internet Explorer.

1. Context-based: By default, the context-based algorithm is used and the curve is chosen based on the amount of physical memory on the machine. In addition, the TabProcGrowth string registry value may be manually forced to:

  • small: Maximum 5 tab processes in a logon session, requires 15 tabs to get the 3rd tab process.
  • medium: Maximum 9 tab processes in a logon session, requires 17 tabs to get the 5th tab process.
  • large: Maximum 16 tab processes in a logon session, requires 21 tabs to get the 9th tab process.

2. The “Max-Number” algorithm: This specifies the maximum number of tab processes that may be executed for a single isolation session for a single frame process at a specific mandatory integrity level (MIC). Relative values are:

  • TabProcGrowth=0 : tabs and frames run within the same process; frames are not unified across MIC levels.
  • TabProcGrowth =1: all tabs for a given frame process run in a single tab process for a given MIC level.

Note: On Terminal Server, the default value is the integer of 1.

  • TabProcGrowth >1: multiple tab processes will be used to execute the tabs at a given MIC level for a single frame process. In general, new processes are created until the TabProcGrowth number is met, and then tabs are load balanced across the tab processes.

Note: that the frame process is no longer allowed to execute at low-MIC. If this is attempted, the process will exit.

You may select the Max-Number algorithm by specifying the registry value as an integer. The registry value may be a string value containing an integer (eg, “5”) or a DWORD value containing an integer (eg, 5).

In general, you have to restart IE to use a different TPG value.

The above changes in design are a result of our new Loosely Coupled IE (LCIE) framework. LCIE separates the frame and tab code to the point they can be run in different processes. You can read more about it in the following blog.

The most obvious value of doing this is to increase reliability of IE; that is, even if a tab (process) crashes, IE (the frame) survives, along with any tabs that were in other tab processes. The second benefit of frame/tab separation is to enhance the Low Rights IE (protected mode) experience and security. Because tabs run in other processes, we can “unify the low and medium IL” frames into a single frame. As a result, we no longer have to open new frame windows to move from protected to unprotected mode. Further, infection of a given tab process is more isolated from the frame and other tab processes.

That’s all for now!

Thank you,

The IE Support Team

Comments (28)

  1. Dillon says:

    Loosely Coupled IE (LCIE) sounds good but somehow cause an issue with Visual Studio .NET 2003 in debugging mode.

  2. hexaae says:

    Have to test if this solves the sporadic crashes like this (even with add-ons disabled):

    Firma del problema

    Nome evento problema: APPCRASH

    Nome applicazione: iexplore.exe

    Versione applicazione: 8.0.6001.18702

    Timestamp applicazione: 49b3ad2e

    Nome modulo con errori: mshtml.dll

    Versione modulo con errori: 8.0.6001.18702

    Timestamp modulo con errori: 49b3aeb3

    Codice eccezione: c0000005

    Offset eccezione: 000a25c6

    Versione SO: 6.0.6001.2.1.0.768.3

    ID impostazioni locali: 1040

    Informazioni aggiuntive 1: fd00

    Ulteriori informazioni 2: ea6f5fe8924aaa756324d57f87834160

    Ulteriori informazioni 3: fd00

    Ulteriori informazioni 4: ea6f5fe8924aaa756324d57f87834160

    Ulteriori informazioni sul problema

    ID bucket: 1183185906

  3. aerobuldozer says:

    about my problem

    about my problem

  4. Carl Thompson says:

    I use IE8 with Windows XP.  I have a real performance problem when I click on a hyperlink, open or close Tabs.  The CPU usage goes to 100% and the explorer.exe and the multiple iexplore.exe processes (usually 4 or 5) all start using CPU.  They are all at 00, but will quickly jump to a combined total of 100 if I click on a hyperlink.  It takes sometimes 3-5 minutes to open the hyperlink in a new Tab.  Additionally, they jump when a Tab is closed and stay at 100 for about 40 seconds; similarly jump to 100 when a Tab is closed for 50 seconds.  Right now I have 6 Tabs in 2 windows with 5 instances of iexplore.exe running.  Turning off add-ons had no effect.  I would appreciate your help on this.

  5. Visual Studio .NET 2003 and Visual Studio .NET 2005 have the same problem.

    try the following..

    In the RegisterKey go to

    HKCUSoftwareMicrosoftInternet ExplorerMain

    ADD DWORD with the name TabProcGrowth and set the value to 0

  6. Link says:

    Apparently IE8 doesn’t support "run as" that is to say running IE8 as another user, without having TabProcGrowth set to 0.

    I would prefer to be able to separate my browsers and run them under different user accounts without having to keep using fast user switching. BTW would also be nice if I could have them use different colour schemes for the titlebars etc.

    This way I can have one browser instance for banking, and another for my regular sites, and yet another browser instance for less trusted sites.

    As it is, I am sticking with IE6 because it seems IE8 does not support this well.

    Might be just coincidence but I’ve experienced two XP computers that had IE7, and for some reason fast user switching often does stops working on them (can’t enter password – have to use ctrl-alt-del as workaround). So I’m sticking to keeping my "old" stuff patched and not moving to the new stuff yet.

  7. Link says:

    Ah the "can’t enter password" problem I was talking about was this one:

    http://support.microsoft.com/kb/917556

    No fix even after 3 years though (people have been complaining about it for years).

  8. Simon Hawkin says:

    An unpleasant side effect of this innovation is that older versions of Developer’s Studio do not attach a debugging process to the browser. Setting dword TabProcGrowth  to 0 fixes it, however (1) this information is somehow hidden from developers (I had to do a web search; found a solution at http://weblogs.asp.net/abdullaabdelhaq/archive/2009/06/01/VS-Debug-Problem-with-IE8.aspx); (2) this change affects the behavior of all instances of the browser, not just the one that the debugger is working with.

  9. Keith Caravelli says:

    "Loosely Coupled", I struggle to find something positive to say about IE 8.  I am a Microsoft kinda guy.  I’ve been with you guys since NT 3.51.   SharePoint MCTS etc.  IE 8 is just not stable. It crashes when I get more than a handfull of tabs open.  With Firefox I never have trouble.  Why is it that IE 8 can’t handle more tabs.  I am on a dual proc PC with 3 gigs of ram and just Onenote and Outlook running. Even when I close those two down it still gives me fits.  Very hard to work when I am researching through tech articles and trying to find answers.

  10. Harro Schoon says:

    I do agree with Keith Caravelli. If i have only one instance of IE open, with a few (3) tabs and i open another tab IE8 crashes. It’s very anoying when i am making a service call for a customer and i have to open a new tab and IE crashes… i am all my text in the service call is lost

  11. Gaffer says:

    Note: On Terminal Server, the default value is the integer of 1 for TabProcGrowth is incorrect.

    On a windows w2k3 sp2 system fully patched till november 2009 IE8 still creates an extra process. The value does not exist. After creating the value it does function correctly.

  12. dee says:

    If a person is not a programmer most of the information here makes no sense.

    I do not know what a "new process" means.

    I use multiple tabs to support my work- this really _____.

    That spot was for a bad word!!!

    Can we go back to IE7 or any pervious version and still use windows 7 which I love except for IE8.

    Help

  13. Richard Maher says:

    Can I implore you/Microsoft  to introduce a more End-User Friendly API to the TabProcGrowth parameter as soon as possible! User-Preferences in the browser would suffice and if LCIE was turned off by default then tha’d be a real bonus.

    Cheers Richard Maher

    Who has some truly amazing Applet infrastructure with Static Variables providing SSO and a single, persistent, authorized Socket for any number of tabs in an "application" and is quite miffed about one process and JVM per tab 🙁

  14. Nate says:

    Why isn’t there an interface to configure this within the IEAK?

    What I can see under Additional Settings -> CustomSettings -> Advanced Page there is only the option to configure "Set Tab Process Growth" to Low, Medium, or High (which doesn’t correlate with the language that you use) and I can’t configure it to 1.  And yes I see that there is also an Advance Page (Machine) area to configure.  Both are currently set to Medium.

    So instead, I have to wrap my branding installation package with another script so that I can make the necessary registry changes all from the same delivered package.

    Can this setting be applied under HKLM instead of HKCU? Looking at the custsec.inf file from a branding package shows that a TabGrowthProc registry value is getting set to Medium under HKLM, but nothing for HKCU. So which one has precedence?

    I must say that the IEAK is one of the worst pieces of garbage that Microsoft has continued to produce.  And GPO’s aren’t the answer either, since they either scatter the settings all over the place, allowing some to be preferences while forcing others to be policies.

    Please step up to the plate and start offering a "true" IEAK, Microsoft.

  15. Homi says:

    I have IE8 in windows 7 Pro. when i open any mail site such as gmail or hotmail in the first tab is fine… when i open new tab and enter the URL gmail again for a different user. it gives me the same user automatically logged in. very imitating pls help.

  16. Homi says:

    I have IE8 in windows 7 Pro. when i open any mail site such as gmail or hotmail in the first tab is fine… when i open new tab and enter the URL gmail again for a different user. it gives me the same user automatically logged in. very irritating pls help.

  17. Kurbycar32 says:

    While accessing a secure website on a terminal server using IE8 any links that open a new window may ask the user to log in again and never actually open the link creating a loop.  think logging in to a secure site and trying to open a bill statement in a pdf window.  Since this is a per user setting making the registry change isnt practical, theres a group policy though:

    User ConfigurationAdministrative templatesWindows Componentsinternet explorer: "Set tab process growth"

  18. Mulukutla says:

    I have added DWord TabProcGrowth = 0. Becuase of that I’m able to debug my VS applications, But getting an issue of Internet access. I’m not able to sruf the net in other new windows. If I removed TabProcGrowth, I’m able to sruf the net but issues with VS application debugging. Please helpme out for the issue.

  19. RossDos says:

    I think we have a Loosely-Coupled IE Support Team and End User interface here.

    This is an IE bug, fix it so we all get on with our lives.

  20. C Wayne says:

    Keith and Harro,

    Are you sure the issue is IE8 and not an add-on?

  21. C Wayne says:

    RossDos,

    I agree completely. This also affects the save as dialog box.  You keep having to restort to the Recent Places location to find the folder need to save to.

  22. lan says:

    The bloat caused by multiple IExplore.exe consuming all my memory kills my computer to where I have to reboot. Is there a "no-bloat" version of IE avaialble?

  23. Ishenly says:

    YES!, I put TabProcGrowth to (i.e.) 8, and recovered multi-process featuring (having opportunity to kill one tab separatelly).

    I lose this capability (run only 2 process for many tabs) after reinstalling and reinstalling IE8, because IE8 go wrong. When I see registry, no TabProcGrowth exists, then I create and done.

    PS: I have WinXP.

  24. Alain says:

    Is there any configuration tips to be sure that IE (6, 7 and 8) creates a new HTTP session when adding a new tab or opening a new window ?

    We are using IE for an intranet application. We don't care about performance issue because we only need 2 separate sessions.

    Regards

  25. josephbrown012 says:

    Thanks for this post, i will try that.

  26. Jaan says:

    With TabProcGrowth parameter situation is much better but ca 20% cases are still broken – in our case smartcard pin dialog appears behind IE window. Anyone with same experience?

  27. ella mae urmatam says:

    why i can not assist to the internet explorer.so i can not open of any website

  28. DK says:

    We are using IE 9 for a WebApp. the multiple processes bites us a lot. after reading this blog, I tried it with IE9. initially it looked very promising. but after a while, it started showing up issues. sporadically the links that would open new IE windows also started launching new process. this was alarming as I had set TabProcGrowth to 0. and there is no deterministic way to reproduce this. it happens sporadically. Does anyone know why TabProcGrowth set to 0 will still create multiple processes