Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- TL;DR: Shortly, I’ll be flipping a pref to outlaw unsafe CPOWs in almost
- all browser code. Unsafe CPOWs inside add-on scopes should continue to work
- properly. If you start seeing "unsafe CPOW usage forbidden” errors being
- throw for a feature you’re working on in the Browser Console, it’s because
- unsafe CPOWs have been outlawed and you should stop using them. Talk to me
- if you run into problems.
- Details:
- “unsafe” CPOWs[1][2] are CPOWs that are accessed when the other process is
- not currently blocked waiting for information from you. For example, if you
- access gBrowser.selectedBrowser.contentDocumentAsCPOW.body when the content
- process is garbage collecting, the parent will be blocked until the child
- decides that it has a moment to service the synchronous message and return
- the information that the parent needs. Unsafe CPOWS are generally pretty
- horrible for performance, especially because we cannot know what state the
- other process is in.
- “safe” CPOWs are when the other process is in a known blocked state - for
- example, the content process sends a synchronous message to the parent
- asking for some information, and is blocked waiting for a response. The
- parent then accesses CPOWs in the content process safely, because the
- content process is in a known state. The only overhead here is the IPC
- traffic.
- “unsafe” CPOWs are often used by add-ons to synchronously manipulate
- content. A year or so back, a bunch of browser code also used unsafe CPOWs
- in this way, but we’ve been slowly but surely weeding them out. We’re at
- the state now where we believe we’ve eliminated most of the in-browser
- unsafe CPOW uses[3].
- Within the next day or so, I’m going to be landing bug 1233497[4] which
- will cause unsafe CPOW usage in non-addon browser code to throw. In the
- event that this breaks things horribly, there is a pref[5] that we can flip
- to turn unsafe CPOWs back on while we fix things.
- Again, this work is occurring in bug 1233497[4]. If there are any major
- concerns, please bring them up here before I throw the spaghetti into the
- machine.
- For more details on unsafe CPOWs, please read [1] and/or [2].
- [1]:
- https://mikeconley.ca/blog/2015/02/17/on-unsafe-cpow-usage-in-firefox-desktop-and-why-is-my-nightly-so-sluggish-with-e10s-enabled/
- [2]: http://blog.lassey.us/2015/01/10/unsafe-cpow-usage/
- [3]: Outside of tests, and a few other little things that there are
- follow-ups for.
- [4]: https://bugzilla.mozilla.org/show_bug.cgi?id=1233497
- [5]: dom.ipc.cpows.forbid-unsafe-from-browser
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement