Closed Bug 676791 Opened 13 years ago Closed 3 years ago

Crash while loading any plugin if XRENDER is not available [@ mozilla::plugins::PluginInstanceChild::ShowPluginFrame]

Categories

(Core Graveyard :: Plug-ins, defect)

All
Linux
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: psychon, Unassigned)

Details

User Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.19) Gecko/20110701 Iceweasel/3.5.19 (like Firefox/3.5.19)
Build ID: 20110701100522

Steps to reproduce:

Set the environment variable "CAIRO_DEBUG=xrender-version=-1" and start firefox. This makes cairo pretend that the X11 server does not have the RENDER extension.

When I now open e.g. layout/reftests/bugs/541406-1-ref.html, I am told that "The Test plugin" crashed.


Actual results:

On the console, this output is shown:

For application/x-test found plugin libnptest.so
LoadPlugin() /home/psychon/projects/mozilla-central/obj-x86_64-unknown-linux-gnu/dom/plugins/test/testplugin/libnptest.so returned 2551a50
WARNING: [PluginModuleParent::ActorDestroy] abnormal shutdown without minidump!: file /home/psychon/projects/mozilla-central/dom/plugins/ipc/PluginModuleParent.cpp, line 308

Program /home/psychon/projects/mozilla-central/obj-x86_64-unknown-linux-gnu/dist/bin/plugin-container (pid = 28463) received signal 11.
Stack:
UNKNOWN [/lib/x86_64-linux-gnu/libc.so.6 +0x00032480]
UNKNOWN [/home/psychon/projects/mozilla-central/obj-x86_64-unknown-linux-gnu/dist/bin/libxul.so +0x01207D6D]
UNKNOWN [/home/psychon/projects/mozilla-central/obj-x86_64-unknown-linux-gnu/dist/bin/libxul.so +0x0120813E]
UNKNOWN [/home/psychon/projects/mozilla-central/obj-x86_64-unknown-linux-gnu/dist/bin/libxul.so +0x0131B170]
UNKNOWN [/home/psychon/projects/mozilla-central/obj-x86_64-unknown-linux-gnu/dist/bin/libxul.so +0x0131C783]
UNKNOWN [/home/psychon/projects/mozilla-central/obj-x86_64-unknown-linux-gnu/dist/bin/libxul.so +0x0131C8A5]
UNKNOWN [/home/psychon/projects/mozilla-central/obj-x86_64-unknown-linux-gnu/dist/bin/libxul.so +0x01331350]
UNKNOWN [/home/psychon/projects/mozilla-central/obj-x86_64-unknown-linux-gnu/dist/bin/libxul.so +0x0131B310]
UNKNOWN [/home/psychon/projects/mozilla-central/obj-x86_64-unknown-linux-gnu/dist/bin/libxul.so +0x0131B333]
XRE_InitChildProcess+0x00000380 [/home/psychon/projects/mozilla-central/obj-x86_64-unknown-linux-gnu/dist/bin/libxul.so +0x00596FC6]
UNKNOWN [/home/psychon/projects/mozilla-central/obj-x86_64-unknown-linux-gnu/dist/bin/plugin-container +0x00000750]
__libc_start_main+0x000000FD [/lib/x86_64-linux-gnu/libc.so.6 +0x0001EEAD]
UNKNOWN [/home/psychon/projects/mozilla-central/obj-x86_64-unknown-linux-gnu/dist/bin/plugin-container +0x000007D1]
Sleeping for 300 seconds.
Type 'gdb /home/psychon/projects/mozilla-central/obj-x86_64-unknown-linux-gnu/dist/bin/plugin-container 28463' to attach your debugger to this thread.

gdb backtrace:
#0  0x00007feede9da1cd in nanosleep () at ../sysdeps/unix/syscall-template.S:82
#1  0x00007feede9da040 in __sleep (seconds=<value optimized out>)
    at ../sysdeps/unix/sysv/linux/sleep.c:138
#2  0x00007feee02424e4 in ah_crap_handler (signum=11)
    at /home/psychon/projects/mozilla-central/toolkit/xre/nsSigHandlers.cpp:121
#3  0x00007feee024251c in child_ah_crap_handler (signum=11)
    at /home/psychon/projects/mozilla-central/toolkit/xre/nsSigHandlers.cpp:133
#4  <signal handler called>
#5  mozilla::plugins::PluginInstanceChild::ShowPluginFrame (this=0x256c2c0)
    at /home/psychon/projects/mozilla-central/dom/plugins/ipc/PluginInstanceChild.cpp:3171
#6  0x00007feee0eb413e in InvalidateRectDelayed (this=0x256c2c0)
    at /home/psychon/projects/mozilla-central/dom/plugins/ipc/PluginInstanceChild.cpp:3271
#7  mozilla::plugins::PluginInstanceChild::InvalidateRectDelayed (this=0x256c2c0)
    at /home/psychon/projects/mozilla-central/dom/plugins/ipc/PluginInstanceChild.cpp:3260
#8  0x00007feee0fc7170 in MessageLoop::RunTask (this=0x7fff4e957538, task=0x256c1f0)
    at /home/psychon/projects/mozilla-central/ipc/chromium/src/base/message_loop.cc:345
#9  0x00007feee0fc8783 in MessageLoop::DeferOrRunPendingTask (this=<value optimized out>, 
    pending_task=<value optimized out>)
    at /home/psychon/projects/mozilla-central/ipc/chromium/src/base/message_loop.cc:353
#10 0x00007feee0fc88a5 in DoWork (this=0x7fff4e957538)
    at /home/psychon/projects/mozilla-central/ipc/chromium/src/base/message_loop.cc:453
#11 MessageLoop::DoWork (this=0x7fff4e957538)
    at /home/psychon/projects/mozilla-central/ipc/chromium/src/base/message_loop.cc:432
#12 0x00007feee0fdd350 in base::MessagePumpForUI::RunWithDispatcher (this=0x24fd830, 
    delegate=<value optimized out>, dispatcher=<value optimized out>)
    at /home/psychon/projects/mozilla-central/ipc/chromium/src/base/message_pump_glib.cc:199
#13 0x00007feee0fc7310 in MessageLoop::RunInternal (this=0x7fff4e957538)
    at /home/psychon/projects/mozilla-central/ipc/chromium/src/base/message_loop.cc:221
#14 0x00007feee0fc7333 in RunHandler (this=0x7fff4e957538)
    at /home/psychon/projects/mozilla-central/ipc/chromium/src/base/message_loop.cc:205
#15 MessageLoop::Run (this=0x7fff4e957538)
    at /home/psychon/projects/mozilla-central/ipc/chromium/src/base/message_loop.cc:179
#16 0x00007feee0242fc6 in XRE_InitChildProcess (aArgc=2, aArgv=<value optimized out>, 
    aProcess=GeckoProcessType_Plugin)
    at /home/psychon/projects/mozilla-central/toolkit/xre/nsEmbedFunctions.cpp:512
#17 0x0000000000400750 in main (argc=4, argv=<value optimized out>)
    at /home/psychon/projects/mozilla-central/ipc/app/MozillaRuntimeMain.cpp:81

This happened because xsurf->XRenderFormat() is a NULL pointer:

(gdb) print cairo_xlib_surface_get_xrender_format(mCurrentSurface.mRawPtr->mSurface)
$7 = (XRenderPictFormat *) 0x0

I have to do this small amount of magic because gdb otherwise says "value has been optimized out". This should be the same as xsurf->XRenderFormat().


Expected results:

Rainbow
Component: Extension Compatibility → Plug-ins
Product: Firefox → Core
QA Contact: extension.compatibility → plugins
Hardware: x86_64 → All
Summary: Crash while loading test plugin if XRENDER is not available [@ mozilla::plugins::PluginInstanceChild::ShowPluginFrame] → Crash while loading any plugin if XRENDER is not available [@ mozilla::plugins::PluginInstanceChild::ShowPluginFrame]
For me the lack of XRENDER manifests itself in Firefox 9.0 in a crash in PluginInstanceParent::BackgroundDescriptor(), again when trying to dereference xsurf->XRenderFormat().
Resolving as wont fix, plugin support deprecated in Firefox 85.
Status: UNCONFIRMED → RESOLVED
Closed: 3 years ago
Resolution: --- → WONTFIX
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.