The spaghetti was put in the machine last night - this work has now landed on mozilla-central.
If you start seeing "unsafe CPOW usage forbidden" in the Browser Console for various things, please mark them blocking bug 1233497. Thanks all, -Mike On 20/01/2016 3:54 PM, Mike Conley wrote: > (cross-posted to both dev-platform and firefox-dev) > * > * > 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 > _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform