Crash in shutdownhang | _PR_MD_WAIT_CV | _PR_WaitCondVar | mozilla::CondVar::Wait | nsEventQueue::GetEvent | nsThread::nsChainedEventQueue::GetEvent | nsThread::ProcessNextEvent | NS_ProcessNextEvent | mozilla::dom::ServiceWorkerRegistrar::ProfileStopped

RESOLVED WONTFIX

Status

()

Core
General
--
critical
RESOLVED WONTFIX
a year ago
9 days ago

People

(Reporter: gchang, Unassigned)

Tracking

({crash, topcrash})

55 Branch
x86
Windows 7
crash, topcrash
Points:
---

Firefox Tracking Flags

(firefox54 affected)

Details

(crash signature)

(Reporter)

Description

a year ago
This bug was filed from the Socorro interface and is 
report bp-51c46dc5-07b9-48f3-b5b9-aed4d0170621.
=============================================================
Frame 	Module 	Signature 	Source
0 	ntdll.dll 	NtWaitForSingleObject 	
1 	kernelbase.dll 	WaitForSingleObjectEx 	
2 	kernel32.dll 	WaitForSingleObjectExImplementation 	
3 	kernel32.dll 	WaitForSingleObject 	
4 	nss3.dll 	_PR_MD_WAIT_CV 	nsprpub/pr/src/md/windows/w95cv.c:248
5 	nss3.dll 	_PR_WaitCondVar 	nsprpub/pr/src/threads/combined/prucv.c:172
6 	nss3.dll 	PR_WaitCondVar 	nsprpub/pr/src/threads/combined/prucv.c:525
7 	xul.dll 	mozilla::CondVar::Wait(unsigned int) 	obj-firefox/dist/include/mozilla/CondVar.h:79
8 	xul.dll 	nsEventQueue::GetEvent(bool, nsIRunnable**, mozilla::BaseAutoLock<mozilla::Mutex>&) 	xpcom/threads/nsEventQueue.cpp:76
9 	xul.dll 	nsThread::nsChainedEventQueue::GetEvent(bool, nsIRunnable**, mozilla::BaseAutoLock<mozilla::Mutex>&) 	xpcom/threads/nsThread.cpp:820
10 	xul.dll 	nsThread::ProcessNextEvent(bool, bool*) 	xpcom/threads/nsThread.cpp:1237
11 	xul.dll 	NS_ProcessNextEvent(nsIThread*, bool) 	xpcom/threads/nsThreadUtils.cpp:389
12 	xul.dll 	mozilla::dom::ServiceWorkerRegistrar::ProfileStopped() 	dom/workers/ServiceWorkerRegistrar.cpp:902
13 	xul.dll 	mozilla::dom::ServiceWorkerRegistrar::Observe(nsISupports*, char const*, char16_t const*) 	dom/workers/ServiceWorkerRegistrar.cpp:943
14 	xul.dll 	nsObserverList::NotifyObservers(nsISupports*, char const*, char16_t const*) 	xpcom/ds/nsObserverList.cpp:112
15 	xul.dll 	nsObserverService::NotifyObservers(nsISupports*, char const*, char16_t const*) 	xpcom/ds/nsObserverService.cpp:281
16 	xul.dll 	nsXREDirProvider::DoShutdown() 	toolkit/xre/nsXREDirProvider.cpp:1248
17 	xul.dll 	ScopedXPCOMStartup::~ScopedXPCOMStartup() 	toolkit/xre/nsAppRunner.cpp:1417
18 	xul.dll 	mozilla::UniquePtr<ScopedXPCOMStartup, mozilla::DefaultDelete<ScopedXPCOMStartup> >::reset(ScopedXPCOMStartup*) 	obj-firefox/dist/include/mozilla/UniquePtr.h:345
19 	xul.dll 	mozilla::UniquePtr<ScopedXPCOMStartup, mozilla::DefaultDelete<ScopedXPCOMStartup> >::operator=(std::nullptr_t) 	obj-firefox/dist/include/mozilla/UniquePtr.h:313
20 	xul.dll 	XREMain::XRE_main(int, char** const, mozilla::BootstrapConfig const&) 	toolkit/xre/nsAppRunner.cpp:4705
21 	xul.dll 	XRE_main(int, char** const, mozilla::BootstrapConfig const&) 	toolkit/xre/nsAppRunner.cpp:4768
22 	xul.dll 	mozilla::BootstrapImpl::XRE_main(int, char** const, mozilla::BootstrapConfig const&) 	toolkit/xre/Bootstrap.cpp:45
23 	firefox.exe 	wmain 	toolkit/xre/nsWindowsWMain.cpp:115
24 	firefox.exe 	__scrt_common_main_seh 	f:/dd/vctools/crt/vcstartup/src/startup/exe_common.inl:253
25 	kernel32.dll 	BaseThreadInitThunk 	
26 	ntdll.dll 	__RtlUserThreadStart 	
27 	ntdll.dll 	_RtlUserThreadStart

This is #5 topcrash in FF54 and there is a spike in FF54 in the last 3 days.
(Reporter)

Updated

a year ago
status-firefox54: --- → affected
(Reporter)

Comment 1

a year ago
Hi Nathan,
Can you help find someone to look at this? It seems we have many shutdownhang crash.
Flags: needinfo?(nfroyd)
The only threads that look like they have anything interesting going on here are:

Thread 3
Frame 	Module 	Signature 	Source
0 	ntdll.dll 	ZwGetContextThread 	
1 	ntdll.dll 	ZwClose 	
2 	kernel32.dll 	CloseHandleImplementation 	
3 	dbghelp.dll 	Win32LiveSystemProvider::OpenMapping(unsigned short const*, unsigned long*, unsigned short*, unsigned long, void**) 	
4 	dbghelp.dll 	GenAllocateModuleObject(_MINIDUMP_STATE*, _INTERNAL_PROCESS*, unsigned short*, unsigned __int64, unsigned long, _INTERNAL_MODULE**) 	
5 	dbghelp.dll 	GenAllocateModuleObject(_MINIDUMP_STATE*, _INTERNAL_PROCESS*, unsigned short*, unsigned __int64, unsigned long, _INTERNAL_MODULE**) 	
6 	ntdll.dll 	RtlpFreeHeap 	
7 	ntdll.dll 	ZwClose 	
8 	ntdll.dll 	ZwReadVirtualMemory 	
9 	dbghelp.dll 	Win32LiveSystemProvider::GetValidVirtualRange(void*, unsigned __int64, unsigned long, unsigned __int64*, unsigned long*) 	
10 	xul.dll 	mozilla::dom::CanvasRenderingContext2DBinding::Wrap(JSContext*, mozilla::dom::CanvasRenderingContext2D*, nsWrapperCache*, JS::Handle<JSObject*>, JS::MutableHandle<JSObject*>) 	obj-firefox/dom/bindings/CanvasRenderingContext2DBinding.cpp:6807
11 		@0x15ef 	
12 	xul.dll 	google_breakpad::ExceptionHandler::HandlePureVirtualCall() 	toolkit/crashreporter/breakpad-client/windows/handler/exception_handler.cc:692
13 	dbghelp.dll 	GetSystemType(_MINIDUMP_STATE*) 	
14 		@0xc0775f 	
15 	xul.dll 	nsPresShellEventCB::HandleEvent(mozilla::EventChainPostVisitor&) 	layout/base/PresShell.cpp:515
16 	xul.dll 	CrashReporter::FreeBreakpadVM 	toolkit/crashreporter/nsExceptionHandler.cpp:1454
17 	xul.dll 	google_breakpad::ExceptionHandler::WriteMinidumpWithException(unsigned long, _EXCEPTION_POINTERS*, MDRawAssertionInfo*) 	toolkit/crashreporter/breakpad-client/windows/handler/exception_handler.cc:847
18 	xul.dll 	google_breakpad::ExceptionHandler::ExceptionHandlerThreadMain(void*) 	toolkit/crashreporter/breakpad-client/windows/handler/exception_handler.cc:394
19 	kernel32.dll 	BaseThreadInitThunk 	
20 	ntdll.dll 	__RtlUserThreadStart 	
21 	ntdll.dll 	_RtlUserThreadStart

...which I think is completely bogus, and this:

Thread 26
Frame 	Module 	Signature 	Source
0 	ntdll.dll 	ZwRequestWaitReplyPort 	
1 	dwmapi.dll 	CPortClient::SendComplexSyncRequestWow64(unsigned long, void const*, short, void*, short, long*) 	
2 	dwmapi.dll 	CApiPortClient::SendRequest(void const*, short, long*, void*, short) 	
3 	dwmapi.dll 	DwmFlush 	
4 	xul.dll 	D3DVsyncSource::D3DVsyncDisplay::VBlankLoop() 	gfx/thebes/gfxWindowsPlatform.cpp:1860
5 	xul.dll 	mozilla::detail::RunnableMethodImpl<mozilla::net::CacheFileContextEvictor* const, nsresult ( mozilla::net::CacheFileContextEvictor::*)(void), 1, 0>::Run() 	obj-firefox/dist/include/nsThreadUtils.h:890
6 	xul.dll 	MessageLoop::RunTask(already_AddRefed<mozilla::Runnable>) 	ipc/chromium/src/base/message_loop.cc:358
7 	xul.dll 	MessageLoop::DeferOrRunPendingTask(MessageLoop::PendingTask&&) 	ipc/chromium/src/base/message_loop.cc:366
8 	xul.dll 	MessageLoop::DoWork() 	ipc/chromium/src/base/message_loop.cc:441
9 	xul.dll 	base::MessagePumpDefault::Run(base::MessagePump::Delegate*) 	ipc/chromium/src/base/message_pump_default.cc:36

which is also not super-helpful.  Ben, do you know why we might be hanging indefinitely in ServiceWorkerRegistrar::ProfileStopped(), maybe some runnable didn't get dispatched?
Flags: needinfo?(nfroyd) → needinfo?(bkelly)
Well, it could be waiting for disk writes to complete.  I think we have seen shutdown hang crashes before on storage stuff.  We can't control how fast/slow disk writes are, unfortunately.`

Maybe Andrea has more ideas.
Flags: needinfo?(bkelly) → needinfo?(amarchesini)
It is use PBackground actor here, though, and the PBackground thread appears busy:

0 	ntdll.dll 	NtWaitForSingleObject 	
1 	KERNELBASE.dll 	WaitForSingleObjectEx 	
2 	kernel32.dll 	WaitForSingleObjectExImplementation 	
3 	kernel32.dll 	WaitForSingleObject 	
4 	nss3.dll 	_PR_MD_WAIT_CV 	nsprpub/pr/src/md/windows/w95cv.c:248
5 	nss3.dll 	_PR_WaitCondVar 	nsprpub/pr/src/threads/combined/prucv.c:172
6 	nss3.dll 	PR_WaitCondVar 	nsprpub/pr/src/threads/combined/prucv.c:525
7 	xul.dll 	mozilla::CondVar::Wait(unsigned int) 	obj-firefox/dist/include/mozilla/CondVar.h:79
8 	xul.dll 	mozilla::ipc::ProcessLink::Open(IPC::Channel*, MessageLoop*, mozilla::ipc::Side) 	ipc/glue/MessageLink.cpp:125
9 	xul.dll 	mozilla::ipc::MessageChannel::Open(IPC::Channel*, MessageLoop*, mozilla::ipc::Side) 	ipc/glue/MessageChannel.cpp:679
10 	xul.dll 	mozilla::ipc::IToplevelProtocol::Open(IPC::Channel*, unsigned long, MessageLoop*, mozilla::ipc::Side) 	ipc/glue/ProtocolUtils.cpp:620
11 	xul.dll 	mozilla::ipc::Endpoint<mozilla::gfx::PVsyncBridgeParent>::Bind(mozilla::gfx::PVsyncBridgeParent*) 	obj-firefox/dist/include/mozilla/ipc/ProtocolUtils.h:627
12 	xul.dll 	`anonymous namespace'::ParentImpl::ConnectActorRunnable::Run 	ipc/glue/BackgroundImpl.cpp:1458
13 	xul.dll 	nsThread::ProcessNextEvent(bool, bool*) 	xpcom/threads/nsThread.cpp:1264
14 	xul.dll 	NS_ProcessNextEvent(nsIThread*, bool) 	xpcom/threads/nsThreadUtils.cpp:389
15 	xul.dll 	mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) 	ipc/glue/MessagePump.cpp:368
16 	xul.dll 	MessageLoop::RunHandler() 	ipc/chromium/src/base/message_loop.cc:231
17 	xul.dll 	MessageLoop::Run() 	ipc/chromium/src/base/message_loop.cc:211
18 	xul.dll 	nsThread::ThreadFunc(void*) 	xpcom/threads/nsThread.cpp:495
19 	nss3.dll 	_PR_NativeRunThread 	nsprpub/pr/src/threads/combined/pruthr.c:397
20 	nss3.dll 	pr_root 	nsprpub/pr/src/md/windows/w95thred.c:95
21 	ucrtbase.dll 	_o__CIpow 	
22 	kernel32.dll 	BaseThreadInitThunk 	
23 	ntdll.dll 	__RtlUserThreadStart 	
24 	ntdll.dll 	_RtlUserThreadStart
Currently the #4 browser topcrash in 54.0.1, and seems to only be present in 54 release, ESR and betas.
Keywords: topcrash
Marking WONTFIX given this didn't reoccur in 55+.
Status: NEW → RESOLVED
Last Resolved: 10 months ago
Resolution: --- → WONTFIX
Flags: needinfo?(amarchesini)
You need to log in before you can comment on or make changes to this bug.