Multi-process plugin architecture

Plugins are a frequent source of instability or crashes for browser users. When plugins run in the same process as the browser, any leaks or crashes in the plugin will affect the entire browser:

single-process.png

In order to make the browser user experience better, it is possible to separate plugin execution from the process in which the browser normally executes. When multi-process plugins are enabled, a shim layer in the browser implements the plugin API (the NPP_ functions which would normally be implemented directly by the plugin). The calls are transferred to the plugin process via the IPDL protocol language. In the plugin process, the shim layer serves as a plugin host, implementing the NPN_ functions used by the plugin, and forwards the calls to the plugin DLL:

multi-process.png

Multi-process plugins, also called out of process plugins or OOPP first shipped in Firefox 3.6.4 on Windows and Linux, and in Firefox 4 on Mac OS X.

In addition to crash protection, the multi-process plugin architecture allows Firefox to see plugins which respond very slowly or have completely stopped responding. For more details on hang protection, see the page on the plugin hang detector.