Closed
Bug 1234531
Opened 9 years ago
Closed 8 years ago
Shutdown hang on thread pool thread EncodingRunnable if the browser is closed shortly after being opened
Categories
(Core :: XPCOM, defect)
Core
XPCOM
Tracking
()
RESOLVED
DUPLICATE
of bug 1244118
People
(Reporter: jimm, Unassigned)
References
Details
This is a recent regression. str: 1) enable e10s 2) disable any session restore features 3) set your home page to about:blank 4) close firefox 5) open task manager 6) open firefox 7) navigate the first tab a simple web page 8) close firefox In task manager, plugin-container should shut down immediately, but firefox.exe will stay around for five to ten seconds, and then close. This happens on every new session.
Comment 2•8 years ago
|
||
I tried reproducing on Mac and Win7. In both cases, firefox.exe only hung around in the task manager for 1-2 seconds after quitting Nightly.
Flags: needinfo?(twalker)
Comment 3•8 years ago
|
||
jim, I can't say I've seen issues like this either
Flags: needinfo?(jmathies)
Reporter | ||
Comment 4•8 years ago
|
||
This is still happening for me. Appears to be a race in a thread pool related to image decoding. thread: EncodingRunnable #1 thread stack: ntdll.dll!_ZwWaitForSingleObject@12() Unknown KernelBase.dll!_WaitForSingleObjectEx@12() Unknown kernel32.dll!_WaitForSingleObjectExImplementation@12() Unknown kernel32.dll!_WaitForSingleObject@8() Unknown nss3.dll!_PR_MD_WAIT_CV(_MDCVar * cv, _MDLock * lock, unsigned int timeout) Line 250 C nss3.dll!_PR_WaitCondVar(PRThread * thread, PRCondVar * cvar, PRLock * lock, unsigned int timeout) Line 173 C 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!nsThreadPool::Run() Line 218 C++ xul.dll!nsThread::ProcessNextEvent(bool aMayWait, bool * aResult) Line 997 C++ xul.dll!NS_ProcessNextEvent(nsIThread * aThread, bool aMayWait) Line 297 C++ xul.dll!mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate * aDelegate) Line 326 C++ xul.dll!MessageLoop::RunHandler() Line 228 C++ xul.dll!MessageLoop::Run() Line 202 C++ xul.dll!nsThread::ThreadFunc(void * aArg) Line 403 C++ nss3.dll!_PR_NativeRunThread(void * arg) Line 419 C nss3.dll!pr_root(void * arg) Line 95 C msvcr120.dll!__beginthreadex() Unknown msvcr120.dll!__endthreadex() Unknown kernel32.dll!@BaseThreadInitThunk@12() Unknown ntdll.dll!___RtlUserThreadStart@8() Unknown ntdll.dll!__RtlUserThreadStart@8() Unknown
Component: General → XPCOM
Flags: needinfo?(jmathies)
Product: Firefox → Core
Summary: Long delay in shutting down firefox.exe if the browser is closed shortly after being opened → Shutdown hang on thread pool thread EncodingRunnable if the browser is closed shortly after being opened
Reporter | ||
Comment 5•8 years ago
|
||
Here's the threadpool output, the *** lines are debug statements I've added to nsThreadManager shutdown code. THRD-P(1E4106A0) constructor!!! THRD-P(1E4106A0) thread limit [2] THRD-P(1E4106A0) idle thread limit [1] THRD-P(1E4106A0) dispatch [0 0] THRD-P(1E4106A0) put [0 0 2] THRD-P(1E4106A0) put [spawn=1] THRD-P(1E4106A0) put [1E51A680 kill=0] THRD-P(1E4106A0) enter EncodingRunnable THRD-P(1E4106A0) EncodingRunnable running [1AF3EE20] THRD-P(1E4106A0) EncodingRunnable waiting [30000] *** inspecting thread 1E51A680 *** shutting down EncodingRunnable #1 (1E51A680) (long wait) THRD-P(1E4106A0) done waiting THRD-P(1E4106A0) shutdown async [1E51A680] THRD-P(1E4106A0) leave *** exiting ThreadFunc: EncodingRunnable #1 (1E51A680) *** done with 1E51A680
Reporter | ||
Comment 6•8 years ago
|
||
The hang appears to be on any thread pool thread that doesn't shut down before nsThreadManager::Shutdown() gets called. THRD-P(1D99F4C0) constructor!!! THRD-P(1D99F4C0) thread limit [2] THRD-P(1D99F4C0) idle thread limit [1] THRD-P(1D99F4C0) dispatch [0 0] THRD-P(1D99F4C0) put [0 0 2] THRD-P(1D99F4C0) put [spawn=1] THRD-P(1D99F4C0) put [1B829680 kill=0] THRD-P(1D99F4C0) enter EncodingRunnable THRD-P(1D99F4C0) EncodingRunnable running [1AC3CCC0] THRD-P(1D99F4C0) EncodingRunnable waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [1B88C7E8] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [1C699C48] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [1D9961A8] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans running [1D9961F8] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [1D9961F8] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [1D996248] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [1D996388] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [1D9962E8] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [1D996518] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [1D996518] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [1D9965B8] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [1D9969C8] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [1D996BA8] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [1D996BF8] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [1D996C48] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [1D996CE8] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [1D9AD888] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [1E64D388] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [16FC4068] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [1FBCAFB8] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(5BE5E0) dispatch [0 0] THRD-P(5BE5E0) put [1 1 5] THRD-P(5BE5E0) put [spawn=0] THRD-P(5BE5E0) SSL Cert done waiting THRD-P(5BE5E0) SSL Cert running [C7B6640] THRD-P(5BE5E0) dispatch [0 0] THRD-P(5BE5E0) put [0 1 5] THRD-P(5BE5E0) put [spawn=1] THRD-P(5BE5E0) put [142A6800 kill=0] THRD-P(5BE5E0) enter SSL Cert THRD-P(5BE5E0) SSL Cert running [C7B6700] THRD-P(5BE5E0) SSL Cert waiting [30000] THRD-P(5BE5E0) SSL Cert waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans running [16FD24C8] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(5BE5E0) SSL Cert shutdown called THRD-P(5BE5E0) SSL Cert shutdown notify THRD-P(5BE5E0) SSL Cert calling shutdown on threads THRD-P(5BE5E0) SSL Cert done waiting THRD-P(5BE5E0) SSL Cert done waiting THRD-P(5BE5E0) SSL Cert leave THRD-P(5BE5E0) SSL Cert leave *** exiting ThreadFunc: SSL Cert #1 (1B0FBC80) *** exiting ThreadFunc: SSL Cert #2 (142A6800) THRD-P(5BE5E0) SSL Cert shutdown complete *** exiting ThreadFunc: Socket Thread (53F680) *** exiting ThreadFunc: mozStorage #5 (1B8B5B80) *** exiting ThreadFunc: Storage I/O (1ADEFC80) *** exiting ThreadFunc: mozStorage #3 (13EE0400) *** exiting ThreadFunc: IndexedDB #1 (1B0FBD00) *** exiting ThreadFunc: URL Classifier (18413B00) *** exiting ThreadFunc: (null) (165B5880) *** exiting ThreadFunc: mozStorage #6 (AF6D780) *** exiting ThreadFunc: mozStorage #2 (1A8F1B80) *** exiting ThreadFunc: mozStorage #1 (19828E80) THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [C27C5C0] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [C2F5A40] THRD-P(C81BE80) StreamTrans waiting [30000] THRD-P(C81BE80) dispatch [0 0] THRD-P(C81BE80) put [1 1 25] THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans running [C4BB5E0] THRD-P(C81BE80) put [spawn=0] THRD-P(C81BE80) StreamTrans waiting [30000] *** exiting ThreadFunc: Cache I/O (BF12D00) *** exiting ThreadFunc: Proxy Resolution (1B0FB980) *** exiting ThreadFunc: thread shutdown (C26E500) *** exiting ThreadFunc: mozStorage #4 (1B8B5080) *** exiting ThreadFunc: DOM Worker (1D9182C0) *** exiting ThreadFunc: DOM Worker (142387D0) *** exiting ThreadFunc: DOM Worker (1417F980) *** exiting ThreadFunc: IPDL Background (13413580) *** exiting ThreadFunc: HTML5 Parser (13396300) *** exiting ThreadFunc: ImgDecoder #1 (CD3C380) *** exiting ThreadFunc: ImgDecoder #3 (CD3C480) *** exiting ThreadFunc: ImgDecoder #4 (CD3C500) *** exiting ThreadFunc: ImgDecoder #2 (CD3C400) *** exiting ThreadFunc: ImgDecoder #6 (CD3C600) *** exiting ThreadFunc: ImgDecoder #7 (CD3C680) *** exiting ThreadFunc: ImgDecoder #5 (CD3C580) *** exiting ThreadFunc: ImageIO (CD3C700) THRD-P(C81BE80) StreamTrans shutdown called THRD-P(C81BE80) StreamTrans shutdown notify THRD-P(C81BE80) StreamTrans done waiting THRD-P(C81BE80) StreamTrans leave THRD-P(C81BE80) StreamTrans calling shutdown on threads *** exiting ThreadFunc: StreamTrans #5 (13CB1580) THRD-P(C81BE80) StreamTrans shutdown complete *** exiting ThreadFunc: GMPThread (C84F180) *** exiting ThreadFunc: Link Monitor (53F600) *** exiting ThreadFunc: Timer (540B80) *** nsThreadManager::Shutdown() *** inspecting thread 1B730B00 *** inspecting thread 7A96680 *** inspecting thread CD3BF00 *** inspecting thread CD3BD00 *** inspecting thread 1A8F1300 *** inspecting thread CD3C800 *** inspecting thread 53F300 *** inspecting thread 1B829680 *** shutting down EncodingRunnable #1 (1B829680) THRD-P(1D99F4C0) EncodingRunnable done waiting THRD-P(1D99F4C0) shutdown async [1B829680] THRD-P(1D99F4C0) EncodingRunnable leave *** exiting ThreadFunc: EncodingRunnable #1 (1B829680) *** done with 1B829680 *** done with sync waiting. The program '[1664] firefox.exe' has exited with code 0 (0x0).
Reporter | ||
Comment 7•8 years ago
|
||
This EncodingRunnable code was just introduced. This bug appears to be a dupe of bug 1244118.
You need to log in
before you can comment on or make changes to this bug.
Description
•