Skip to main content

Question Google Chrome Process Isolation Model..

Alsalam alikom wa ra7mat Allah wa barakatoh

Google once published this comics book about Google chrome (their Open Source Web Browser)
I've linked to one page that I'm concerning about for now...

It explains that Chrome will have separate process per tab, away from the benefits/concerns about this... I was accidently checking chrome's task manager (Shift + Esc) and found something that -apparently- violates this rule...
As you see, tab1 process has actually spanned 3 tabs... which is a similar behavior to what IE8 does... I'm not quite sure why this happens in Chrome... but it's just a question to ask...

Thanks,
Haytham

Comments

  1. Hey, try this about:% (make sure you don't have something important in other tabs and I'm hoping you don't have the latest build).
    You can invistegate this if you download the source code http://code.google.com/chromium/
    My opinion (I haven't seen the code or used Chrome) is that these tabs are opened from the same tab (open in new tab).

    ReplyDelete
  2. Alsalam alikom,

    about:% didn't work for me, there is a list of those hacks here:
    http://lifehacker.com/5045164/google-chromes-full-list-of-special-about-pages

    or try these:
    about:memory
    about:stats
    about:network
    about:internets
    about:histograms
    about:dns
    about:cache
    about:plugins
    about:version

    I want to look at source code of course but there are some legal issues concerning seeing others source code.. specially those MS has competitors for...

    If you ever got a chance to have a look at the source code and figure out why this happens... plz let us know :)

    ReplyDelete
  3. been a while since your last post :)

    so .. i think they span the same process if they belong to the same site/application

    so that the 3 tabs can share the same authentication, cookies, HTTP connection
    it is not possible for 3 Processes to share a TCP connection i think, and if they can, who will read what and when..?

    ReplyDelete
  4. Alsalam alikom

    yea.. long since my last post :).

    Actually there is something in the browsers standards AFAIK, that restrict the number of opened connection to certain domain to 3 -I think-
    By the way my 3 tabs were not from the same domain... they were opened from the same tab though (however other tabs opened from the same tab have separate processes :))

    It's true they are not sharing the same TCP connection -they don't need to as stated above :) -
    But I believe they can share same authentication/cookies...

    ReplyDelete
  5. Here is Microsoft comparison between IE7 and IE8 in that regard -number of open connections-

    http://msdn.microsoft.com/en-us/library/cc304129(VS.85).aspx

    ReplyDelete
  6. ok .. then i will try again :)
    ...
    what if the link (from GReader) was
    reader.google.com/visit?link_in_other_domain.com
    (redirection) google do that all the time :D
    ...
    so may be .. may be .. it thought that its the same domain .. before it got redirected
    ...
    and may be .. may be .. other tabs that went to a new process was not redirected

    ReplyDelete
  7. Ur argument "maybe maybe" valid :D ...
    but honestly, I don't think the design goes like that...

    Try to open 2 tabs same domain, chrome will not merge them into one process.. (I know you may argue that it never merges, it either splits or keeps same process :P )

    I agree more that it has something to do with opening a tab from the current tab...

    I tried to observe a little bit what happens...

    - new browser, tab1 visit GReader
    - middle click on a link, new tab opens in the same process
    - middle click on another link a new tab opens in the same process
    - browse to tab2, middle click on one link, chrome separates things into 3 tabs, tab1, tab3, and tab2 + the newly created tab...

    I believe this is reproducable scenario ;)...

    Why don't you have a look on Chromium source code and tell us ;)

    ReplyDelete
  8. "Why don't you have a look on Chromium source code and tell us ;)"

    who? ,, me ? .. no way .. and i don't have svn installed :D

    we can krugle some "on_middle_click()" in the repository :D

    ReplyDelete
  9. The about:% acctually anything:% was a bug in Chrome not an easter egg, it crashes the whole app not just the tab/process. That's why I warned you about important opened tabs. But it seems that the build you have has got it fixed.
    I don't think I'll see that source code anytime soon because I'm not that good at C++ :D

    ReplyDelete
  10. ok ok guys, here is the deal
    Go here, http://blog.chromium.org/2008/09/multi-process-architecture.html

    this blog entry speaks about the multi process architecture, browse to this part:
    3. When should the browser create processes?

    you will find almost all necessary information..

    Quoting from the post:
    For example, if one tab opens another tab using JavaScript, or if you open a link to the same site in a new tab, the tabs will share a renderer process. This lets the pages in these tabs communicate via JavaScript and share cached objects. Conversely, if you type the URL of a different site into the location bar of a tab, we will swap in a new renderer process for the tab.

    hope this helps...

    ReplyDelete

Post a Comment

Popular posts from this blog

Exploiting Double Free Vulnerabilities...

Alsalam alikom wa ra7mat Allah wa barakatoh



Huh!! that's what I said when I first saw that title... but let me explain...


Double Free means that you try to free a pointer two times (which is logically can't work).
Actually windows SP2 and later (even Vista) this can be done (in somehow) and can actually corrupt the heap (Vista will shout at your face if u did) and that can make you able to use and browse the heap as you want..

Facts to know about how Windows frees your pointers:
- There is something called Lookaside buffer (fast access, small size) and another thing is FreeList(slower access, the whole memory).
- Chunk is an object of the DataStructure that holds mainly 2 things: pointer to where the next free Chunk is and pointer to the previous free one (think about it like a node in a linked list)
- The first 4 bytes of the Chunk is the BLink (BackLink) and the second 4 bytes is the FLink
- delete ptr1;
delete ptr2;
Windows takes your Chunk (for ptr1) and puts it in the Lookaside s…

Windows7 adds Math Input Panel

Alsalam alikom wa ra7mat Allah wa barakatoh…I was reading a windows team post about Input Panels improvements in Windows7 [here]. When at the end I saw a very interesting –intuitive if you wish- new thing… which is, as you guessed, the Math Input Panel…Yes, that crappy font is mine… I “drew” that by mouse as I don’t have a tablet pen/pc.You can then paste it directly into word and it’ll recognize it as an editable equation…During my tests, the output panel (the top part) hanged, but I liked that the drawing panel was still responsive and I could still write/erase… till the top one started to respond again…One other thing to know, after you click Insert (that button down there) it copies the equation in MathML [Wikipedia link] format.. which is a standard way of representing equations and hence any application that recognizes the format can insert it not as an image but as a nice editable equation…If you think it recognized something wrong, you can click “Select and Correct” then draw …

Visual Studio 2008 Not saving changes or project properties?

Alsalam alikom wa ra7mat Allah wa barakatoh (Peace upon you)I’ve recently ran into problems with VS 2008. Summarized here:When you try to edit the project properties (specially C++ projects) you are faced with a little nice message saying “Exception from HRESULT: 0xF9F0F308”. Sometimes when you are editing a file (specially large ones), VS doesn’t recognize you’ve made changes (ie doesn’t display that ‘*’ in the files tabs) hence, when you save, nothing actually gets saved. For those 2 problems, a friend explained the problem and a work around (till they officially release a fix)…Open up a Visual Studio 2008 Command Prompt Run cd "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE" Make a backup copy of devenv.exe in case something does not work right.
ie. copy devenv.exe devenv.exe.bak Run editbin /largeaddressaware:no devenv.exe Happy VSing… :)