https://bugs.winehq.org/show_bug.cgi?id=54151
Bug ID: 54151 Summary: xactengine3_7:xact3 crashes when no speaker is connected Product: Wine Version: unspecified Hardware: x86-64 OS: Windows Status: NEW Severity: normal Priority: P2 Component: xactengine Assignee: wine-bugs@winehq.org Reporter: fgouget@codeweavers.com
xactengine3_7:xact3 crashes when no speaker is connected:
xact3.c:209: Test failed: Cannot initialize engine, hr 0x88960001 xact3.c:215: Test failed: got hr 0x8ac70002 xact3.c:218: Test failed: got hr 0x8ac70002 xact3.c:224: Test failed: got hr 0x8ac70002 xact3.c:227: Test failed: got hr 0x8ac70002 xact3.c:235: Test failed: Cannot register notification, hr 0x8ac70002 xact3.c:243: Test failed: Cannot register notification, hr 0x8ac70002 xact3.c:249: Test failed: Cannot register notification, hr 0x8ac70002 xact3.c:259: Test failed: Cannot create a streaming wave bank, hr 0x8ac70002 xact3.c:259: this is the last test seen before the exception 0df8:xact3: unhandled exception c0000005 at 0000000000401A4C
See https://test.winehq.org/data/patterns.html#xactengine3_7:xact3
Where: 0x88960001 == XAUDIO2_E_INVALID_CALL or XAUDIO20_E_XMA_DECODER_ERROR 0x8ac70002 == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_XACTENGINE, XACTENGINE_E_NOTINITIALIZED)
These failures only happen on w11pro64_amd and w11pro64_nv. What these have in common is that the sound is supposed to go through the graphics card's HDMI / DisplayPort connection. However those go to a dummy plug which emulates a screen... but not speakers. This causes Windows to disable the sound volume widget since it cannot detect any form of speaker.
I suspect, but that may require confirmation, that this causes xact to refuse to initialize.
More notes: * My fgtb-w10pro64-rx550 VM has the same audio-through-HDMI configuration but is connected to my real screen which does have speakers. So sound is not 'disabled'. * QEmu emulates an ich9 sound card in the regular w11pro64 test configuration and Spice (the virtual KVM) provides the remote speakers. So again sound is not 'disabled' (and I always lower the default volume in the VMs so I don't get deafened by the Windows boot sound). * Before 2022-12-09 the w11pro64 VM was missing many DirectX dlls which caused this test to be entirely skipped. This is why it did not crash on these test configurations before then.