To my knowledge, Firefox doesn't do that. Safari doesn't do that. Internet browsers are probably the #1 most important app on a computer these days, browser reliability is vital.
To my knowledge, Firefox doesn't do that. Safari doesn't do that. Internet browsers are probably the #1 most important app on a computer these days, browser reliability is vital.
Because it's entirely possible that Firefox or Safari, for example, could have been crashed by contacting the safebrowsing server, and the safebrowsing server returning an answer that crashes it.
Firefox also does remote firefox update checks and plugin update checks, etc.
None of the browsers you mention are "independent" of internet servers anymore. They are meant to function independently, as is Chrome, but exactly the right remote bug could likely crash all of them.
It wasn't a command that shut down Chrome, it was just poor handling of an edge-case which resulted in unexpected behavior (crash).
It's a sad truth that most programs will explode if you fling garbage at them. When push comes to shove, many development timelines don't have room to bulletproof against everything
It is not a design flaw. Sure, this specific vulnerability would not be there if the remote sync feature wasn't there, but people like features.
Chrome has a pretty good security track record. I'm not worried.
try {
// Do syncing things.
} catch(...) {
// Continuing browsing.
}Trust me when I say you don't want to be writing code in a stack frame above someone else who catches and ignores exceptions using them.
There are actually some cases where windows will catch and discard segfaults if you have them in response to certain window messages. That bug was hard to track down, let me tell you.
2) Any proposed design choice must be implemented with code, and that code can have bugs and crash. That is what happened here.
It's a design choice that your product... which some people (myself included) pay money for, crash hard so that you can get better diagnostics? Sounds like misplaced priorities.
This sort of catchall and keep going error handling could leave your browser in a completely unknown state. It could start making bad requests, making the wrong requests, start leaking info, or more likely crash elsewhere but with a much less clean crash log.
When you don't know how to handle an error such that it bubbles all the way up to the top, often the best thing to do is crash. At least then you might get the logs that allow you to fix it and turn around the fix quickly and with confidence.
Crashes suck, but crashing and not knowing why sucks more.
(Incidentally, eliminating these kind of rarely executed branches is a bugaboo of mine. They frequently have problems.)
How do you pay for Chrome?
Well, first, the sync code might not need to be in C/C++. It could be in a sandboxed, safe language instead. Other browsers do that.
Or, at minimum, it could be in C/C++ but at least in a sandboxed side process, Chrome has the capabilities for that.
Of course, no one would argue otherwise. Every time you decide how much to reduce it, you define a tradeoff in terms of work vs. benefit.
It's pretty ridiculous of you to point at a single mistake in implementation and blame the entire sync feature.
Remember that most JS is popular JS, with some small amount of custom lines. JS seems less crashy because people don't use as much "random" JS in general.
We back up so much of our tools and data, but without a working browser, we're sunk. Especially non-technical people.
That a huge percentage of the internet clients in the world can be simultaneously removed from accessing the internet, either intentionally or accidentally, is troubling me this morning.
It isn't by design that syncing can affect the whole browser; it's a bug in the syncing code which should have been handled. There is no self destruct bug, and calling it that is incorrect. Are you aware of the fix?
http://src.chromium.org/viewvc/chrome/trunk/src/sync/engine/...
The fix is just checking if the model is valid before making the call which was throwing the out of bound exception.
I think it's a bit sensationalist to still refer to it "being crashed" at any time, rather than saying it "may crash due to a bug".