Bug 136214

Summary: [GTK] Should check if a plugin mixes GTK+ symbols earlier
Product: WebKit Reporter: Carlos Garcia Campos <cgarcia>
Component: WebKitGTKAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: gustavo, pnormand, svillar
Priority: P2 Keywords: Gtk
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch pnormand: review+

Description Carlos Garcia Campos 2014-08-25 03:10:24 PDT
We are currently checking if the plugin module and the plugin process mix GTK symbols after the plugin has been loaded and initialized. This is too late in many cases, since plugins can use GTK methods in the NP_Initialize implementation. This is causing the apps using WebKitGTK+ 2.4 to freeze when the plugin process scans the plugins and there's a plugin using GTK+3. See:

$ Programs/WebKitPluginProcess -scanPlugin /usr/lib/mozilla/plugins/libevbrowserplugin.so

(WebKitPluginProcess:15409): GLib-GObject-WARNING **: cannot register existing type 'GtkSettings'

(WebKitPluginProcess:15409): GLib-GObject-WARNING **: cannot add private field to invalid (non-instantiatable) type '<invalid>'

(WebKitPluginProcess:15409): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion 'G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(WebKitPluginProcess:15409): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion 'G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(WebKitPluginProcess:15409): GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed

And the plugin process hangs here, and since the UI process calls WebKitPluginProcess -scanPlugin synchronously it freezes forever.

We should move the check earlier, once the module is loaded but before calling NP_Initialize.
Comment 1 Carlos Garcia Campos 2014-08-25 03:13:10 PDT
Created attachment 237071 [details]
Patch
Comment 2 Philippe Normand 2014-08-25 03:22:49 PDT
Comment on attachment 237071 [details]
Patch

Good catch Carlos!
Comment 3 Carlos Garcia Campos 2014-08-25 05:45:29 PDT
Committed r172919: <http://trac.webkit.org/changeset/172919>