protonscr

Assassins Creed Black Flag crashes with DXVK

dxvkclosed bug
doitsujin/dxvk#906 · opened 2019-02-08 by Scindix · updated 2019-10-09 · 32 comments · github
SScindix 2019-02-08 github

When playing Assassins Creed IV using DXVK it crashes as soon as I get to the first future storyline scene (Directly after maneuvering the merchant's ship out of the bay at the beginning). The thing is that my whole system becomes unresponsive and I can't even change to a different tty. So I had to reset my PC and I wasn't able to retrieve any debug messages from wine. After trying a few times I was able kill AC and my X Server via ssh. But my log still stops way before the crash happens and doesn't contain any error messages.

Anyway I tried without dxvk and the game works wothout any problems. Although using wined3d it's pretty unplayable at ~5-10 fps. Whereas DXVK was easily able run with 60 FPS (capped at my monitor's refresh rate).
Which proves to me that the crash is at least DXVK related.

Software information

Assassins Creed IV: Black Flag

System information

  • GPU: GTX 1070 8192 MB
  • Driver: 415.22.05 (Vulkan Beta Branch)
  • Wine version: 4.0 with esync
  • DXVK version: 0.93 and 0.96 (tested with both)

Apitrace file(s)

Unfortunately the game crashes about a second after going to fullscreen when started with apitrace (If I understood it correctly apitrace shouldn't be executed with DXVK?):

$ &> apitrace.txt WINEPREFIX=~/Games/uplay/ LD_LIBRARY_PATH="/home/user/.local/share/lutris/runners/wine/tkg-4.0-x86_64/lib:/home/user/.local/share/lutris/runners/wine/tkg-4.0-x86_64/lib64:/lib:/lib64:/usr/lib:/usr/lib64:/usr/lib32:/usr/lib64:/home/user/.local/share/lutris/runtime/Ubuntu-18.04-i686:/home/user/.local/share/lutris/runtime/Ubuntu-18.04-x86_64:$LD_LIBRARY_PATH" WINEESYNC=1 WINEDLLOVERRIDES="xaudio2_7=n,b;nvapi,nvapi64=" DXVK_HUD=0 DRI_PRIME=0 ~/.local/share/lutris/runners/wine/tkg-4.0-x86_64/bin/wine ~/Dokumente/apitrace-msvc/x86/bin/apitrace.exe trace -a dxgi ~/"Games/uplay/drive_c/Program Files (x86)/Ubisoft/Ubisoft Game Launcher/games/Assassin's Creed IV Black Flag/AC4BFSP.exe"

However AC runs fine when started by the exact same command (just without apitrace):

$ WINEPREFIX=~/Games/uplay/ LD_LIBRARY_PATH="/home/cedric/.local/share/lutris/runners/wine/tkg-4.0-x86_64/lib:/home/user/.local/share/lutris/runners/wine/tkg-4.0-x86_64/lib64:/lib:/lib64:/usr/lib:/usr/lib64:/usr/lib32:/usr/lib64:/home/user/.local/share/lutris/runtime/Ubuntu-18.04-i686:/home/user/.local/share/lutris/runtime/Ubuntu-18.04-x86_64:$LD_LIBRARY_PATH" WINEESYNC=1 WINEDLLOVERRIDES="xaudio2_7=n,b;nvapi,nvapi64=" DXVK_HUD=0 DRI_PRIME=0 ~/.local/share/lutris/runners/wine/tkg-4.0-x86_64/bin/wine ~/"Games/uplay/drive_c/Program Files (x86)/Ubisoft/Ubisoft Game Launcher/games/Assassin's Creed IV Black Flag/AC4BFSP.exe"

Anyway here is the output of the apitrace crash: https://own.arrakiz.org/index.php/s/yJYdNy7zeqnzPnm (Just click download. The file is somehow too big for any kind of preview.)

Log files

I'm sorry that I couldn't provide more debugging info. I know that a trace would be vital for a diagnosis. But at this point I'm not sure what else to do. If you give me instructions I'm more than willing to give you more info though.

Mmozo78 2019-02-08 github

Try to use the NVIDIA stable driver. Also try to stop nvapi hack, or try older DXVK version. This video I recorded some time ago and the game was working fine:
https://www.youtube.com/watch?v=wBHBozPtk3A

SScindix 2019-02-08 github

I now switched to 415.27 stable, removed the nvapi overrides and deleted the DXVK cache. But to no avail. The game still crashes.

Edit:
And for the sake of completeness: apitrace still crashes at exactly the same point.

Mmozo78 2019-02-08 github

Removing the nvapi overrides and stop nvapi hack are two different things. Create dxvk.conf in your game directory where is the .exe file and put this in it:
dxgi.nvapiHack = False
Or try to report a NVIDIA card:

dxgi.customDeviceId = e366
dxgi.customVendorId = 100

Or try older DXVK version like 0.80 or so. You also may try to return the nvapi overrides.

Ddoitsujin maintainer 2019-02-08 github

The game doesn't really crash, it hangs your GPU.

I'm aware of this problem, but since it freezes the entire system it's extremely tedious to debug, and I haven't been able to make any progress when I tried. You could try using wined3d to get past that, I've given up on this issue a long time ago.

SScindix 2019-02-08 github

@mozo78 Ah, I didn't know that. Thanks for clarifying.
I tried all of your suggestions. Turning off nvapiHack, setting a custom device id, using an older version, reenabling overrides and all kinds of combinations of aforementioned stuff. But none of it worked.

@doitsujin Yeah, that's probably it. Shouldn't it be possible to debug this via ssh? Because I'm still able to use remote shells without any problems.
Regarding the wined3d suggestion: The game is absolutely unplayable with it. Even on lowest setting I get like 5-10 FPS. Of all games I played so far this one has the biggest difference between wined3d and dxvk. And unfortunately I can't just use wined3d to bridge "some problematic cut scene". I played on until I was in Havana and then switched back to DXVK. But the game hangs up at the loading screen. So there seems to be a lot of stuff.

Anyway thank you guys for your great work! I guess I have to deal with not being able to play that title. But if someone has any idea I'm still willing to provide more debug info.

Ddoitsujin maintainer 2019-02-08 github

@doitsujin Yeah, that's probably it. Shouldn't it be possible to debug this via ssh?

No. The thing is that I can't use any debugging tools like Renderdoc with a hung GPU, and this game is particularly annoying since getting a hang report that would at least show the offending shaders is next to impossible. So while it is possible to access the system via SSH, I cannot gain any information at all that would help debug this issue.

XXapaJIaMnu 2019-02-09 github

Try the buffer pool hack for better performance with wined3d. This doesn't help the debugging effort but it will allow you to enjoy the game, hopefully

https://bugs.winehq.org/show_bug.cgi?id=44315

Jjrugia 2019-02-09 github

Not much to go by but youtuber "Just Look at the Flowers" made a video of the game working: https://www.youtube.com/watch?v=ao5e34emyiA

Mmozo78 2019-02-09 github

Yes I posted a wrong link. Here is my video from 2018:
https://www.youtube.com/watch?v=HKXAR_i3eMU

Mmozo78 2019-02-09 github
Ttingvarsson 2019-02-09 github

I experience the same issue and it has worked for me before. Tried to go back with both dxvk and wine versions but couldnt find a working version again. neither did it help turn on/off esync or running with wine/wine64. Something else most have changed (uplay, the game itself, kernel, nvidia driver).

@Jrugia
The video is of the part that works for OP and me as well. it is "Directly after maneuvering the merchant's ship out of the bay at the beginning" it stop to work. Would be interesting to hear if that person has it working later in the game as well or only did a short test.

@mozo78
Did you have (and still have?) it working longer than what the OP described when you played? "Directly after maneuvering the merchant's ship out of the bay at the beginning"

Mmozo78 2019-02-09 github

I don't know. I tried it when I recorded the video a year ago. I can try it again if you want.

Ttingvarsson 2019-02-09 github

@mozo78
If you have time and the will, please do. Would be interesting to see if it works for anyone right now.

SSleepProgger 2019-02-09 github

Having the same problem. I can sometimes play with amdvlk and radv. Some scenes are crashing always with dxvk, some only sometimes. Looks like some race condition to me.

BUT when it crashes it always crashes at load time, never had a crash while playing. It esp. often crashes when cut-scenes are loaded.
At least adding the "amdgpu.gpu_recovery=1" kernel parameter let me switch tty to kill it (after some waiting).

I could try to create some stacktrace and/or logs, but it sounds like that doesn't really help, @doitsujin ?

Mmozo78 2019-02-09 github

@mozo78
If you have time and the will, please do. Would be interesting to see if it works for anyone right now.

The game is up and running. Please tell me where exactly the game make the problem and recon with the fact that my english isn't as good as it should, so try to be clearer :)

Ttingvarsson 2019-02-10 github

My savefiles if it helps (place it at "prefix"/drive_c/Program Files (x86)/Ubisoft/Ubisoft Game Launcher/), both first and second save slot should show the crash/hang directly when loaded. And work when run with wined3d.
Note: Realized that the top directory is probably wrong in the tar (user specific). But should be easy to figure out where the files goes by looking at the structure.

@mozo78
The issue occurs after completing the first memory sequence (reaching the ocean with the traders ship) and it is supposed to load the first scene from when you are in present time in the "memory center".

Mmozo78 2019-02-10 github

Yes it freezes my whole computer.

Ddaschaffert 2019-02-19 github

The game is running fine when setting the Fauturelevel to dx10.1. I was using a DXVK config-file and set d3d11.maxFeatureLevel = 10_1
after it I could play through those scenes mentioned

Ttingvarsson 2019-02-20 github

Can confirm, settings d3d11.maxFeatureLevel = 10_1 does it for me as well.

Mmozo78 2019-02-20 github

Thank you :)

SSleepProgger 2019-02-20 github

Just another confirmation. Works with maxFeatureLevel = 10_1 with both amdvlk and radv.
( Just don't be stupid like me and use 10.1 instead of 10_1 ;) )
A good test is to exit the animagus if you played that far. That scene reliable hung my driver before.

Ddebiangamer 2019-02-26 github

The game works until starting the Abstergo Interlude 01 - Entering Abstergo mission. Then it hangs and can not continue without the dxvk.conf file. Tested with DXVK 1.0, latest wine-staging, my custom kernel 5.0-rc7, Padoka ppa, Debian testing/sid Xfce and RX 570. Thanks for the tip.

Ddebiangamer 2019-02-27 github

You could enable maxFeatureLevel = 10_1 by default for games that need its. Otherwise users need to enable it.

Ttingvarsson 2019-02-27 github

Shouldnt be needed is the thinking I believe.. It's a bug.
Should be seen as a magic workaround for now.

Ddoitsujin maintainer 2019-02-27 github

@debianxfce that is not a solution, I don't think I need to explain why.

Ddebiangamer 2019-02-27 github

@debianxfce that is not a solution, I don't think I need to explain why.

There are built in workarounds for these games.
https://github.com/doitsujin/dxvk/wiki/Configuration

  • Frostpunk
  • Life is Feudal MMO: 4095
  • Dishonored 2
  • Far Cry 5
  • Final Fantasy XIV
  • Quantum Break

Why not for other games?

Mmisyltoad 2019-03-21 github

@debianxfce This issue is not like those.

KK0bin maintainer 2019-04-01 github

@tingvarsson You'd have to record the apitrace yourself because apparently save files are encrypted and tied to the players Uplay account.

Jjcdutton 2019-04-07 github

What version of "mesa" are you using.
There were 2 bugs in one of the 19.x versions, that has since been fixed, that causes ACO to hang/crash.

SScindix 2019-04-16 github

@jcdutton My currently installed version of mesa is 19.0.2-1. I've just tested it and AC:BF still crashes without daschaffert's workaround.
Is it one of the affected versions? If yes, which version do you recommend testing as a comparison?

KK0bin maintainer 2019-04-16 github

From my understanding the issue isn't exclusive to a particular driver or gpu vendor.

Ddoitsujin maintainer 2019-10-09 github

This no longer seems to happen, although the game sometimes hangs with certain graphics settings.

Launch options

Upstream links