Hello!
I have dishonored1 (dx9) game which is crashing at start. I've tried to reinstall dxvk, reset wine prefix, reinstall the game - nothing helping. Suddenly I figured out that my second desktop can run this exact same wine prefix without issues.
So, I have two machines laptop (debian 12, x11, gnome, amdgpu) and desktop (debian 12, x11, gnome, amdgpu) booth looks like almost identical. Same prefix works on Desktop but failed on Laptop.
Later I figured out that, dishonored1 failed to run on Laptop on ANY other resolution than 1366x768 and works fine at specified resolution in gnome settings. But desktop machine can run it ALL resolutions. Errors:
wine errors:
0154:err:system:NtUserChangeDisplaySettings Changing L"\\\\.\\DISPLAY1" display settings returned -2.
0154:err:system:NtUserChangeDisplaySettings Changing L"\\\\.\\DISPLAY1" display settings returned -2.
0154:err:dbghelp:pe_load_msc_debug_info -Debug info stripped, but no .DBG file in module L"d3d9"
Game errors:
Result failed
at V:\dishonored\UnrealEngine3DLC07\Development\Src\D3D9Drv\Src\D3D9Device.cpp:701
with error D3DERR_NOTAVAILABLE
Similar wine bug: https://bugs.winehq.org/show_bug.cgi?id=39669
Tested on: wine 9.4, wine 9.0.0, wine 8.21, wine 7.22 (freezing before crash), wine works all machines lutris 7.2
Dishonored1 crash
Re: Dishonored1 crash
Wine 9.6 same. Removing dxvk has no effect, game crashing with the same message:
017c:err:ntlm:ntlm_LsaApInitializePackage no NTLM support, expect problems
017c:fixme:sync:SetWaitableTimerEx (00000190, 09ABFB2C, 0, 00000000, 00000000, 00000000, 32) semi-stub
0100:fixme:gameux:GameExplorerImpl_VerifyAccess (02CD6668, L"Z:\\Binaries\\Win32\\Dishonored.exe", 01ACF670)
0100:fixme:system:NtUserSystemParametersInfo Unimplemented action: 59 (SPI_SETSTICKYKEYS)
0100:fixme:system:NtUserSystemParametersInfo Unimplemented action: 53 (SPI_SETTOGGLEKEYS)
0100:fixme:system:NtUserSystemParametersInfo Unimplemented action: 51 (SPI_SETFILTERKEYS)
0100:fixme:d3d:debug_d3dformat Unrecognized 0x34324644 (as fourcc: DF24) WINED3DFORMAT!
0100:fixme:d3d:wined3d_get_format Can't find format unrecognized (0x34324644) in the format lookup table.
0100:err:system:NtUserChangeDisplaySettings Changing L"\\\\.\\DISPLAY1" display settings returned -2.
0100:err:dbghelp:pe_load_msc_debug_info -Debug info stripped, but no .DBG file in module L"d3d9"
017c:err:ntlm:ntlm_LsaApInitializePackage no NTLM support, expect problems
017c:fixme:sync:SetWaitableTimerEx (00000190, 09ABFB2C, 0, 00000000, 00000000, 00000000, 32) semi-stub
0100:fixme:gameux:GameExplorerImpl_VerifyAccess (02CD6668, L"Z:\\Binaries\\Win32\\Dishonored.exe", 01ACF670)
0100:fixme:system:NtUserSystemParametersInfo Unimplemented action: 59 (SPI_SETSTICKYKEYS)
0100:fixme:system:NtUserSystemParametersInfo Unimplemented action: 53 (SPI_SETTOGGLEKEYS)
0100:fixme:system:NtUserSystemParametersInfo Unimplemented action: 51 (SPI_SETFILTERKEYS)
0100:fixme:d3d:debug_d3dformat Unrecognized 0x34324644 (as fourcc: DF24) WINED3DFORMAT!
0100:fixme:d3d:wined3d_get_format Can't find format unrecognized (0x34324644) in the format lookup table.
0100:err:system:NtUserChangeDisplaySettings Changing L"\\\\.\\DISPLAY1" display settings returned -2.
0100:err:dbghelp:pe_load_msc_debug_info -Debug info stripped, but no .DBG file in module L"d3d9"
Re: Dishonored1 crash
How can I debug NtUserChangeDisplaySettings calls?
Re: Dishonored1 crash
Checking wine source, it seems like NtUserChangeDisplaySettings defined in 'dlls/win32u/sysparams.c', it is calling 'apply_display_settings' from 'dlls/winex11.drv' which is calling 'get_full_mode()' which failed with 0, causing DISP_CHANGE_BADMODE (-2).
Here is a more detailed wine log:
34207.874
0024:trace:system:NtUserEnumDisplaySettings position 0x0, resolution 1440x810, frequency 59, depth 32, orientation 0.
34207.874
0024:trace:system:NtUserChangeDisplaySettings L"\\\\.\\DISPLAY1" 0x1acd254 (nil) 0x4 (nil)
34207.874
0024:trace:system:NtUserChangeDisplaySettings flags=FULLSCREEN
0024: get_process_winstation( )
0024: get_process_winstation() = 0 { handle=0054 }
0024: set_user_object_info( handle=0054, flags=00000000, obj_flags=00000000 )
0024: set_user_object_info() = 0 { is_desktop=0, old_obj_flags=00000001, name=L"WinSta0" }
0024: get_thread_desktop( tid=0024 )
0024: get_thread_desktop() = 0 { handle=0058 }
0024: set_user_object_info( handle=0058, flags=00000000, obj_flags=00000000 )
0024: set_user_object_info() = 0 { is_desktop=1, old_obj_flags=00000000, name=L"" }
0024: get_thread_desktop( tid=0024 )
0024: get_thread_desktop() = 0 { handle=0058 }
0024: set_user_object_info( handle=0058, flags=00000000, obj_flags=00000000 )
0024: set_user_object_info() = 0 { is_desktop=1, old_obj_flags=00000000, name=L"" }
0024: enum_key( hkey=0074, index=-1, info_class=0 )
0024: enum_key() = 0 { subkeys=0, max_subkey=0, max_class=0, values=1, max_value=0, max_data=0, modif=1da9486bb605862 (-14.1162950), total=10, namelen=0, name
=L"", class=L"" }
34207.874
0024:trace:system:trace_devmode dmFields=BITSPERPEL,PELSWIDTH,PELSHEIGHT dmBitsPerPel=32 dmPelsWidth=1280 dmPelsHeight=720
0024: get_thread_desktop( tid=0024 )
0024: get_thread_desktop() = 0 { handle=0058 }
0024: set_user_object_info( handle=0058, flags=00000000, obj_flags=00000000 )
0024: set_user_object_info() = 0 { is_desktop=1, old_obj_flags=00000000, name=L"" }
0024: get_process_winstation( )
0024: get_process_winstation() = 0 { handle=0054 }
0024: set_user_object_info( handle=0054, flags=00000000, obj_flags=00000000 )
0024: set_user_object_info() = 0 { is_desktop=0, old_obj_flags=00000001, name=L"WinSta0" }
0024: get_thread_desktop( tid=0024 )
0024: get_thread_desktop() = 0 { handle=0058 }
0024: set_user_object_info( handle=0058, flags=00000000, obj_flags=00000000 )
0024: set_user_object_info() = 0 { is_desktop=1, old_obj_flags=00000000, name=L"" }
0024: get_thread_desktop( tid=0024 )
0024: get_thread_desktop() = 0 { handle=0058 }
0024: set_user_object_info( handle=0058, flags=00000000, obj_flags=00000000 )
0024: set_user_object_info() = 0 { is_desktop=1, old_obj_flags=00000000, name=L"" }
0024: get_thread_desktop( tid=0024 )
0024: get_thread_desktop() = 0 { handle=0058 }
0024: set_user_object_info( handle=0058, flags=00000000, obj_flags=00000000 )
0024: set_user_object_info() = 0 { is_desktop=1, old_obj_flags=00000000, name=L"" }
0024: enum_key( hkey=0074, index=-1, info_class=0 )
0024: enum_key() = 0 { subkeys=0, max_subkey=0, max_class=0, values=1, max_value=0, max_data=0, modif=1da9486bb605862 (-14.1164310), total=10, namelen=0, name=L"", class=L"" }
014c: *wakeup* signaled=2
0024: get_thread_desktop( tid=0024 )
0024: get_thread_desktop() = 0 { handle=0058 }
014c: close_handle( handle=025c )
014c: close_handle() = 0
0024: set_user_object_info( handle=0058, flags=00000000, obj_flags=00000000 )
0024: set_user_object_info() = 0 { is_desktop=1, old_obj_flags=00000000, name=L"" }
34207.875
014c:trace:sync:GetQueuedCompletionStatus (000001A0,09EBFBCC,09EBFBC8,09EBFBC4,0)
34207.875
014c:trace:sync:NtRemoveIoCompletion (0x1a0, 0x9ebfbc8, 0x9ebfbc4, 0x9ebfb60, 0x9ebfb58)
014c: remove_completion( handle=01a0 )
014c: remove_completion() = PENDING { ckey=00000000, cvalue=00000000, information=00000000, status=00000000 }
014c: select( flags=2, cookie=098ede24, timeout=0, size=8, prev_apc=0000, result={}, data={WAIT_ALL,handles={01a0}}, contexts={} )
014c: select() = TIMEOUT { apc_handle=0000, signaled=1, call={}, contexts={} }
014c: create_timer( access=001f0003, manual=0, objattr={rootdir=0000,attributes=00000080,sd={},name=L""} )
014c: create_timer() = 0 { handle=025c }
34207.875
014c:trace:sync:NtSetTimer (0x25c,0x9ebfb2c,(nil),(nil),00000000,0x00000000,(nil))
014c: set_timer( handle=025c, expire=+0.0010000, callback=00000000, arg=00000000, period=0 )
014c: set_timer() = 0 { signaled=0 }
014c: select( flags=2, cookie=098edf04, timeout=infinite, size=16, prev_apc=0000, result={}, data={WAIT,handles={0198,0118,025c}}, contexts={} )
014c: select() = PENDING { apc_handle=0000, signaled=0, call={}, contexts={} }
34207.875
0024:err:system:NtUserChangeDisplaySettings Changing L"\\\\.\\DISPLAY1" display settings returned -2.
Here is a more detailed wine log:
34207.874
34207.874
34207.874
0024: get_process_winstation( )
0024: get_process_winstation() = 0 { handle=0054 }
0024: set_user_object_info( handle=0054, flags=00000000, obj_flags=00000000 )
0024: set_user_object_info() = 0 { is_desktop=0, old_obj_flags=00000001, name=L"WinSta0" }
0024: get_thread_desktop( tid=0024 )
0024: get_thread_desktop() = 0 { handle=0058 }
0024: set_user_object_info( handle=0058, flags=00000000, obj_flags=00000000 )
0024: set_user_object_info() = 0 { is_desktop=1, old_obj_flags=00000000, name=L"" }
0024: get_thread_desktop( tid=0024 )
0024: get_thread_desktop() = 0 { handle=0058 }
0024: set_user_object_info( handle=0058, flags=00000000, obj_flags=00000000 )
0024: set_user_object_info() = 0 { is_desktop=1, old_obj_flags=00000000, name=L"" }
0024: enum_key( hkey=0074, index=-1, info_class=0 )
0024: enum_key() = 0 { subkeys=0, max_subkey=0, max_class=0, values=1, max_value=0, max_data=0, modif=1da9486bb605862 (-14.1162950), total=10, namelen=0, name
=L"", class=L"" }
34207.874
0024: get_thread_desktop( tid=0024 )
0024: get_thread_desktop() = 0 { handle=0058 }
0024: set_user_object_info( handle=0058, flags=00000000, obj_flags=00000000 )
0024: set_user_object_info() = 0 { is_desktop=1, old_obj_flags=00000000, name=L"" }
0024: get_process_winstation( )
0024: get_process_winstation() = 0 { handle=0054 }
0024: set_user_object_info( handle=0054, flags=00000000, obj_flags=00000000 )
0024: set_user_object_info() = 0 { is_desktop=0, old_obj_flags=00000001, name=L"WinSta0" }
0024: get_thread_desktop( tid=0024 )
0024: get_thread_desktop() = 0 { handle=0058 }
0024: set_user_object_info( handle=0058, flags=00000000, obj_flags=00000000 )
0024: set_user_object_info() = 0 { is_desktop=1, old_obj_flags=00000000, name=L"" }
0024: get_thread_desktop( tid=0024 )
0024: get_thread_desktop() = 0 { handle=0058 }
0024: set_user_object_info( handle=0058, flags=00000000, obj_flags=00000000 )
0024: set_user_object_info() = 0 { is_desktop=1, old_obj_flags=00000000, name=L"" }
0024: get_thread_desktop( tid=0024 )
0024: get_thread_desktop() = 0 { handle=0058 }
0024: set_user_object_info( handle=0058, flags=00000000, obj_flags=00000000 )
0024: set_user_object_info() = 0 { is_desktop=1, old_obj_flags=00000000, name=L"" }
0024: enum_key( hkey=0074, index=-1, info_class=0 )
0024: enum_key() = 0 { subkeys=0, max_subkey=0, max_class=0, values=1, max_value=0, max_data=0, modif=1da9486bb605862 (-14.1164310), total=10, namelen=0, name=L"", class=L"" }
014c: *wakeup* signaled=2
0024: get_thread_desktop( tid=0024 )
0024: get_thread_desktop() = 0 { handle=0058 }
014c: close_handle( handle=025c )
014c: close_handle() = 0
0024: set_user_object_info( handle=0058, flags=00000000, obj_flags=00000000 )
0024: set_user_object_info() = 0 { is_desktop=1, old_obj_flags=00000000, name=L"" }
34207.875
34207.875
014c: remove_completion( handle=01a0 )
014c: remove_completion() = PENDING { ckey=00000000, cvalue=00000000, information=00000000, status=00000000 }
014c: select( flags=2, cookie=098ede24, timeout=0, size=8, prev_apc=0000, result={}, data={WAIT_ALL,handles={01a0}}, contexts={} )
014c: select() = TIMEOUT { apc_handle=0000, signaled=1, call={}, contexts={} }
014c: create_timer( access=001f0003, manual=0, objattr={rootdir=0000,attributes=00000080,sd={},name=L""} )
014c: create_timer() = 0 { handle=025c }
34207.875
014c: set_timer( handle=025c, expire=+0.0010000, callback=00000000, arg=00000000, period=0 )
014c: set_timer() = 0 { signaled=0 }
014c: select( flags=2, cookie=098edf04, timeout=infinite, size=16, prev_apc=0000, result={}, data={WAIT,handles={0198,0118,025c}}, contexts={} )
014c: select() = PENDING { apc_handle=0000, signaled=0, call={}, contexts={} }
34207.875
Re: Dishonored1 crash
I got it. I have been missing few of i386 libraries, one of:
mesa-vulkan-drivers:i386 libgl1:i386 libfreetype6:i386 libgnutls30:i386 pipewire:i386 libopenal1:i386 libasound2-plugins:i386 libvulkan1:i386
mesa-vulkan-drivers:i386 libgl1:i386 libfreetype6:i386 libgnutls30:i386 pipewire:i386 libopenal1:i386 libasound2-plugins:i386 libvulkan1:i386