Bug 1080649 - Pages with flash content appear to cause UI freezing
Summary: Pages with flash content appear to cause UI freezing
Keywords:
Status: CLOSED WORKSFORME
Alias: None
Product: Fedora
Classification: Fedora
Component: firefox
Version: 20
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Martin Stransky
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2014-03-25 21:12 UTC by Garrett Holmstrom
Modified: 2014-12-10 21:56 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2014-12-10 21:56:31 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Garrett Holmstrom 2014-03-25 21:12:36 UTC
Description of problem:
When I load a page like YouTube's front page that contains interactive flash content, the UI seems to become unresponsive for a minute or more as it seems to wait for something javascript-related.  Meanwhile, the plugin-container process has since exited and continues to wait in a zombified state for something to call wait on it.  See below for a backtrace from the main thread.  The other threads' don't appear to contain much of interest, but I can add those if it would help.

I reproduced this with both gnash-plugin and flash-plugin.  Disabling it seems to make everything apart from flash content work correctly.

Sorry for the terrible summary/description; I more-or-less guessed as to potential causes and what info might useful.  If you need more info from me feel free to ask.


Version-Release number of selected component (if applicable):
firefox-28.0-3.fc20.x86_64
flash-plugin-11.2.202.346-release.x86_64
gnash-plugin-0.8.10-11.fc20.x86_64


How reproducible:
Frequently, but not immediately


Steps to Reproduce:
1.  Install firefox and gnash-plugin
2.  Wipe ~/.adobe and ~/.mozilla
3.  Start firefox
4.  Navigate to http://www.youtube.com/


Actual results:
The UI becomes unresponsive soon after loading that page.  The following is a stack trace from the main thread in that state:

#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:238
#1  0x00000030de423177 in pt_TimedWait (cv=cv@entry=0x7f6f581c70c8, ml=0x7f6f55f70660, timeout=timeout@entry=44995)
    at ../../../nspr/pr/src/pthreads/ptsynch.c:264
#2  0x00000030de42362e in PR_WaitCondVar (cvar=0x7f6f581c70c0, timeout=44995)
    at ../../../nspr/pr/src/pthreads/ptsynch.c:387
#3  0x00007f6f72402c23 in Wait (this=<optimized out>, interval=interval@entry=44995)
    at ../../dist/include/mozilla/CondVar.h:70
#4  Wait (interval=interval@entry=44995, this=<optimized out>) at ../../dist/include/mozilla/Monitor.h:47
#5  mozilla::MonitorAutoLock::Wait (this=this@entry=0x7fff622c9240, interval=interval@entry=44995)
    at ../../dist/include/mozilla/Monitor.h:102
#6  0x00007f6f72403346 in mozilla::ipc::GeckoChildProcessHost::SyncLaunch (this=this@entry=0x7f6f554e8620, 
    aExtraOpts=std::vector of length 1, capacity 1 = {...}, aTimeoutMs=aTimeoutMs@entry=45000, 
    arch=arch@entry=base::PROCESS_ARCH_X86_64)
    at /usr/src/debug/firefox-28.0/mozilla-release/ipc/glue/GeckoChildProcessHost.cpp:305
#7  0x00007f6f729351f4 in mozilla::plugins::PluginProcessParent::Launch (this=0x7f6f554e8620, 
    timeoutMs=timeoutMs@entry=45000)
    at /usr/src/debug/firefox-28.0/mozilla-release/dom/plugins/ipc/PluginProcessParent.cpp:78
#8  0x00007f6f72933ce5 in mozilla::plugins::PluginModuleParent::LoadModule (
    aFilePath=0x7f6f55415f08 "/usr/lib64/mozilla/plugins/libgnashplugin.so")
    at /usr/src/debug/firefox-28.0/mozilla-release/dom/plugins/ipc/PluginModuleParent.cpp:97
#9  0x00007f6f7290c3cb in nsNPAPIPlugin::CreatePlugin (aPluginTag=aPluginTag@entry=0x7f6f5541dbc0, 
    aResult=aResult@entry=0x7fff622c93a0)
    at /usr/src/debug/firefox-28.0/mozilla-release/dom/plugins/base/nsNPAPIPlugin.cpp:394
#10 0x00007f6f72918113 in CreateNPAPIPlugin (aOutNPAPIPlugin=0x7fff622c93a0, aPluginTag=0x7f6f5541dbc0)
    at /usr/src/debug/firefox-28.0/mozilla-release/dom/plugins/base/nsPluginHost.cpp:1246
#11 nsPluginHost::EnsurePluginLoaded (this=this@entry=0x7f6f581a0d00, aPluginTag=aPluginTag@entry=0x7f6f5541dbc0)
    at /usr/src/debug/firefox-28.0/mozilla-release/dom/plugins/base/nsPluginHost.cpp:1255
#12 0x00007f6f729199c7 in nsPluginHost::GetPlugin (this=this@entry=0x7f6f581a0d00, 
    aMimeType=aMimeType@entry=0x7f6f5554a3d8 "application/x-shockwave-flash", aPlugin=aPlugin@entry=0x7fff622c9510)
    at /usr/src/debug/firefox-28.0/mozilla-release/dom/plugins/base/nsPluginHost.cpp:1287
#13 0x00007f6f72919a77 in nsPluginHost::TrySetUpPluginInstance (this=this@entry=0x7f6f581a0d00, 
    aMimeType=aMimeType@entry=0x7f6f5554a3d8 "application/x-shockwave-flash", aURL=aURL@entry=0x7f6f55fb8980, 
    aOwner=aOwner@entry=0x7f6f55f70500)
    at /usr/src/debug/firefox-28.0/mozilla-release/dom/plugins/base/nsPluginHost.cpp:913
#14 0x00007f6f72919c28 in nsPluginHost::SetUpPluginInstance (this=this@entry=0x7f6f581a0d00, 
    aMimeType=aMimeType@entry=0x7f6f5554a3d8 "application/x-shockwave-flash", aURL=aURL@entry=0x7f6f55fb8980, 
    aOwner=0x7f6f55f70500) at /usr/src/debug/firefox-28.0/mozilla-release/dom/plugins/base/nsPluginHost.cpp:869
#15 0x00007f6f72919e85 in nsPluginHost::InstantiatePluginInstance (this=0x7f6f581a0d00, 
    aMimeType=0x7f6f5554a3d8 "application/x-shockwave-flash", aURL=0x7f6f55fb8980, 
    aContent=aContent@entry=0x7f6f53306b68, aOwner=aOwner@entry=0x7fff622c9860)
    at /usr/src/debug/firefox-28.0/mozilla-release/dom/plugins/base/nsPluginHost.cpp:802
#16 0x00007f6f72b73e5b in nsObjectLoadingContent::InstantiatePluginInstance (this=0x7f6f53306b68, 
    aIsLoading=<optimized out>)
    at /usr/src/debug/firefox-28.0/mozilla-release/content/base/src/nsObjectLoadingContent.cpp:815
#17 0x00007f6f72b74248 in nsObjectLoadingContent::SyncStartPluginInstance (this=0x7f6f53306b68)
    at /usr/src/debug/firefox-28.0/mozilla-release/content/base/src/nsObjectLoadingContent.cpp:2657
#18 0x00007f6f72b72b36 in nsObjectLoadingContent::ScriptRequestPluginInstance (this=this@entry=0x7f6f53306b68, 
    aCx=aCx@entry=0x7f6f55b47560, aResult=0x7fff622c99d8)
    at /usr/src/debug/firefox-28.0/mozilla-release/content/base/src/nsObjectLoadingContent.cpp:2630
#19 0x00007f6f72b73295 in nsObjectLoadingContent::SetupProtoChain (this=this@entry=0x7f6f53306b68, 
    aCx=aCx@entry=0x7f6f55b47560, aObject=..., aObject@entry=...)
    at /usr/src/debug/firefox-28.0/mozilla-release/content/base/src/nsObjectLoadingContent.cpp:3265
#20 0x00007f6f72c8a28d in mozilla::dom::HTMLSharedObjectElement::WrapNode (this=0x7f6f53306ae0, aCx=0x7f6f55b47560, 
    aScope=...)
    at /usr/src/debug/firefox-28.0/mozilla-release/content/html/content/src/HTMLSharedObjectElement.cpp:358
#21 0x00007f6f72bc457e in nsINode::WrapObject (this=0x7f6f53306ae0, aCx=0x7f6f55b47560, aScope=...)
    at /usr/src/debug/firefox-28.0/mozilla-release/content/base/src/nsINode.cpp:2602
#22 0x00007f6f72b7f6bf in mozilla::dom::Element::WrapObject (this=this@entry=0x7f6f53306ae0, 
    aCx=aCx@entry=0x7f6f55b47560, aScope=..., aScope@entry=...)
    at /usr/src/debug/firefox-28.0/mozilla-release/content/base/src/Element.cpp:359
#23 0x00007f6f726d0c95 in WrapNewBindingObject<mozilla::dom::Element> (rval=..., value=0x7f6f53306ae0, scope=..., 
    cx=0x7f6f55b47560) at ../../dist/include/mozilla/dom/BindingUtils.h:684
#24 mozilla::dom::DocumentBinding::getElementById (cx=0x7f6f55b47560, obj=..., self=<optimized out>, args=...)
    at /usr/src/debug/firefox-28.0/mozilla-release/objdir/dom/bindings/DocumentBinding.cpp:443
#25 0x00007f6f726d7f02 in mozilla::dom::DocumentBinding::genericMethod (cx=0x7f6f55b47560, argc=<optimized out>, 
    vp=0x7f6f6467c470) at /usr/src/debug/firefox-28.0/mozilla-release/objdir/dom/bindings/DocumentBinding.cpp:8422
#26 0x00007f6f74d39b03 in CallJSNative (args=..., 
    native=0x7f6f726d7de2 <mozilla::dom::DocumentBinding::genericMethod(JSContext*, unsigned int, JS::Value*)>, 
    cx=0x7f6f55b47560) at /usr/src/debug/firefox-28.0/mozilla-release/js/src/jscntxtinlines.h:220
#27 js::Invoke (cx=cx@entry=0x7f6f55b47560, args=..., construct=construct@entry=js::NO_CONSTRUCT)
    at /usr/src/debug/firefox-28.0/mozilla-release/js/src/vm/Interpreter.cpp:463
#28 0x00007f6f74d2cd7f in Interpret (cx=cx@entry=0x7f6f55b47560, state=...)
    at /usr/src/debug/firefox-28.0/mozilla-release/js/src/vm/Interpreter.cpp:2511
#29 0x00007f6f74d397bb in js::RunScript (cx=cx@entry=0x7f6f55b47560, state=...)
    at /usr/src/debug/firefox-28.0/mozilla-release/js/src/vm/Interpreter.cpp:420
#30 0x00007f6f74d39a0c in js::Invoke (cx=cx@entry=0x7f6f55b47560, args=..., 
    construct=construct@entry=js::NO_CONSTRUCT)
    at /usr/src/debug/firefox-28.0/mozilla-release/js/src/vm/Interpreter.cpp:482
#31 0x00007f6f74c4d918 in js_fun_call (cx=0x7f6f55b47560, argc=<optimized out>, vp=0x7f6f6467c200)
    at /usr/src/debug/firefox-28.0/mozilla-release/js/src/jsfun.cpp:892
#32 0x00007f6f74d39b03 in CallJSNative (args=..., 
    native=0x7f6f74c4d710 <js_fun_call(JSContext*, unsigned int, JS::Value*)>, cx=0x7f6f55b47560)
    at /usr/src/debug/firefox-28.0/mozilla-release/js/src/jscntxtinlines.h:220
#33 js::Invoke (cx=cx@entry=0x7f6f55b47560, args=..., construct=construct@entry=js::NO_CONSTRUCT)
    at /usr/src/debug/firefox-28.0/mozilla-release/js/src/vm/Interpreter.cpp:463
#34 0x00007f6f74d2cd7f in Interpret (cx=cx@entry=0x7f6f55b47560, state=...)
    at /usr/src/debug/firefox-28.0/mozilla-release/js/src/vm/Interpreter.cpp:2511
#35 0x00007f6f74d397bb in js::RunScript (cx=cx@entry=0x7f6f55b47560, state=...)
    at /usr/src/debug/firefox-28.0/mozilla-release/js/src/vm/Interpreter.cpp:420
#36 0x00007f6f74d39a0c in js::Invoke (cx=cx@entry=0x7f6f55b47560, args=..., 
    construct=construct@entry=js::NO_CONSTRUCT)
    at /usr/src/debug/firefox-28.0/mozilla-release/js/src/vm/Interpreter.cpp:482
#37 0x00007f6f74d39f48 in js::Invoke (cx=cx@entry=0x7f6f55b47560, thisv=..., fval=..., argc=0, 
    argv=<optimized out>, rval=...) at /usr/src/debug/firefox-28.0/mozilla-release/js/src/vm/Interpreter.cpp:519
#38 0x00007f6f74c19337 in JS_CallFunctionValue (cx=cx@entry=0x7f6f55b47560, objArg=<optimized out>, fval=..., 
    argc=argc@entry=0, argv=<optimized out>, rval=rval@entry=0x7fff622cb740)
    at /usr/src/debug/firefox-28.0/mozilla-release/js/src/jsapi.cpp:5001
#39 0x00007f6f726f96c2 in mozilla::dom::Function::Call (this=this@entry=0x7f6f50bbfc40, cx=0x7f6f55b47560, 
    aThisObj=..., aThisObj@entry=..., arguments=..., aRv=...)
    at /usr/src/debug/firefox-28.0/mozilla-release/objdir/dom/bindings/FunctionBinding.cpp:35
#40 0x00007f6f72a4dbf2 in mozilla::dom::Function::Call<nsCOMPtr<nsISupports> > (this=this@entry=0x7f6f50bbfc40, 
    thisObj=..., arguments=..., aRv=..., 
    aExceptionHandling=aExceptionHandling@entry=mozilla::dom::CallbackObject::eReportExceptions)
    at ../../dist/include/mozilla/dom/FunctionBinding.h:55
#41 0x00007f6f72a4dd34 in nsGlobalWindow::RunTimeoutHandler (this=this@entry=0x7f6f4a4f7800, 
    aTimeout=aTimeout@entry=0x7f6f5812b630, aScx=<optimized out>)
    at /usr/src/debug/firefox-28.0/mozilla-release/dom/base/nsGlobalWindow.cpp:11733
#42 0x00007f6f72a4e623 in nsGlobalWindow::RunTimeout (this=0x7f6f4a4f7800, aTimeout=0x7f6f5812b630)
    at /usr/src/debug/firefox-28.0/mozilla-release/dom/base/nsGlobalWindow.cpp:11957
#43 0x00007f6f72a4e866 in nsGlobalWindow::TimerCallback (aTimer=<optimized out>, aClosure=<optimized out>)
    at /usr/src/debug/firefox-28.0/mozilla-release/dom/base/nsGlobalWindow.cpp:12203
#44 0x00007f6f7227fcef in nsTimerImpl::Fire (this=0x7f6f4a4e90b0)
    at /usr/src/debug/firefox-28.0/mozilla-release/xpcom/threads/nsTimerImpl.cpp:551
#45 0x00007f6f7227fdbd in nsTimerEvent::Run (this=0x7f6f581c70cc)
    at /usr/src/debug/firefox-28.0/mozilla-release/xpcom/threads/nsTimerImpl.cpp:635
#46 0x00007f6f7227d6d8 in nsThread::ProcessNextEvent (this=0x7f6f75145ac0, mayWait=<optimized out>, 
    result=0x7fff622cbc17) at /usr/src/debug/firefox-28.0/mozilla-release/xpcom/threads/nsThread.cpp:612
#47 0x00007f6f7223e00e in NS_ProcessNextEvent (thread=<optimized out>, mayWait=mayWait@entry=false)
    at /usr/src/debug/firefox-28.0/mozilla-release/xpcom/glue/nsThreadUtils.cpp:263
#48 0x00007f6f72409ee3 in mozilla::ipc::MessagePump::Run (this=0x7f6f6a2558c0, aDelegate=0x7f6f7517e500)
    at /usr/src/debug/firefox-28.0/mozilla-release/ipc/glue/MessagePump.cpp:85
#49 0x00007f6f723fd95f in RunHandler (this=0x7f6f7517e500)
    at /usr/src/debug/firefox-28.0/mozilla-release/ipc/chromium/src/base/message_loop.cc:215
#50 MessageLoop::Run (this=0x7f6f7517e500)
    at /usr/src/debug/firefox-28.0/mozilla-release/ipc/chromium/src/base/message_loop.cc:189
#51 0x00007f6f72982c2b in nsBaseAppShell::Run (this=0x7f6f66c84be0)
    at /usr/src/debug/firefox-28.0/mozilla-release/widget/xpwidgets/nsBaseAppShell.cpp:161
#52 0x00007f6f73275728 in nsAppStartup::Run (this=0x7f6f64624ba0)
    at /usr/src/debug/firefox-28.0/mozilla-release/toolkit/components/startup/nsAppStartup.cpp:276
#53 0x00007f6f73235ea1 in XREMain::XRE_mainRun (this=this@entry=0x7fff622cbeb0)
    at /usr/src/debug/firefox-28.0/mozilla-release/toolkit/xre/nsAppRunner.cpp:4059
#54 0x00007f6f73236131 in XREMain::XRE_main (this=this@entry=0x7fff622cbeb0, argc=argc@entry=1, 
    argv=argv@entry=0x7fff622cd3b8, aAppData=aAppData@entry=0x7fff622cc0b0)
    at /usr/src/debug/firefox-28.0/mozilla-release/toolkit/xre/nsAppRunner.cpp:4127
#55 0x00007f6f732363ab in XRE_main (argc=1, argv=0x7fff622cd3b8, aAppData=0x7fff622cc0b0, aFlags=<optimized out>)
    at /usr/src/debug/firefox-28.0/mozilla-release/toolkit/xre/nsAppRunner.cpp:4337
#56 0x0000000000404090 in do_main (argc=argc@entry=1, argv=argv@entry=0x7fff622cd3b8, xreDirectory=0x7f6f7512d0c0)
    at /usr/src/debug/firefox-28.0/mozilla-release/browser/app/nsBrowserApp.cpp:282
#57 0x000000000040382f in main (argc=1, argv=0x7fff622cd3b8)
    at /usr/src/debug/firefox-28.0/mozilla-release/browser/app/nsBrowserApp.cpp:635

Comment 1 Martin Stransky 2014-05-20 14:31:44 UTC
Hm, the backtrace is from plugin-container launch. It just executes the plugin-container with plugin itself and waits until is launched.

No idea what can cause the launch delay. Do you see any difference if you set "dom.ipc.plugins.enabled" to "false" in about:config?

Can you also try a new, fresh profile with flash plugin only and without any extension?

Comment 2 Garrett Holmstrom 2014-12-10 21:56:31 UTC
I haven't been able to reproduce this lately, so let's go ahead and close this for now.


Note You need to log in before you can comment on or make changes to this bug.