GNOME Bugzilla – Bug 628612
Crash in NSPluginWrapper when using Flash player - Firefox works
Last modified: 2011-11-24 09:03:19 UTC
In Ubuntu 10.04, Epiphany is constantly crashing when viewing Flash sites, making it impossible to use. It's a pity that this proprietary plugin is plaguing Ephy's stability, but it seems something can be done about this, since Firefox doesn't suffer from this bug. The assertion error we get is: /build/buildd/nspluginwrapper-1.2.2/src/npw-rpc.c :1225 : do_recv_NPObject: Assertion failed "npobj != ((void *)0)". So it seems the problem is in NSPluginWrapper. I don't know whether the culprit is Flash, NSPluginWrapper, WebKit or Epiphany, so I'm reporting here, in hope we can start the investigation. Else, Ubuntu LTS users will have to forget about Epiphany for the next 2 years, which would be sad... Unfortunately, the stack trace we get is very poor ATM - we only have the assertion failure. If you think it would be worth it, I can try again getting a better trace. Else I can ask NSPluginWrapper people, who may know what this error message means. If Firefox manages to work with the same versions, there must be a solution! ;-) Regards Epiphany 2.30.2, WebKit 1.2.0-1, Flash Player 10.1.82.76 (64bits). https://bugs.launchpad.net/ubuntu/+source/epiphany-browser/+bug/448234
Maybe stating the obvious: if NSPluginWrapper crashes that much you could try to, you know, just not use it. That being said, the better the trace you can provide, the easier will be for us to figure things out.
I wish I could! Don't believe I enjoy dealing with those silly bugs... ;-) I'm not a specialist of the total mess that constitutes Flash & 64-bit on Linux, but AFAIK Adobe no longer provides a 64-bit version of their Flash player, and the last 64-bit released version suffers from security breaches. See for example: http://arstechnica.com/open-source/news/2010/06/64-bit-flash-for-linux-dropped-as-adobe-preps-next-version.ars Anyway, it's hard to ship a version Adobe has discontinued, since it would need to be downloaded from their servers, which is no longer possible. Even on Canonical "partners" repository, only a 32-bit version is available. So I'm trying to get a better trace, if possible.
Here's a complete trace, with only symbols from the Flash plugin itself missing. #0 0x00007f59a41faa75 in raise () from /lib/libc.so.6 No symbol table info available. #1 0x00007f59a41fe5c0 in abort () from /lib/libc.so.6 No symbol table info available. #2 0x00007f59a41f3941 in __assert_fail () from /lib/libc.so.6 No symbol table info available. #3 0x00007f598d0408a9 in ?? () from /var/lib/flashplugin-installer/npwrapper.libflashplayer.so No symbol table info available. [Same until #12] #13 0x00007f59a73eb784 in WebCore::PluginView::start (this=0x7f5996968680) at ../WebCore/plugins/PluginView.cpp:234 dropAllLocks = {<WTFNoncopyable::Noncopyable> = {<WTF::FastAllocBase> = {<No data fields>}, <No data fields>}, m_lockCount = 2856904744, m_lockBehavior = JSC::SilenceAssertionsOnly} npErr = <value optimized out> #14 0x00007f59a73eba4b in WebCore::PluginView::init (this=0x7f5996968680) at ../WebCore/plugins/PluginView.cpp:192 No locals. #15 0x00007f59a738b768 in WebCore::ScrollView::addChild (this=0x7f598f689c80, prpChild=DWARF-2 expression error: DW_OP_reg operations must be used either alone or in conjuction with DW_OP_piece. ) at ../WebCore/platform/ScrollView.cpp:66 child = 0x7f5996968680 #16 0x00007f59a74a1503 in moveWidgetToParentSoon (child=0x7f5996968680, parent=0x7f598f689c80) at ../WebCore/rendering/RenderWidget.cpp:84 No locals. #17 0x00007f59a74a1754 in WebCore::RenderWidget::setWidget ( this=0x7f598df2d920, widget=DWARF-2 expression error: DW_OP_reg operations must be used either alone or in conjuction with DW_OP_piece. ) at ../WebCore/rendering/RenderWidget.cpp:187 No locals. #18 0x00007f59a7474317 in WebCore::RenderPart::setWidget (this=0xb06, widget=<value optimized out>) at ../WebCore/rendering/RenderPart.cpp:50 No locals. #19 0x00007f59a72dafc2 in WebCore::FrameLoader::loadPlugin ( this=0x7f598f60a850, renderer=0x7f598df2d920, url=<value optimized out>, mimeType=..., paramNames=..., paramValues=..., useFallback=false) at ../WebCore/loader/FrameLoader.cpp:1380 element = 0x7f5995b0a5b0 #20 0x00007f59a72e2215 in WebCore::FrameLoader::requestObject ( this=0x7f598f60a850, renderer=0x7f598df2d920, url=<value optimized out>, frameName=..., mimeType=..., paramNames=..., paramValues=...) at ../WebCore/loader/FrameLoader.cpp:1285 settings = 0x7f599697ef00 completedURL = {m_string = { m_impl = {<WTF::FastAllocBase> = {<No data fields>}, m_ptr = 0x7f5995b43ab0}}, m_isValid = true, m_protocolInHTTPFamily = true, m_schemeEnd = 4, m_userStart = 7, m_userEnd = 7, m_passwordEnd = 7, m_hostEnd = 18, m_portEnd = 18, m_pathAfterLastSlash = 27, m_pathEnd = 50, m_queryEnd = 50, m_fragmentEnd = 50} useFallback = false #21 0x00007f59a7438b48 in WebCore::RenderEmbeddedObject::updateWidget ( this=0x7f598df2d920, onlyCreateNonNetscapePlugins=<value optimized out>) at ../WebCore/rendering/RenderEmbeddedObject.cpp:269 embed = 0x0 embedOrObject = <value optimized out> uniqueParamNames = {<WTF::FastAllocBase> = {<No data fields>}, m_impl = {static m_minTableSize = <optimized out>, static m_maxLoad = <optimized out>, static m_minLoad = <optimized out>, m_table = 0x0, m_tableSize = 0, m_tableSizeMask = 0, m_keyCount = 0, m_deletedCount = 0}} codebase = {m_impl = {<WTF::FastAllocBase> = {<No data fields>}, m_ptr = 0x0}} child = <value optimized out> attributes = 0xa url = {m_impl = {<WTF::FastAllocBase> = {<No data fields>}, m_ptr = 0x7f5995b43ab0}} serviceType = {m_impl = {<WTF::FastAllocBase> = {<No data fields>}, m_ptr = 0x7f5995b3ca20}} paramValues = {<WTF::FastAllocBase> = {<No data fields>}, m_size = 10, m_buffer = {<WTF::VectorBufferBase<WebCore::String>> = {<WTFNoncopyable::Noncopyable> = {<WTF::FastAllocBase> = {<No data fields>}, <No data fields>}, m_buffer = 0x7f59959e9b00, m_capacity = 16}, <No data fields>}} frame = 0x7f598f60a800 paramNames = {<WTF::FastAllocBase> = {<No data fields>}, m_size = 10, m_buffer = {<WTF::VectorBufferBase<WebCore::String>> = {<WTFNoncopyable::Noncopyable> = {<WTF::FastAllocBase> = {<No data fields>}, <No data fields>}, m_buffer = 0x7f59959e9b80, m_capacity = 16}, <No data fields>}} #22 0x00007f59a7344cf3 in WebCore::FrameView::updateWidgets ( this=0x7f598f689c80) at ../WebCore/page/FrameView.cpp:1463 object = 0x7f598df2d920 i = 0 objectVector = {<WTF::FastAllocBase> = {<No data fields>}, m_size = 1, m_buffer = {<WTF::VectorBufferBase<WebCore::RenderEmbeddedObject*>> = {<WTFNoncopyable::Noncopyable> = {<WTF::FastAllocBase> = {<No data fields>}, <No data fields>}, m_buffer = 0x7f59959b4b00, m_capacity = 16}, <No data fields>}} #23 0x00007f59a734530d in WebCore::FrameView::performPostLayoutTasks ( this=0x7f598f689c80) at ../WebCore/page/FrameView.cpp:1493 root = <value optimized out> #24 0x00007f59a7347288 in WebCore::FrameView::layout (this=0x7f598f689c80, allowSubtree=<value optimized out>) at ../WebCore/page/FrameView.cpp:751 root = 0x7f598df2d420 hMode = WebCore::ScrollbarAlwaysOff vMode = WebCore::ScrollbarAlwaysOff layer = 0x7f598df2d558 document = 0x7f59959d6400 subtree = <value optimized out> disableLayoutState = 44 #25 0x00007f59a7392166 in WebCore::ThreadTimers::sharedTimerFiredInternal ( this=0x7f5996961870) at ../WebCore/platform/ThreadTimers.cpp:112 interval = <value optimized out> fireTime = 1283434016.9217701 timeToQuit = 1283434016.97177 #26 0x00007f59a7643c72 in timeout_cb () at ../WebCore/platform/gtk/SharedTimerGtk.cpp:48 No locals. #27 0x00007f59a4ce309b in ?? () from /lib/libglib-2.0.so.0 No symbol table info available. #28 0x00007f59a4ce28c2 in g_main_context_dispatch () from /lib/libglib-2.0.so.0 No symbol table info available. #29 0x00007f59a4ce6748 in ?? () from /lib/libglib-2.0.so.0 No symbol table info available. #30 0x00007f59a4ce6c55 in g_main_loop_run () from /lib/libglib-2.0.so.0 No symbol table info available. #31 0x00007f59a65abbb7 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0 No symbol table info available. #32 0x0000000000435423 in main (argc=1, argv=0x7fff2ede77e8) at /build/buildd/epiphany-browser-2.30.2/src/ephy-main.c:741 option_context = <value optimized out> option_group = <value optimized out> proxy = <value optimized out> error = 0x0 user_time = 15698088 Also, Ephy is printing a great deal of warnings to the console. These are what happens when viewing directly a Youtube video: epiphany-browser ** (epiphany:10089): DEBUG: NP_Initialize ** (epiphany:10089): DEBUG: NP_Initialize succeeded ** (epiphany:10089): DEBUG: NP_Initialize ** (epiphany:10089): DEBUG: NP_Initialize succeeded ** (epiphany:10089): DEBUG: NP_Initialize ** (epiphany:10089): DEBUG: NP_Initialize succeeded ** (epiphany:10089): DEBUG: NP_Initialize ** (epiphany:10089): DEBUG: NP_Initialize succeeded ** (epiphany:10089): DEBUG: NP_Initialize ** (epiphany:10089): DEBUG: NP_Initialize succeeded ** (epiphany:10089): DEBUG: NP_Initialize ** (epiphany:10089): DEBUG: NP_Initialize succeeded ** (epiphany:10089): DEBUG: NP_Initialize ** (epiphany:10089): DEBUG: NP_Initialize succeeded java version "1.6.0_18" (epiphany:10089): GLib-CRITICAL **: g_source_remove: assertion `tag > 0' failed (epiphany:10089): GLib-CRITICAL **: g_source_remove: assertion `tag > 0' failed OpenJDK Runtime Environment (IcedTea6 1.8.1) (6b18-1.8.1-0ubuntu1) OpenJDK 64-Bit Server VM (build 16.0-b13, mixed mode) ** (epiphany:10089): DEBUG: NP_Initialize ** (epiphany:10089): DEBUG: NP_Initialize succeeded (epiphany:10089): GLib-CRITICAL **: g_hash_table_foreach: assertion `hash_table != NULL' failed (epiphany:10089): GLib-CRITICAL **: g_hash_table_insert_internal: assertion `hash_table != NULL' failed (epiphany:10089): GLib-CRITICAL **: g_hash_table_lookup: assertion `hash_table != NULL' failed *** NSPlugin Wrapper *** ERROR: no valid NPP -> PluginInstance mapping found (epiphany:10089): GLib-CRITICAL **: g_hash_table_lookup: assertion `hash_table != NULL' failed *** NSPlugin Wrapper *** ERROR: no valid NPP -> PluginInstance mapping found (epiphany:10089): GLib-CRITICAL **: g_hash_table_lookup: assertion `hash_table != NULL' failed (epiphany:10089): GLib-CRITICAL **: g_hash_table_insert_internal: assertion `hash_table != NULL' failed (epiphany:10089): GLib-CRITICAL **: g_hash_table_insert_internal: assertion `hash_table != NULL' failed (epiphany:10089): GLib-CRITICAL **: g_hash_table_find: assertion `hash_table != NULL' failed (epiphany:10089): GLib-CRITICAL **: g_hash_table_insert_internal: assertion `hash_table != NULL' failed (epiphany:10089): GLib-CRITICAL **: g_hash_table_lookup: assertion `hash_table != NULL' failed *** NSPlugin Wrapper *** ERROR: no valid NPP -> PluginInstance mapping found (epiphany:10089): GLib-CRITICAL **: g_hash_table_lookup: assertion `hash_table != NULL' failed epiphany-browser: /build/buildd/nspluginwrapper-1.2.2/src/npw-rpc.c :1225 : do_recv_NPObject: L'assertion « npobj != ((void *)0) » a échoué. *** NSPlugin Viewer *** ERROR: NPN_GetProperty() wait for reply: Message timeout *** NSPlugin Viewer *** WARNING:(/build/buildd/nspluginwrapper-1.2.2/src/npw-viewer.c:862):invoke_NPN_GetValue: assertion failed: (rpc_method_invoke_possible(g_rpc_connection)) *** NSPlugin Viewer *** WARNING: unhandled variable 18 (<unknown variable>) in NPN_GetValue() *** NSPlugin Viewer *** WARNING:(/build/buildd/nspluginwrapper-1.2.2/src/npw-viewer.c:862):invoke_NPN_GetValue: assertion failed: (rpc_method_invoke_possible(g_rpc_connection)) Aborted (core dumped)
Duplicate of bug 607507 ?
Not a duplicate of bug 607507. nspluginwrapper does not crash much, just Flash inside crashes often. nspluginwrapper should protect browser from the plugin crash. In that case the nspluginwrapper itself crashed (exactly it aborted). I got a similar crash just once over a time, but accidentally did not save the backtrace. I'll try to fix the problem, or at least replace abort() by something less ugly.
Is this still relevant given that epiphany switched to webkit? Webkit does not use nspluginwrapper does it?
This was with a WebKit-enabled Epiphany. But this was in Ubuntu 10.04. Since then, many things have changed, Flash 11 with 64 support was released, and I've switched to Fedora, where it seems to work. Closing.
It seems to still happen in Ubuntu, if you're interested: https://bugs.launchpad.net/ubuntu/+source/epiphany-browser/+bug/448234