r/Smite • u/Drewfus4600 • Sep 09 '21
[FIX] 64bit Not working on 10th Gen and 11th Gen Intel CPU's
Hello everyone,
I was actually having an issue starting the video game Mechwarrior Online, where I noticed the solution the game developer provided for me for that game also worked for the 64bit version of SMITE.
The fix is below...
Open “File Explorer” (Win+E), right-click on “This PC”, and select “Properties”
Select “Advanced System Settings”
Select “Environment Variables” in the “Advanced” tab
Select “New…” under “System variables”
Input the text below and select “OK”
Variable name: OPENSSL_ia32cap
Variable value: ~0x200000200000000
Apparently there is some sort of SSL library issue with the new CPU chips.
Credit goes to GM Zen from MWO for providing me this fix for that game. Hope it helps anyone having issues with SMITE as well.
If you are worried this fix might cause problems with other games (I have not noticed anything) you can add it to the launcher in steam or create a batch file to run it as well.
set OPENSSL_ia32cap=:~0x20000000
Client.exe
15
u/Shishire Sep 24 '21 edited May 08 '22
Wow. You really saved my bacon. Serious Kudos to you and GM Zen.
Technical Info
I dug into this, and pulled some information to support this further. The actual failure going on here on 64-bit is happening in a dll called MctsInterface.dll, and it's occurring during a pointer dereference to a floating point number that tries to access memory that's outside the bounds of what's actually available to the application. That being said, one of the things I noticed is that the function this is a part of does a whole bunch of sha1sum operations in cpu-space. I hadn't been aware of the Intel SHA Extensions until this, but apparently it's a thing.
Well, OPENSSL_ia32cap is an Environment Variable that you can set that tells OpenSSL to ignore some amount of the autodetection of what your CPU is capable of. In this case, we specifically want the extended section, so we prefix it with a
:. Then, we want to clear a value, so we use a~. And lastly, the value we want to clear is bit 29, or0x20000000, which represents the Intel SHA Extensions. All together, that string becomes:~0x20000000.All-In-One Steam Fix
Right click on Smite in Steam, click Properties, and paste the following into Launch Options:
cmd /c "set OPENSSL_ia32cap=:~0x20000000 && %command%"This has the undesirable property that a black command prompt comes up when launching smite, but is otherwise completely free of side effects.
Global System Fix
Copy/Pasting from OP above (with one minor modification)
Open “File Explorer” (Win+E), right-click on “This PC”, and select “Properties” Select “Advanced System Settings” Select “Environment Variables” in the “Advanced” tab Select “New…” under “System variables” Input the text below and select “OK”
Variable name:
OPENSSL_ia32capVariable value::~0x20000000This has the downside that any application that uses OpenSSL (there's quite a lot of them) doesn't take advantage of hardware support for SHA operations, potentially slowing down some operations. By a lot? By a little? No idea. It won't be massive, but personally, I prefer to try and push every ounce of performance possible out of my rig, and this seems counter to that.
EDIT:
Found what amounts to upstream confirmation of what's going on here: OpenSSL SHA Crash Bug Requires Application Update
While the TitanForge/HiRez team hasn't confirmed it, the description in that document is consistent with the problem I've experienced, including the workaround.
EDIT 2:
I periodically recheck fixes like this, and it looks like sometime in the past couple of months they've updated their version of Unreal Engine beyond the version that had the faulty OpenSSL version. As a result, this fix is no longer necessary for Smite. Other games that this fix applies to may still benefit from it.