ValveSoftware / ValveSoftware/Proton
Unreal Engine 4.13-4.21 games crash on CPU's with SHA extensions
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 32.8k
- Forks
- 1.6k
- PR merge metrics
- PR metrics pending
Description
System Information
- GPU: AMD Radeon RX 5700
- Driver/LLVM version: Mesa 23.0.0-git
- Kernel version: 5.17.5-301.fsync.fc36.x86_64
- Proton Version: proton-7.0-2 / experimental
Symptoms
Some games crash on computers that have CPU's with SHA extensions (Intel 10th gen and newer). On my Intel 12th Gen Alder Lake CPU these games crash on launch or after a few minutes of gameplay. The crashes appear to occur because of this issue:
OpenSSL* 1.0.2 beta (Jun 2014) to OpenSSL 1.0.2k (Jan 2017) contain bugs that either cause a crash or bad SHA (Secure Hash Algorithm) values on processors with the SHA extensions, such as the recently released 10th Generation processor. Both bugs were fixed years ago; however, any application that uses the old version directly, or as one of its dependencies, will fail. Unreal Engine* version 4.13 (Sept 2016) to version 4.21 (Dec 2018) contains the old version of OpenSSL, so any game built using those versions is possibly affected.
Reproduction
- Try playing any games affected by this issue on a Intel 10th gen CPU or newer
- The game will either fail to launch, or crash after some gameplay
Workaround
Set Steam Launch option:
OPENSSL_ia32cap=0x20000000 %command%
That disables the OpenSSL code check for SHA extensions and runs a different code path that does not contain the crashing bug.
Logs of playing games without the workaround (crashing), and playing them successfully with the workaround:
Blair Witch (1092660) #3174
Song of Horror (1096570)
Call of Cthulhu (399810)
Man of Medan (939850) #3024
As tested on 12th Gen Intel(R) Core(TM) i7-12700T:
steam-399810-fix.log
steam-399810.log
steam-939850-fix.log
steam-939850.log
steam-1092660-fix.log
steam-1092660.log
steam-1096570-fix.log
steam-1096570.log
Summary / thoughts
Sorry if this problem is beyond the scope of Proton, but I wanted to bring awareness to this issue in case it has gone unnoticed. While this bug is not Proton specific it is unlikely that any of the games with the problem will ever be updated. So I was thinking that maybe these games can be made to work out of the box in Proton using the workaround.
Also as there are more games with this problem than the ones I mentioned, perhaps it should be considered to always use the alternate code path on Proton (if there is never any reason not to in games).
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing an affected Unreal Engine 4.13–4.21 game with and without OPENSSL_ia32cap=0x20000000 %command%, using the linked crash and successful logs as reference. Inspect how Proton handles launch environment variables, then verify that affected games launch without the workaround and that unrelated games are unaffected.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux, unreal-engine
- Domain
- operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 32/100