Closed Bug 1132530 Opened 9 years ago Closed 9 years ago

[e10s] Firefox occasionally hangs with lots of tabs

Categories

(Core :: DOM: Content Processes, defect)

x86_64
Windows 8.1
defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME
Tracking Status
e10s m6+ ---

People

(Reporter: cmtalbert, Assigned: billm)

Details

I can't say when I can repro this, but I've done it now three times. This time, I had the time to open it in a debugger and get stacks. I don't see any smoking guns in the stacks, but I do see on the main thread in the parent that we are trying to process synchronous events from the child and it appears the child is performing a synchronous event at the same time to do something with cookies.

I am often running with at least a 100 tabs open, most of them are google docs, etherpads and bugzilla bugs. So, several things that can set a lot of cookies and do some measure of updating in the background.

Here is my parent process, main thread:
 	[External Code]	
 	[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]	
 	xul.dll!nsAppShell::EventWindowProc(HWND__ * hwnd, unsigned int uMsg, unsigned int wParam, long lParam) Line 113	C++
 	[External Code]	
>	nss3.dll!md_UnlockAndPostNotifies(_MDLock * lock, PRThread * waitThred, _MDCVar * waitCV) Line 154	C
 	xul.dll!nsBaseAppShell::DoProcessNextNativeEvent(bool mayWait, unsigned int recursionDepth) Line 145	C++
 	xul.dll!nsBaseAppShell::OnProcessNextEvent(nsIThreadInternal * thr, bool mayWait, unsigned int recursionDepth) Line 298	C++
 	xul.dll!nsThread::ProcessNextEvent(bool aMayWait, bool * aResult) Line 830	C++
 	xul.dll!NS_ProcessNextEvent(nsIThread * aThread, bool aMayWait) Line 265	C++
 	xul.dll!mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate * aDelegate) Line 141	C++
 	xul.dll!MessageLoop::RunHandler() Line 227	C++
 	xul.dll!MessageLoop::Run() Line 201	C++
 	xul.dll!nsBaseAppShell::Run() Line 166	C++
 	xul.dll!nsAppShell::Run() Line 178	C++
 	xul.dll!nsAppStartup::Run() Line 282	C++
 	xul.dll!XREMain::XRE_mainRun() Line 4160	C++
 	xul.dll!XREMain::XRE_main(int argc, char * * argv, const nsXREAppData * aAppData) Line 4236	C++
 	xul.dll!XRE_main(int argc, char * * argv, const nsXREAppData * aAppData, unsigned int aFlags) Line 4457	C++
 	firefox.exe!do_main(int argc, char * * argv, nsIFile * xreDirectory) Line 294	C++
 	firefox.exe!NS_internal_main(int argc, char * * argv) Line 669	C++
 	firefox.exe!wmain(int argc, wchar_t * * argv) Line 124	C++
 	[External Code]	

Here is my child process, main thread
 	[External Code]	
 	[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]	
 	nss3.dll!PR_WaitCondVar(PRCondVar * cvar, unsigned int timeout) Line 525	C
 	xul.dll!mozilla::CondVar::Wait(unsigned int aInterval) Line 80	C++
 	xul.dll!mozilla::ipc::MessageChannel::WaitForSyncNotify() Line 832	C++
 	xul.dll!mozilla::ipc::MessageChannel::Send(IPC::Message * aMsg, IPC::Message * aReply) Line 830	C++
 	xul.dll!mozilla::net::PCookieServiceChild::SendGetCookieString(const mozilla::ipc::URIParams & host, const bool & isForeign, const bool & fromHttp, const IPC::SerializedLoadContext & loadContext, nsCString * result) Line 73	C++
>	xul.dll!mozilla::net::CookieServiceChild::GetCookieStringInternal(nsIURI * aHostURI, nsIChannel * aChannel, char * * aCookieString, bool aFromHttp) Line 124	C++
 	xul.dll!mozilla::net::CookieServiceChild::GetCookieString(nsIURI * aHostURI, nsIChannel * aChannel, char * * aCookieString) Line 179	C++
 	xul.dll!nsHTMLDocument::GetCookie(nsAString_internal & aCookie, mozilla::ErrorResult & rv) Line 1295	C++
 	xul.dll!mozilla::dom::HTMLDocumentBinding::get_cookie(JSContext * cx, JS::Handle<JSObject *> obj, nsHTMLDocument * self, JSJitGetterCallArgs args) Line 101	C++
 	xul.dll!js::Invoke(JSContext * cx, JS::CallArgs args, js::MaybeConstruct construct) Line 491	C++
 	xul.dll!js::InvokeGetterOrSetter(JSContext * cx, JSObject * obj, JS::Value fval, unsigned int argc, JS::Value * argv, JS::MutableHandle<JS::Value> rval) Line 617	C++
 	xul.dll!js::GetProperty(JSContext * cx, JS::Handle<JSObject *> obj, JS::Handle<JSObject *> receiver, JS::Handle<jsid> id, JS::MutableHandle<JS::Value> vp) Line 1392	C++
 	xul.dll!mozilla::dom::GetPropertyOnPrototype(JSContext * cx, JS::Handle<JSObject *> proxy, JS::Handle<jsid> id, bool * found, JS::MutableHandle<JS::Value> vp) Line 1652	C++
 	xul.dll!mozilla::dom::HTMLDocumentBinding::DOMProxyHandler::get(JSContext * cx, JS::Handle<JSObject *> proxy, JS::Handle<JSObject *> receiver, JS::Handle<jsid> id, JS::MutableHandle<JS::Value> vp) Line 2166	C++
 	xul.dll!js::Proxy::get(JSContext * cx, JS::Handle<JSObject *> proxy, JS::Handle<JSObject *> receiver, JS::Handle<jsid> id, JS::MutableHandle<JS::Value> vp) Line 298	C++
 	xul.dll!js::proxy_GetProperty(JSContext * cx, JS::Handle<JSObject *> obj, JS::Handle<JSObject *> receiver, JS::Handle<jsid> id, JS::MutableHandle<JS::Value> vp) Line 587	C++
 	xul.dll!js::GetProperty(JSContext * cx, JS::Handle<JSObject *> obj, JS::Handle<JSObject *> receiver, JS::Handle<jsid> id, JS::MutableHandle<JS::Value> vp) Line 1391	C++
 	xul.dll!GetPropertyOperation(JSContext * cx, js::InterpreterFrame * fp, JS::Handle<JSScript *> script, unsigned char * pc, JS::MutableHandle<JS::Value> lval, JS::MutableHandle<JS::Value> vp) Line 249	C++
 	xul.dll!Interpret(JSContext * cx, js::RunState & state) Line 2363	C++
 	xul.dll!js::RunScript(JSContext * cx, js::RunState & state) Line 441	C++
 	xul.dll!js::Invoke(JSContext * cx, JS::CallArgs args, js::MaybeConstruct construct) Line 513	C++
 	xul.dll!js::Invoke(JSContext * cx, const JS::Value & thisv, const JS::Value & fval, unsigned int argc, const JS::Value * argv, JS::MutableHandle<JS::Value> rval) Line 547	C++
 	xul.dll!JS::Call(JSContext * cx, JS::Handle<JS::Value> thisv, JS::Handle<JS::Value> fval, const JS::HandleValueArray & args, JS::MutableHandle<JS::Value> rval) Line 4243	C++
 	xul.dll!mozilla::dom::Function::Call(JSContext * cx, JS::Handle<JS::Value> aThisVal, const nsTArray<JS::Value> & arguments, JS::MutableHandle<JS::Value> aRetVal, mozilla::ErrorResult & aRv) Line 37	C++
 	xul.dll!mozilla::dom::Function::Call<nsCOMPtr<nsISupports> >(const nsCOMPtr<nsISupports> & thisObjPtr, const nsTArray<JS::Value> & arguments, JS::MutableHandle<JS::Value> aRetVal, mozilla::ErrorResult & aRv, mozilla::dom::CallbackObject::ExceptionHandling aExceptionHandling, JSCompartment * aCompartment) Line 58	C++
 	xul.dll!nsGlobalWindow::RunTimeoutHandler(nsTimeout * aTimeout, nsIScriptContext * aScx) Line 12315	C++
 	xul.dll!nsGlobalWindow::RunTimeout(nsTimeout * aTimeout) Line 12540	C++
 	xul.dll!nsGlobalWindow::TimerCallback(nsITimer * aTimer, void * aClosure) Line 12786	C++
 	xul.dll!nsTimerImpl::Fire() Line 631	C++
 	xul.dll!nsTimerEvent::Run() Line 729	C++
 	xul.dll!nsThread::ProcessNextEvent(bool aMayWait, bool * aResult) Line 861	C++
 	xul.dll!NS_ProcessNextEvent(nsIThread * aThread, bool aMayWait) Line 265	C++
 	xul.dll!mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate * aDelegate) Line 141	C++
 	xul.dll!mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate * aDelegate) Line 302	C++
 	xul.dll!MessageLoop::RunHandler() Line 227	C++
 	xul.dll!MessageLoop::Run() Line 201	C++
 	xul.dll!nsBaseAppShell::Run() Line 166	C++
 	xul.dll!nsAppShell::Run() Line 178	C++
 	xul.dll!XRE_RunAppShell() Line 738	C++
 	xul.dll!mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate * aDelegate) Line 279	C++
 	xul.dll!MessageLoop::RunHandler() Line 227	C++
 	xul.dll!MessageLoop::Run() Line 201	C++
 	xul.dll!XRE_InitChildProcess(int aArgc, char * * aArgv, mozilla::gmp::GMPLoader * aGMPLoader) Line 579	C++
 	plugin-container.exe!content_process_main(int argc, char * * argv) Line 212	C++
 	plugin-container.exe!wmain(int argc, wchar_t * * argv) Line 124	C++
 	[External Code]	

I don't see much else interesting in these stacks except some DNS resolver threads in the parent and a hello message being enqueued in the child. Hello was not active when this happened, but I had completed a hello call about thirty minutes prior to this freeze happening. Not sure if I'd used hello or not in the previous times that I captured this. Will take a look at that going forward.
Assignee: nobody → wmccloskey
Do you still see this Client?
Flags: needinfo?(ctalbert)
Er, Clint, sorry. My fingers are used to typing client I guess
I haven't seen it in a while now. Could mark as WFM if no one else is really reporting it.
Flags: needinfo?(ctalbert)
Thanks!
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.