Bug 154891

Summary: [GTK] Tracker for GNOME Shell browser plugin crashes
Product: WebKit Reporter: Michael Catanzaro <mcatanzaro>
Component: WebKitGTKAssignee: Nobody <webkit-unassigned>
Status: RESOLVED INVALID    
Severity: Normal CC: bugs-noreply, cgarcia, mcatanzaro
Priority: P2    
Version: Other   
Hardware: PC   
OS: Linux   
See Also: https://bugzilla.gnome.org/show_bug.cgi?id=766776
https://bugzilla.gnome.org/show_bug.cgi?id=773634
Bug Depends on: 154882, 154883, 154884, 154888, 154889    
Bug Blocks:    

Description Michael Catanzaro 2016-03-01 16:21:26 PST
Tracker for GNOME Shell browser plugin crashes, since we still have many of these even after all the fixes that went into 3.18.3.

Since this plugin is going away, these crashes are only important if they turn out to be WebKit bugs and not GNOME Shell bugs.
Comment 1 Michael Catanzaro 2016-10-27 19:51:54 PDT
(In reply to comment #0)
> Since this plugin is going away, these crashes are only important if they
> turn out to be WebKit bugs and not GNOME Shell bugs.

This plugin is still alive. :(
Comment 2 Carlos Garcia Campos 2016-10-28 06:17:55 PDT
All the crashes are actually the same problem in the end, but the crash happens at different moments. It's not a bug in WebKit, even though we could protect WebKit from crashing due to buggy plugins in some cases like in bug #137425. The bug in in the plugin that is not retaining the np object when returning it from NPP_GetValue. WebKit assumes the the plugin does the right think and releases that given reference. At some point the object is released and deallocated and both the plugin and WebKit still have references to the object thinking that it's still alive. That's why the crash is sometimes in the plugin when it tries to use the np object, or in WebKit for the very same reason. I don't know why it doesn't happen in other browsers, looking at firefox code they also release the object right after creating the internal wrapper in NPP_GetValue, I guess they keep another reference somewhere else. In WebKit, the mac port has a quirk PluginQuirks::ReturnsNonRetainedScriptableNPObject for this. In our case I'll just fix the plugin.