Hang in mozilla::layers::SwapChainD3D9::Present on Win Vista and mozilla::layers::LayerManagerD3D10::Render on Win 7

RESOLVED WONTFIX

Status

()

--
critical
RESOLVED WONTFIX
7 years ago
3 months ago

People

(Reporter: scoobidiver, Unassigned)

Tracking

({hang})

Trunk
x86
Windows Vista
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

(crash signature)

Attachments

(1 attachment)

(Reporter)

Description

7 years ago
It's #59 top crasher in 11.0a1/20111126.
It happens mainly on Windows Vista.

Stack traces in thread 0 are various:
* Windows Vista:
Frame 	Module 	Signature [Expand] 	Source
0 	ntdll.dll 	KiFastSystemCallRet 	
1 	gdi32.dll 	NtGdiDdDDIPresent 	
2 	d3d9.dll 	PresentCB 	
3 	nvd3dum.dll 	nvd3dum.dll@0x3a352a 	
4 	nvd3dum.dll 	nvd3dum.dll@0x3a33e3 	
5 	nvd3dum.dll 	nvd3dum.dll@0x38b271 	
6 	d3d9.dll 	_alloca_probe_16 	
7 	d3d9.dll 	D3D9SetSchedulingPriority 	
8 	d3d9.dll 	CSwapChain::Present 	
9 	xul.dll 	mozilla::layers::SwapChainD3D9::Present 	gfx/layers/d3d9/DeviceManagerD3D9.cpp:170
10 	xul.dll 	mozilla::layers::LayerManagerD3D9::Render 	gfx/layers/d3d9/LayerManagerD3D9.cpp:355
11 	xul.dll 	mozilla::layers::LayerManagerD3D9::EndTransaction 	gfx/layers/d3d9/LayerManagerD3D9.cpp:184
12 	xul.dll 	nsDisplayList::PaintForFrame 	layout/base/nsDisplayList.cpp:635
13 	xul.dll 	nsLayoutUtils::PaintFrame 	layout/base/nsLayoutUtils.cpp:1701
14 	xul.dll 	PresShell::Paint 	layout/base/nsPresShell.cpp:5472
15 	xul.dll 	nsViewManager::Refresh 	view/src/nsViewManager.cpp:389
16 	xul.dll 	nsViewManager::DispatchEvent 	view/src/nsViewManager.cpp:885
17 	xul.dll 	AttachedHandleEvent 	view/src/nsView.cpp:191
18 	xul.dll 	nsWindow::DispatchEvent 	widget/src/windows/nsWindow.cpp:3614
19 	xul.dll 	nsWindow::DispatchWindowEvent 	widget/src/windows/nsWindow.cpp:3642
20 	xul.dll 	nsWindow::OnPaint 	
21 	ntdll.dll 	RtlUnicodeStringToAnsiString 	
22 	ntdll.dll 	RtlUnicodeStringToAnsiString 

Frame 	Module 	Signature [Expand] 	Source
0 	ntdll.dll 	KiFastSystemCallRet 	
1 	gdi32.dll 	NtGdiDdDDIPresent 	
2 	d3d9.dll 	PresentCB 	
3 	igdumd32.dll 	igdumd32.dll@0x1b70 

Frame 	Module 	Signature [Expand] 	Source
0 	gdi32.dll 	NtGdiDdDDIPresent 	
1 	dxgi.dll 	CD3D10Device::PresentCB 

* Windows 7:
Frame 	Module 	Signature [Expand] 	Source
0 	gdi32.dll 	NtGdiDdDDIPresent 	
1 	gdi32.dll 	NtGdiDdDDIPresent 	
2 	dxgi.dll 	CD3D10Device::PresentCB 	
3 	nvwgf2um.dll 	nvwgf2um.dll@0x55cb8 	
4 	nvwgf2um.dll 	nvwgf2um.dll@0xa75fb 	
5 	nvwgf2um.dll 	nvwgf2um.dll@0x16a491 	
6 	nvwgf2um.dll 	nvwgf2um.dll@0x3e339 	
7 	dxgi.dll 	CD3D10Device::Present 	
8 	dxgi.dll 	CDXGISwapChainBase<IDXGISwapChain>::PresentImpl 	
9 	dxgi.dll 	CDXGISwapChainBase<IDXGISwapChain>::Present 	
10 	xul.dll 	mozilla::layers::LayerManagerD3D10::Render 	gfx/layers/d3d10/LayerManagerD3D10.cpp:779
11 	xul.dll 	mozilla::layers::LayerManagerD3D10::EndTransaction 	gfx/layers/d3d10/LayerManagerD3D10.cpp:355
12 	xul.dll 	nsDisplayList::PaintForFrame 	layout/base/nsDisplayList.cpp:635
13 	xul.dll 	nsLayoutUtils::PaintFrame 	layout/base/nsLayoutUtils.cpp:1701
14 	xul.dll 	PresShell::Paint 	layout/base/nsPresShell.cpp:5472
15 	xul.dll 	nsViewManager::Refresh 	view/src/nsViewManager.cpp:389
16 	xul.dll 	nsViewManager::DispatchEvent 	view/src/nsViewManager.cpp:885
17 	xul.dll 	AttachedHandleEvent 	view/src/nsView.cpp:191
18 	xul.dll 	nsWindow::DispatchEvent 	widget/src/windows/nsWindow.cpp:3614
19 	xul.dll 	nsWindow::DispatchWindowEvent 	widget/src/windows/nsWindow.cpp:3642

More reports at:
https://crash-stats.mozilla.com/report/list?signature=chromehang%20|%20NtGdiDdDDIPresent
Perhaps these are just syscalls that can take unbounded amounts of time with shitty drivers? :-/
Technically IDirect3DSwapChain9::Present() supports D3DPRESENT_DONOTWAIT, though I'm not sure what that actually implies unless the device was created with something like D3DPRESENT_INTERVAL_ONE (in which case, I -assume- it would return immediately the first time, and return D3DERR_WASSTILLDRAWING if called immediately after). Honestly I don't think the documentation for this flag is very good.

On a related note however, I wonder if drawing off the refresh driver would help with this, since that practically guarantees that the GPU will have finished processing before the next present call (and in any case it wouldn't block the main thread, right?). But admittedly this is just speculation - are there any correlations with specific drivers?
(Reporter)

Comment 3

7 years ago
Created attachment 577304 [details]
Driver versions in crashes
(Reporter)

Updated

7 years ago
Keywords: crash, regression → hang
Closing because no crash reported since 12 weeks.
Status: NEW → RESOLVED
Last Resolved: 3 months ago
Resolution: --- → WONTFIX
Closing because no crash reported since 12 weeks.
You need to log in before you can comment on or make changes to this bug.