Firefox 3.6.4 Released With Out-of-Process Plugins
DragonHawk writes "Mozilla Firefox 3.6.4 went to general release today. The big new feature in this release is out-of-process plugins (OOPP). This means things like Flash, Java, QuickTime, etc., all run in separate processes, so when Flash decides to crash, it won't take your browser out with it. If Flash starts consuming all the CPU it can find, you can kill it without nuking your browser session. I've been using this feature since it was in the 'nightly build' stage, and it was still more stable than 3.6.3, just because Flash was isolated." And reader Trailrunner7 supplies another compelling reason to download 3.6.4: "Security researcher Michal Zalewski has identified a problem with the way Firefox handles links that are opened in a new browser window or tab, enabling attackers to inject arbitrary code into the new window or tab while still keeping a deceptive URL in the browser's address bar. The vulnerability, which Mozilla has fixed in version 3.6.4, has the effect of tricking users into thinking that they're visiting a legitimate site while instead sending arbitrary attacker-controlled code to their browsers."
Firefox post. Firefox is the fastest browser around!
now can we do something about the rest of the awful browser?
Open 20 tabs and the entire thing chugs to a grinding halt as only one (1) of my four (4) processor cores gets maxed out. So much for the "multithreading" everybody says that Firefox.
The same list of 20 tabs peg all my cores to 100% for a few seconds and then they're all done rendering, when I'm using Chrome. No thanks Firefox. You guys are ancientsauce.
I confused, since I am on Kubuntu 10.04 64-bit version, and use the Firefox version that comes with that release (3.6.3).
For the longest time, I am able to kill npviewer.bin without Firefox crashing. I just get a grey box when I do that where Flash used to be.
Flash already runs as a separate process for me.
Here are the processes:
So, what is happening here?
2bits.com, Inc: Drupal, WordPress, and LAMP performance tuning.
Has no-one else yet commented to point out that Opera has run plugins in a separate process for years now? Then I guess I have to.
Not to minimize the accomplishments of the Firefox developers, I mean, and getting this feature to the Firefox userbase is valuable in and of itself, and so on. But there is precedent.
According to the discoverer and the issue; he mixed up two different fixes, initially:
http://lcamtuf.blogspot.com/2010/06/yeah-about-that-address-bar-thing.html
https://bugzilla.mozilla.org/show_bug.cgi?id=556957#c46
... if Firefox crashes will all the plugins keep running?
Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
It looks like there is a single process plugin-container.exe to run all flash files. Killing this exe will stop playing all the flash files. This means while you are enjoying a show on hulu.com, a rogue flash ad could still spoil the fun.
I'll take this opportunity to post some non-inflammatory info on planned Firefox development.
Firefox 4.0, which may go into beta as early as next month, is supposed to do a lot in this direction. Overhauled JavaScript engine, overhauled HTML rendering, etc.
http://wiki.mozilla.org/Firefox/4/Beta
http://developer.mozilla.org/en/Firefox_4_for_developers
I thought I had heard that 4.0 was supposed to deliver one-process-per-page functionality, but I'm having trouble finding recent status info. (One drawback to high-speed FOSS development is it's hard to keep track of things like that.) But anyway, the project is named "Electrolysis" ("E10S" in Firefox-developer-speak).
http://wiki.mozilla.org/Electrolysis
http://wiki.mozilla.org/Talk:Firefox/Roadmap
dragonhawk@iname.microsoft.com
I do not like Microsoft. Remove them from my email address.
For performance reasons, tabs don't and shouldn't run in separate processes. You know, the original motivation for the tabs feature was that each tab could be run in a separate thread whereas each window needs a separate process. On most platforms, processes are more expensive than threads.
The largest prime factor of my UID is 263267.
"And reader Trailrunner7 supplies another compelling reason to download 3.6.4: "Security researcher Michal Zalewski has identified a problem with the way Firefox handles links that are opened in a new browser window or tab, enabling attackers to inject arbitrary code into the new window or tab while still keeping a deceptive URL in the browser's address bar. The vulnerability, which Mozilla has fixed in version 3.6.4, has the effect of tricking users into thinking that they're visiting a legitimate site while instead sending arbitrary attacker-controlled code to their browsers."" Nope, sorry: https://bugzilla.mozilla.org/show_bug.cgi?id=556957#c46
You're exactly right. Flash assumes that all running instances of it share a single address space and uses various internal communication channels to have the instances talk to each other. The Chrome folks actually tried a process per plugin instance, and it broke too much stuff out there.
For performance reasons, tabs don't and shouldn't run in separate processes.
I find that statement dubious. Please explain.
In my experience, the process-per-page (be they tab, window, or whatever) yields much better performance. I believe there are multiple reasons for this. For starters, the OS already has a perfectly good scheduler, and it makes sense to use that to handle multi-tasking. Indeed, OS people prolly know more about how to design a scheduler than browser people. By exposing the this to the OS, it also means the OS can do whatever tricks it has to make I/O, memory allocation, etc., more efficient on a per-page basis, rather than treating the whole browser as an opaque object.
Finally, lot of modern hardware has 2, 3, 4 or more processor cores. Firefox generally only uses one of them. A browser like Chrome can have each page render on its own processor core, which is a *huge* performance gain. Without that, any multitasking is going to be limited to slicing up a single core between multiple tasks. The system can still only do one thing at a time. By using multiple cores, the system actually gets multiple things done literally simultaneously. On good hardware, the performance difference is astounding.
"You know, the original motivation for the tabs feature was that each tab could be run in a separate thread whereas each window needs a separate process."
That's just plain wrong. Each window does not need a separate process. Each tab does not get a separate thread. In Firefox 3.6, multiple threads are used, but it's not a one-thread-per-tab thing. Most of the work is still done in a single monolithic thread.
The motivation for tabs in Firefox was to copy Opera. The motivation for tabs in Opera was as an alternative to one-page-per-window or MDI.
dragonhawk@iname.microsoft.com
I do not like Microsoft. Remove them from my email address.
Ok, now that we're able to put flash code in a separate proc, my question is: can we cut it's privileges so another (monthly) "zero-day vulnerability" will finally become just a tale to scare little children?
Strangely enough, with all the concern about flash security, article seem to miss that point.
"In my experience, the process-per-page (be they tab, window, or whatever) yields much better performance."
"While reading Slashdot, it doesn't make one bit of difference. While one story tab loads, the rest of Firefox FREEZES while slashdot struggles to get rendered. I can't even scroll up or down."
That's because Firefox uses a single thread for just about everything. If a page is slow to render because of complex HTML/CSS, or has bad JavaScript which eats up CPU time, that drags everything to a stand-still.
Browsers that use a separate process/thread per page, on other hand, will keep everything else running. That one page will be slow/non-responsive, but everything else keeps humming along nicely (as long as the hardware can keep up). Google Chrome works this way. Firefox does not (yet).
(Firefox does spawn multiple threads, but the bulk of the work appears to be done in one thread. I presume the others are support/helper threads.)
dragonhawk@iname.microsoft.com
I do not like Microsoft. Remove them from my email address.
So all we have to do is send all Web users to night classes on process management so they can diagnose when Flash is consuming too many resources and identify and kill the relevant process. That way we can rescue Flash designers from having to learn HTML and Adobe from having to compete with anybody. Makes total sense. I mean, playing video ought to be complicated, right?
This is at least in part because on the 3.6 branch the 64-bit version is not at feature parity with the 32-bit one (for example doesn't have the JS jit, so has much worse JS execution performance). So linking to it on equal terms really doesn't make sense.
For 4.0, 64-bit Linux builds are much higher quality (for example they actually have the automated correctness tests run on them). So there's a decent chance those builds might become tier-1 by the time 4.0 ships.
Now I can watch Youtube and post on Slashdot at the same t
However processes use a lot more memory. Firefox uses way, way less memory than Chrome when you have a few tabs open.
Also, the browser should not crash. But if it does, it restore the session, but seriously, that rarely happens on Firefox (yeah, Chrome tabs crash all the time, but that's Chrome's fault... flamebait maybe but one could argue tab-process encourage buggy code since it's no big deal when a tab crashes)
The only things the browser does not have control over are plugins, and they're not in their own process, which is cool. Extensions are a more complex matter, I suppose they could still bring down everything with own process tabs.
I'm not sure the security added by sandboxing tabs into processes is worth the trouble right now. It's some kind of hack after all.
As a Linux user I can sum up my choice of browser in the following way:
Opera: Excellent browser. Has the best set of features of any browser out-of-the-box, almost no rendering issues and it's fast. Unfortunately it can't be patched, updated and packaged as easily as other free software browsers. It's closed nature also makes it non-portable, limiting me to whatever platforms Opera Software decides to support. It was my browser of choice for a long time but when I started to migrate to pure64 Linux Opera's releases didn't keep up. Ruled out.
Chromium: Also excellent. Unfortunately Google's development model for the browser makes it painful to package and distribute. The bootstrap tarball is a whopping 700MB in size, and after the tarball has been downloaded you have to update it with svn. AFAIK there are no regular release tarballs and shipping a 700MB non-current tarball in the source tree with a strange build system and code that has to be updated before building is out of the question. It would be my browser of choice on Linux if it didn't complicate things so much. I think most Linux distributors agree with a number of these points, which is why we don't see more of them package Chrome(ium). Distributions like Slackware would never, ever carry source code that big (at best you get the pre-built binaries from Google.. again, this affects portability and from what I know it's heavily optimized for x86, probably won't even work on PPC/ARM). Ruled out.
Konqueror: Great browser for the most part, but uncomfortable to use. Has rendering issues (and "flickering" when it draws and loads webpages, forms are sometimes broken etc.) which makes it annoying, plugins don't always work (like flash). And the way bookmarks is implemented isn't as polished as one would hope. KHTML is a good engine but not as good as WebKit, and QT's internal WebKit engine apparently needs work (based on my experience with Rekonq which needs a LOT of polish). Ruled out.
Epiphany: Haven't used the new WebKit-based version because I don't use Gnome (and it's heavily tied to it). Probably what I would recommend and use myself if I didn't prefer KDE as my desktop. Ruled out.
Firefox: The browser I prefer. It isn't the fastest browser but it's fast enough. It's easy to build and the functionality it lacks can be added with extensions. I use it because it's well supported and just works. Fact is, while there are plenty of browsers that can compete with Firefox in terms of features and polish (even exceed it) those aren't the reasons I actually USE firefox. It's might be based on Gtk but isn't tied into Gnome so it's well suited for using on desktops other than Gnome (like Xfce and KDE).
I don't fit the profile of your average Linux user so my reasons for choosing a particular browser is different from the norm, but the fact is that Firefox is good anough and it fits the free software development and distribution platform very well making it easy to support.