Closed Bug 705613 Opened 13 years ago Closed 6 years ago

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

Categories

(Core :: Graphics, defect)

x86
Windows Vista
defect
Not set
critical

Tracking

()

RESOLVED WONTFIX

People

(Reporter: scoobidiver, Unassigned)

References

Details

(Keywords: hang)

Crash Data

Attachments

(1 file)

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?
Keywords: crash, regressionhang
Closing because no crash reported since 12 weeks.
Status: NEW → RESOLVED
Closed: 6 years 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.

Attachment

General

Created:
Updated:
Size: