https://bugs.winehq.org/show_bug.cgi?id=55735
Bug ID: 55735 Summary: d3d8:device & d3d9:device - test_reset() sometimes gets error 0x88760873 on Windows Product: Wine Version: unspecified Hardware: x86-64 OS: Windows Status: NEW Severity: normal Priority: P2 Component: d3d Assignee: wine-bugs@winehq.org Reporter: fgouget@codeweavers.com
d3d8:device & d3d9:device - test_reset() sometimes gets error 0x88760873 on Windows. It looks like this can happen after any IDirect3DDevice*_Reset() call, leading to various symptoms:
d3d8:device:
device.c:1747: Test failed: Reset failed, hr 0x88760873. device.c:1749: Test failed: TestCooperativeLevel failed, hr 0x88760869. device.c:1761: Test failed: D3DVIEWPORT->Width = 400. device.c:1762: Test failed: D3DVIEWPORT->Height = 300. device.c:1764: this is the last test seen before the exception 0d58:device: unhandled exception c0000005 at 73FBA86E or device.c:1807: Test failed: Reset failed, hr 0x88760873. device.c:1809: Test failed: TestCooperativeLevel failed, hr 0x88760869. device.c:1835: Test failed: D3DVIEWPORT->Width = 500, expected 200. device.c:1837: Test failed: D3DVIEWPORT->Height = 400, expected 150. device.c:1840: this is the last test seen before the exception 0a1c:device: unhandled exception c0000005 at 7418D7DE or device.c:1935: Test failed: Got unexpected hr 0x88760873. device.c:1937: Test failed: Got unexpected hr 0x88760869. or device.c:1960: Test failed: Failed to reset device, hr 0x88760873. or device.c:1967: Test failed: Failed to reset device, hr 0x88760873. device.c:1967: this is the last test seen before the exception 20b8:device: unhandled exception c0000005 at 7561CC42 or device.c:1990: Test failed: Reset failed, hr 0x88760873. or device.c:2022: Test failed: Reset failed, hr 0x88760873. device.c:2024: Test failed: TestCooperativeLevel failed, hr 0x88760869. device.c:2029: Test failed: GetBackBuffer failed, hr 0x8876086c. device.c:2031: Test failed: Got hr 0. device.c:2033: Test failed: Got hr 0. device.c:2033: this is the last test seen before the exception 0388:device: unhandled exception c0000005 at 00430A60 or device.c:2036: Test failed: Reset failed, hr 0x88760873. device.c:2038: Test failed: TestCooperativeLevel failed, hr 0x88760869. device.c:2038: this is the last test seen before the exception 1f64:device: unhandled exception c0000005 at 750A9822
d3d9:device:
device.c:2219: Test failed: Got hr 0x88760873. device.c:2221: Test failed: Got hr 0x88760869. device.c:2230: Test failed: IDirect3DDevice9_GetViewport failed, hr 0x8876086c. device.c:2233: Test failed: D3DVIEWPORT->Width = 0. device.c:2234: Test failed: D3DVIEWPORT->Height = 0. device.c:2236: Test failed: D3DVIEWPORT->MaxZ = 0.000000. device.c:2239: Test failed: Failed to get swapchain, hr 0x8876086c. device.c:2242: Test failed: Failed to get present parameters, hr 0x8876086c. device.c:2243: Test failed: Got unexpected BackBufferWidth 0. device.c:2244: Test failed: Got unexpected BackBufferHeight 0. or device.c:2275: Test failed: Got hr 0x88760873. device.c:2277: Test failed: Got hr 0x88760869. device.c:2300: Test failed: Got hr 0x8876086c. device.c:2303: Test failed: D3DVIEWPORT->Width = 0, expected 200 device.c:2305: Test failed: D3DVIEWPORT->Height = 0, expected 150 device.c:2308: Test failed: D3DVIEWPORT->MaxZ = 0.000000 device.c:2311: Test failed: Failed to get swapchain, hr 0x8876086c. device.c:2314: Test failed: Failed to get present parameters, hr 0x8876086c. device.c:2315: Test failed: Got unexpected BackBufferWidth 0, expected 200. device.c:2317: Test failed: Got unexpected BackBufferHeight 0, expected 150. device.c:2319: Test failed: Got unexpected BackBufferFormat 0, expected 0x16. device.c:2321: Test failed: Got unexpected BackBufferCount 0. device.c:2324: Test failed: Got unexpected SwapEffect 0. device.c:2325: Test failed: Got unexpected hDeviceWindow 0000000000000000, expected 0000000000AE01F4. device.c:2326: Test failed: Got unexpected Windowed 0. device.c:2343: Test failed: Got hr 0x8876086c. device.c:2345: Test failed: Got hr 0. device.c:2347: Test failed: Got hr 0. device.c:2347: this is the last test seen before the exception 0c04:device: unhandled exception c0000005 at 000000000044D4DA
See https://test.winehq.org/data/patterns.html#d3d8:device https://test.winehq.org/data/patterns.html#d3d9:device
Where 0x88760869 == D3DERR_DEVICENOTRESET 0x8876086c == D3DERR_INVALIDCALL 0x88760873 == undocumented
Notes: * According to the Chromium source: // On Windows 8 systems, IDirect3DSwapChain9::Present sometimes returns 0x88760873 when the windows is // in the process of entering/exiting fullscreen. This code doesn't seem to have any documentation. The // device appears to be ok after emitting this error so simply return a failure to swap. * But in our case 0x88760873 is returned by a IDirect3DDevice*_Reset() call (not ::Present()). * It's not specific to Windows 8: this also happens on Windows 10 and 11.
This happens most frequently with d3d8:device (about 3.5 times per month), all for the 32-bit test on Windows 10 1507 to Windows 11. Here's a list of the latest instances for a sampling of Windows versions:
* 2023-05-01 w1121H2_newtb-w11pro64-32 * 2023-08-04 win22H2_newtb-w1064-32 * 2023-08-16 win1607_newtb-w1064v1607-32 * 2023-08-16 win22H2_newtb-w1064-tsign-32 * 2023-08-28 win22H2_fgtb-w10pro64-32 * 2023-09-14 win1507_newtb-w1064v1507-32 * 2023-10-05 win1809_newtb-w1064v1809-32
But there are also 3 instances of it with d3d9:device, all for the 64-bit test this time, and on Windows 10 1507:
* 2023-04-04 win1507_newtb-w1064v1507-64 * 2023-05-30 win1507_newtb-w1064v1507-64 * 2023-09-19 win1507_newtb-w1064v1507-64