ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
23.86k stars 1.04k forks source link

Nier:Automata Crashing (524220) #1643

Open DigitalDevilSummoner opened 5 years ago

DigitalDevilSummoner commented 5 years ago

While playing Nier:Automata, the game crashed and I got this error screenshot from 2018-09-29 09-30-31

System info:https://gist.github.com/DigitalDevilSummoner/d7a227765539daee04f9fd1d98d2be93

Kazenin commented 5 years ago

Yes, Mine too.. same error

System: https://gist.github.com/Kazenin/72414766b38275e0d016cefc3579247f Log: steam-524220.log

rennelou commented 5 years ago

I have the same error

iroedius commented 5 years ago

Same here. Keeps crashing every half hour or so.

DigitalDevilSummoner commented 5 years ago

Update! Turning off e-sync via launch options seems to have fixed the issue, still not sure if it can be called a permanent fix, but the game no longer crashes every half hour.

kisak-valve commented 5 years ago

Hello @DigitalDevilSummoner, can you check ulimit -Hn and confirm it's a high value.

DigitalDevilSummoner commented 5 years ago

Sorry in advance, but even after reading the github entry, im still not sure how to do this.

kisak-valve commented 5 years ago

Worded another way, if you run ulimit -Hn in a terminal, do you get 4096 or around a million?

DigitalDevilSummoner commented 5 years ago

1048576

rennelou commented 5 years ago

But, when i turn off e-sync my fps goes severaly down

iroedius commented 5 years ago

@kisak-valve My ulimit is 4096 and the game crashed a lot for me with this error. However since setting PROTON_NO_ESYNC=1 I haven't had a single crash for a few hours.

ghost commented 5 years ago

Can confirm setting PROTON_NO_ESYNC=1 completely fixes stability issues for me. Had been crashing every 15-30 mins or so. After taking a shot in the dark with disabling ESYNC, I'm 20+ hours with zero crashes.

Performance is very good and seems to be identical to without disabling of ESYNC. Arch, kernel 4.18.9, Cinnamon, nvidia gtx980 (396.54)

As I understand it, the windows port of this game is plagued by stability, fullscreen and performance issues natively under windows, so I don't think this is an entirely Wine/Proton issue. There is a mod called FAR which seems to fix these same frequent CTDs for most people and is considered necessary for a good experience. Interestingly, the display/fullscreen problem is already fixed for Linux users by Proton/DXVK lol.

ghost commented 5 years ago

Honestly, if I'm having trouble with a game under Proton, the first thing I do is disable ESYNC. This often fixes the problem (Nier, Bioshock 1 and 2 remastered, Gauntlet, etc.)

I understand what the ESYNC patch is attempting to do, but still feel that the wineserver is a more appropriate host for IO given the structure of Wine. I think it might be a good idea to disable it by default or remove it from the Proton patchset.

The stability loss for near-zero performance gain (in my experience) does not seem worth it.

DigitalDevilSummoner commented 5 years ago

@SeeK-ntr0py although, it does seem to have some crazy input lag that isn't there on windows, though that has been a problem for most games iv'e tried so far.

Kazenin commented 5 years ago

I have a workaround for crash issue:

1 - Edit the file /etc/security/limits.conf by adding at the end of it the option * hard nofile 1048576 2 - Edit the files /etc/systemd/system.conf and /etc/systemd/user.conf by adding at the end of these files the option DefaultLimitNOFILE=1048576 3 - run the command sudo systemctl daemon-reexec and restart your session 4 - Open the terminal and run ulimit -Hn. If all is correct, you will see 1048576

The explanation is here

ghost commented 5 years ago

@Kazenin disabling ESYNC in step 5 renders steps 1-4 moot. Those would only serve as dirty hacks related to the use of the ESYNC patch, which is much easier to disable.

Also, editing system-wide (particularly systemd and security) configuration files is not only unnecessary, but highly inadvisable for a many reasons and implications. It's absolutely beyond scope for Proton to modify system files as any form of solution or workaround. The esync patch has not been accepted yet into mainline wine or wine-staging for good reasons :)

iroedius commented 5 years ago

I can confirm that increasing file descriptor limit works. After enabling ESYNC again and increasing file descriptor limit to 1048576 the game also stopped crashing.

If your distribution is using systemd, which most are these days, the best way to set it higher is to drop a file into /etc/systemd/system.conf.d with any name ending in .conf, for example limit.conf, with the following two lines:

[Manager]
DefaultLimitNOFILE=1048576

@SeeK-ntr0py I think it's perfectly reasonable to require a little configuration if it increases performance. It should just be documented and perhaps not enabled by default if it can't be automated.

ghost commented 5 years ago

@iroedius Simply, no. It is out of scope for a userspace game client such as Steam/Proton to require changes to be made to systemd configuration.

The issue needs to be corrected in the userspace application, which, by definition, needs to function within OS specifications. If it cannot do so with regard to functionality or stability then it is to be considered bugged.

Enabling or automating this on Valve's side would require Steam to run with root level access which -- for reasons which I hope are obvious event to bacteria -- has completely unacceptable security implications. This is just a Wine fork, not kernel/systemd development =)

iroedius commented 5 years ago

@SeeK-ntr0py I agree that in this case automation is out of the question, since it requires root privileges and alters the behavior of the whole OS. Instead, until ESYNC is fixed to work for all games with no changes to system configuration, it should be disabled by default, a variable added to enable it and the required changes to system configuration on the user part documented. If it can increase performance it should definitely be an option.

ghost commented 5 years ago

@iroedius

until ESYNC is fixed to work for all games with no changes to system configuration, it should be disabled by default, a variable added to enable it and the required changes to system configuration on the user part documented. If it can increase performance it should definitely be an option.

Totally agree with you; this seems like the right solution at this time.

Kazenin commented 5 years ago

@Kazenin disabling ESYNC in step 5 renders steps 1-4 moot. Those would only serve as dirty hacks related to the use of the ESYNC patch, which is much easier to disable.

Also, editing system-wide (particularly systemd and security) configuration files is not only unnecessary, but highly inadvisable for a many reasons and implications. It's absolutely beyond scope for Proton to modify system files as any form of solution or workaround. The esync patch has not been accepted yet into mainline wine or wine-staging for good reasons :)

Sorry, I made a huge mistake. Thanks for read and answer