After updating the game from 2.8 to 3.0, running on
lutris-GE-Proton7-20-x86_64 would not play some categories of sound
effects (like attacks except for the character voiceline parts), so I
quickly changed to lutris-GE-Proton7-24-x86_64, the latest lutris is
offering.
Sound works with lutris-GE-Proton7-24-x86_64 but the game crashes
frequently, multiple times per hour. The crashing happens at random
times, mid-dialogue, running around, in menus, while I was away from
the screen, etc.
3.0 runs flawlessly on windows on the same machine (different game
installation), and 2.8 worked on linux.
The logs don't seem to contain any obvious crash, the game could be
deciding to exit for some reason? Wine log:
https://pastebin.com/EhcbFByT
Trying lutris-fshack-7.2-x86_64 the game outright crashes on startup
(on the 7th element), unless esync/fsync is disabled in lutris options
(I think it worked without in prior versions), then it crashed after a
minute or two in game: https://pastebin.com/R9s8Ay7p
After updating the game from 2.8 to 3.0, running on
lutris-GE-Proton7-20-x86_64 would not play some categories of sound
effects (like attacks except for the character voiceline parts), so I
quickly changed to lutris-GE-Proton7-24-x86_64, the latest lutris is
offering.
Sound works with lutris-GE-Proton7-24-x86_64 but the game crashes
frequently, multiple times per hour. The crashing happens at random
times, mid-dialogue, running around, in menus, while I was away from
the screen, etc.
3.0 runs flawlessly on windows on the same machine (different game
installation), and 2.8 worked on linux.
The logs don't seem to contain any obvious crash, the game could be
deciding to exit for some reason? Wine log:
https://pastebin.com/EhcbFByT
Trying lutris-fshack-7.2-x86_64 the game outright crashes on startup
(on the 7th element), unless esync/fsync is disabled in lutris options
(I think it worked without in prior versions), then it crashed after a
minute or two in game: https://pastebin.com/R9s8Ay7p
System infos, debian unstable:
```
=== lspci -v | grep VGA -A 15 ===
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] (rev c7) (prog-if 00 [VGA controller])
Subsystem: PC Partner Limited / Sapphire Technology Radeon RX 470/480
Flags: bus master, fast devsel, latency 0, IRQ 31, IOMMU group 1
Memory at e0000000 (64-bit, prefetchable) [size=256M]
Memory at f0000000 (64-bit, prefetchable) [size=2M]
I/O ports at e000 [size=256]
Memory at f0200000 (32-bit, non-prefetchable) [size=256K]
Expansion ROM at 000c0000 [disabled] [size=128K]
Capabilities: <access denied>
Kernel driver in use: amdgpu
Kernel modules: amdgpu
01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590]
Subsystem: PC Partner Limited / Sapphire Technology Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590]
Flags: bus master, fast devsel, latency 0, IRQ 34, IOMMU group 1
Memory at f0260000 (64-bit, non-prefetchable) [size=16K]
=== inxi -Ga ===
Graphics:
Device-1: AMD Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] vendor: PC
Partner / Sapphire driver: amdgpu v: kernel arch: GCN-4
code: Arctic Islands process: GF 14nm built: 2016-20 pcie: gen: 3
speed: 8 GT/s lanes: 16 ports: active: HDMI-A-1 empty: DP-1, DP-2,
DVI-D-1, HDMI-A-2 bus-ID: 01:00.0 chip-ID: 1002:67df class-ID: 0300
Display: wayland server: X.org v: 1.21.1.4 with: Xwayland v: 22.1.3
compositor: gnome-shell v: 42.4 driver: X: loaded: amdgpu
unloaded: fbdev,modesetting,radeon,vesa gpu: amdgpu display-ID: 0
Monitor-1: HDMI-A-1 model: Philips 221T built: 2009 res: 1920x1080
dpi: 104 gamma: 1.2 size: 476x268mm (18.74x10.55") diag: 537mm (21.1")
ratio: 16:9 modes: max: 1920x1080 min: 640x480
OpenGL: renderer: AMD Radeon RX 480 Graphics (polaris10 LLVM 14.0.6 DRM
3.44 5.17.0-3-amd64) v: 4.6 Mesa 22.2.0-rc1 direct render: Yes
=== vulkaninfo | grep DRIVER_ID -A 3 ===
driverID = DRIVER_ID_MESA_RADV
driverName = radv
driverInfo = Mesa 22.2.0-rc1
conformanceVersion:
--
driverID = DRIVER_ID_MESA_RADV
driverName = radv
driverInfo = Mesa 22.2.0-rc1
conformanceVersion:
--
driverID = DRIVER_ID_MESA_LLVMPIPE
driverName = llvmpipe
driverInfo = Mesa 22.2.0-rc1 (LLVM 14.0.6)
conformanceVersion:
--
driverID = DRIVER_ID_MESA_LLVMPIPE
driverName = llvmpipe
driverInfo = Mesa 22.2.0-rc1 (LLVM 14.0.6)
conformanceVersion:
```
Perform a file integrity check using the game launcher and retest it.
You might need to reapply the patch afterwards.
Is there a new error.log file generated? (See FAQ.md) If so, please provide the most helpful lines. I just updated the hints in TROUBLESHOOTING.md.
Have you yet tried to launch the game with and without the Lutris runtime? Is there any difference?
Do other games work well with the same Wine version?
On a similar setup, but with Mesa version 22.2.0-rc3 there is no such issue on my side.
@brpt
*EDIT: The driver information looks correct.*
1. Perform a file integrity check using the game launcher and retest it.
* You might need to reapply the patch afterwards.
2. Is there a new `error.log` file generated? (See FAQ.md) If so, please provide the most helpful lines. I just updated the hints in TROUBLESHOOTING.md.
3. Have you yet tried to launch the game with and without the Lutris runtime? Is there any difference?
4. Do other games work well with the same Wine version?
On a similar setup, but with Mesa version 22.2.0-rc3 there is no such issue on my side.
I'll try finding another windows game to test wine with (edit: I guess if this is related #309 I won't really have to bother doing that) and the fix of deleting avcodec-58.dll like suggested in #307 probably tomorrow when I have time to figure it out. That might solve everything, so you might want to wait before spending any effort.
Ran system update so mesa is now 22.2.0-rc3
Set lutris runtime+esync+fsync to disabled in lutris options, to change it from the usual.
Set lutris wine to lutris-GE-Proton7-24-x86_64
Ran file verification from the game launcher: "All files verified, no repair needed."
Started the game, crashed 10 minutes later.
Top of error.log:
Genshin Impact [version: Unity 2017.4.30f1 (0)]
UnityPlayer.dll caused a Privileged Instruction (0xc0000096)
in module UnityPlayer.dll at 0033:8172b15d.
Error occurred at 2022-08-28_195344.
C:\Program Files\Genshin Impact\Genshin Impact game\GenshinImpact.exe, run by genshin.
24% memory in use.
32030 MB physical memory [24271 MB free].
32030 MB paging file [24271 MB free].
134217728 MB user address space [134214387 MB free].
Context:
RDI: 0x04100710 RSI: 0x00000000 RAX: 0x564d5868
RBX: 0x00000000 RCX: 0x0000000a RDX: 0x00005658
RIP: 0x8172b15d RBP: 0x7007c8e0 SegCs: 0x00000033
EFlags: 0x00010246 RSP: 0x0624fd10 SegSs: 0x0000002b
R8: 0x04100710 R9: 0x7008ad40 R10: 0x00000000
R11: 0x00000003 R12: 0x04140120 R13: 0x0624fe60
R14: 0x7006bdd0 R15: 0x04140110
Bytes at CS:EIP:
ed 58 33 c3 e8 ea 17 ff ff c3 33 db 90 b8 01 00
Bottom of output_log.txt:
========== OUTPUTING STACK TRACE ==================
RtlLookupFunctionEntry returned NULL function. Aborting stack walk.
0x00000000564D5868 (avcodec-58) av1_idtx32_sse4_1
<Missing stacktrace information>
========== END OF STACKTRACE ===========
I also noticed that in error.log ffmpeg dlls are kinda old, like
I'll try finding another windows game to test wine with (edit: I guess if this is related #309 I won't really have to bother doing that) and the fix of deleting avcodec-58.dll like suggested in #307 probably tomorrow when I have time to figure it out. That might solve everything, so you might want to wait before spending any effort.
1. Ran system update so mesa is now 22.2.0-rc3
2. Set lutris runtime+esync+fsync to disabled in lutris options, to change it from the usual.
3. Set lutris wine to lutris-GE-Proton7-24-x86_64
4. Ran file verification from the game launcher: "All files verified, no repair needed."
5. Started the game, crashed 10 minutes later.
Top of error.log:
```
Genshin Impact [version: Unity 2017.4.30f1 (0)]
UnityPlayer.dll caused a Privileged Instruction (0xc0000096)
in module UnityPlayer.dll at 0033:8172b15d.
Error occurred at 2022-08-28_195344.
C:\Program Files\Genshin Impact\Genshin Impact game\GenshinImpact.exe, run by genshin.
24% memory in use.
32030 MB physical memory [24271 MB free].
32030 MB paging file [24271 MB free].
134217728 MB user address space [134214387 MB free].
Context:
RDI: 0x04100710 RSI: 0x00000000 RAX: 0x564d5868
RBX: 0x00000000 RCX: 0x0000000a RDX: 0x00005658
RIP: 0x8172b15d RBP: 0x7007c8e0 SegCs: 0x00000033
EFlags: 0x00010246 RSP: 0x0624fd10 SegSs: 0x0000002b
R8: 0x04100710 R9: 0x7008ad40 R10: 0x00000000
R11: 0x00000003 R12: 0x04140120 R13: 0x0624fe60
R14: 0x7006bdd0 R15: 0x04140110
Bytes at CS:EIP:
ed 58 33 c3 e8 ea 17 ff ff c3 33 db 90 b8 01 00
```
Bottom of output_log.txt:
```
========== OUTPUTING STACK TRACE ==================
RtlLookupFunctionEntry returned NULL function. Aborting stack walk.
0x00000000564D5868 (avcodec-58) av1_idtx32_sse4_1
<Missing stacktrace information>
========== END OF STACKTRACE ===========
```
I also noticed that in error.log ffmpeg dlls are kinda old, like
```
Module 9
C:\windows\system32\avcodec-58.dll
Image Base: 0x80000000 Image Size: 0x039e8000
File Size: 50103296 File Time: 2021-05-09_190442
Version:
Company: FFmpeg Project
Product: FFmpeg
FileDesc: FFmpeg codec library
FileVer: 58.91.100.0
ProdVer: 58.91.100.0
```
It's the same version as in https://notabug.org/Krock/dawn/issues/307.
The privileged instruction at +172b15d is IN which should not be executed in unprivileged user mode, hence the fault.
The next instruction following IN is POP RAX which immediately overwrites what IN just read in, it seems that the IN here has no effect and we could at least mask this IN with a NOP.
The parent function of the instruction is marked with VMProtectBeginUltra marker, though I have no idea why the game entered this function on your setup.
The privileged instruction at `+172b15d` is `IN` which should not be executed in unprivileged user mode, hence the fault.
The next instruction following `IN` is `POP RAX` which immediately overwrites what `IN` just read in, it seems that the `IN` here has no effect and we could at least mask this `IN` with a `NOP`.
Try this patch: https://notabug.org/y0soro/dawn/src/fix-privileged-instruction/300/patch_files/unityplayer_patch_os.vcdiff
edit: re-pushed, please pull latest version.
The parent function of the instruction is marked with VMProtectBeginUltra marker, though I have no idea why the game entered this function on your setup.
Thanks, but I have now tried disabling avcodec-58.dll (and just "avcodec-58" at the same time since I'm not sure of the format it wants) in the lutris UI (which says it works via WINEDLLOVERRIDES environment variable) and it seems to have have stopped the crashing. Not only that, but it also had the immediately obvious effect of greatly reducing or maybe even eliminating the stuttering that started with 3.0. Maybe stuttering is part of triggering the crashes?
It'd be curious to know if disabling the dll removes stutter also for people not getting crashes.
I also re-enabled lutris runtime and esync, but left fsync disabled since it brought back stuttering.
Thanks, but I have now tried disabling avcodec-58.dll (and just "avcodec-58" at the same time since I'm not sure of the format it wants) in the lutris UI (which says it works via WINEDLLOVERRIDES environment variable) and it seems to have have stopped the crashing. Not only that, but it also had the immediately obvious effect of greatly reducing or maybe even eliminating the stuttering that started with 3.0. Maybe stuttering is part of triggering the crashes?
It'd be curious to know if disabling the dll removes stutter also for people not getting crashes.
I also re-enabled lutris runtime and esync, but left fsync disabled since it brought back stuttering.
@ppplayer
In case you have not tried the workaround, try launch wine with WINEDLLOVERRIDES=avcodec-58.dll=d environment variable. If you are using Lutris, add a key of avcodec-58.dll and value of empty(or d, which stands for "disable") to Configure -> Runner options -> DLL overrides table.
I would document it in TROUBLESHOOTING.md if that works.
@ppplayer
In case you have not tried the workaround, try launch wine with `WINEDLLOVERRIDES=avcodec-58.dll=d` environment variable. If you are using Lutris, add a key of `avcodec-58.dll` and value of empty(or `d`, which stands for "disable") to Configure -> Runner options -> DLL overrides table.
I would document it in TROUBLESHOOTING.md if that works.
After updating the game from 2.8 to 3.0, running on lutris-GE-Proton7-20-x86_64 would not play some categories of sound effects (like attacks except for the character voiceline parts), so I quickly changed to lutris-GE-Proton7-24-x86_64, the latest lutris is offering.
Sound works with lutris-GE-Proton7-24-x86_64 but the game crashes frequently, multiple times per hour. The crashing happens at random times, mid-dialogue, running around, in menus, while I was away from the screen, etc.
3.0 runs flawlessly on windows on the same machine (different game installation), and 2.8 worked on linux.
The logs don't seem to contain any obvious crash, the game could be deciding to exit for some reason? Wine log: https://pastebin.com/EhcbFByT
Trying lutris-fshack-7.2-x86_64 the game outright crashes on startup (on the 7th element), unless esync/fsync is disabled in lutris options (I think it worked without in prior versions), then it crashed after a minute or two in game: https://pastebin.com/R9s8Ay7p
System infos, debian unstable:
@brpt
EDIT: The driver information looks correct.
error.log
file generated? (See FAQ.md) If so, please provide the most helpful lines. I just updated the hints in TROUBLESHOOTING.md.On a similar setup, but with Mesa version 22.2.0-rc3 there is no such issue on my side.
I'll try finding another windows game to test wine with (edit: I guess if this is related #309 I won't really have to bother doing that) and the fix of deleting avcodec-58.dll like suggested in #307 probably tomorrow when I have time to figure it out. That might solve everything, so you might want to wait before spending any effort.
Top of error.log:
Bottom of output_log.txt:
I also noticed that in error.log ffmpeg dlls are kinda old, like
It's the same version as in #307.
The privileged instruction at
+172b15d
isIN
which should not be executed in unprivileged user mode, hence the fault.The next instruction following
IN
isPOP RAX
which immediately overwrites whatIN
just read in, it seems that theIN
here has no effect and we could at least mask thisIN
with aNOP
.Try this patch: https://notabug.org/y0soro/dawn/src/fix-privileged-instruction/300/patch_files/unityplayer_patch_os.vcdiff
edit: re-pushed, please pull latest version.
The parent function of the instruction is marked with VMProtectBeginUltra marker, though I have no idea why the game entered this function on your setup.
Thanks, but I have now tried disabling avcodec-58.dll (and just "avcodec-58" at the same time since I'm not sure of the format it wants) in the lutris UI (which says it works via WINEDLLOVERRIDES environment variable) and it seems to have have stopped the crashing. Not only that, but it also had the immediately obvious effect of greatly reducing or maybe even eliminating the stuttering that started with 3.0. Maybe stuttering is part of triggering the crashes?
It'd be curious to know if disabling the dll removes stutter also for people not getting crashes.
I also re-enabled lutris runtime and esync, but left fsync disabled since it brought back stuttering.
I just ran into what looks like the same bug.
error.log
below shows it fails at the same place as you:Will try some of the suggestions above.
@ppplayer In case you have not tried the workaround, try launch wine with
WINEDLLOVERRIDES=avcodec-58.dll=d
environment variable. If you are using Lutris, add a key ofavcodec-58.dll
and value of empty(ord
, which stands for "disable") to Configure -> Runner options -> DLL overrides table.I would document it in TROUBLESHOOTING.md if that works.
Documented in a11bae5.