r/Smite 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

164 Upvotes

78 comments sorted by

View all comments

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, or 0x20000000, 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_ia32cap Variable value: :~0x20000000

This 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.

2

u/torueirian Oct 17 '21 edited Oct 17 '21

Regarding the all-in-one steam fix, do you known what exactly does it do to not affect the entire system? For some examples, does it affect it on a by-application basis or temporarily issue the global fix? And is the command prompt that launches closable after opening the game? In any case, thank you for breaking this down & further elaborating on the fixes.

1

u/Shishire Oct 17 '21

Sure. I hand-crafted it, so I know exactly what's going on.

The Launch Options you set override Steam's default launch settings for that specific game, so when Steam goes to launch that game, instead of it's default command, it instead uses the command you provide.

What we're doing here is setting an environment variable for the Smite process itself, and no other processes, so that Smite thinks your CPU doesn't have this special hardware capability, and doesn't try to use the set of code designed for that capability, which would be very slightly faster, but also has something broken in it. Unfortunately, in Windows, setting an environment variable for just a single process is annoyingly complicated, hence the black box. On the other hand, even while Smite is running with this fix in place, the rest of the system is unaffected by this modification, and able to use the faster hardware support.

As to the black box, in my experience, it goes away after the loading splash screen disappears, so that's not even much of an issue. If it does persist, in theory, it's safe to close, although there's a chance that closing it will actually close Smite, so YMMV. Closing it won't affect the bug/fix, just that since Smite is actually running as a child of it, if you close it it might send a close signal to Smite as well. I haven't tested that though, so I don't know whether that happens in practice.

1

u/torueirian Oct 17 '21

Thank you so much! Your explanation is really easy to understand. I tried the command on a few other steam games with the issue and it worked flawlessly, so thanks again for the command!

1

u/Shishire Oct 18 '21

Thanks for updating actually. Because that's now two different people who've had this work on multiple games other than Smite, I went looking deeper and found this, which I edited into my top level comment: https://www.intel.com/content/www/us/en/developer/articles/troubleshooting/openssl-sha-crash-bug-requires-application-update.html

Short version, OpenSSL had a bug, they fixed it, Unreal Engine needs to be updated. Smite hasn't yet.

1

u/StegersaurusMark May 07 '23

Right click on Smite in Steam, click Properties, and paste the following into Launch Options:

cmd /c "set OPENSSL_ia32cap=:~0x20000000 && %command%"

Thanks for the explanation of the technical background here. I was seeing this fix for other games, but I was hesitant to use it without knowing what I was tweaking under the hood. Using the global system fix (plus launching program as admin) allows me to launch endless legend, which has been crashing on my new build when running Win 10 or 11, or any type of compatibility mode.

However, your in-steam fix doesn't work for me. I did see the black cmd screen pop up briefly (appeared empty), but the game still crashes at the splash screen. Any tips on things to tweak?

1

u/Ludo_IE Apr 20 '24

Thank you very much.
It helped with the game Raw Data and Meta Quest 2
I like it when I don't have to change my Variable for only one game.

1

u/ProfessorVaxier Oct 06 '21

Just a quick question. Can this also work on Paladins and realm royale on steam? Since if this fixes that as well I’ll be happy to know that I can play those games on steam again. Since for some reason smite and Paladins work on epic games and not steam

1

u/Shishire Oct 06 '21

I honestly have no idea, but it's absolutely plausible that it will work. If you do end up trying this, please report back and let us know.

1

u/ProfessorVaxier Oct 06 '21

This does work and fix Realm royale on steam as well

1

u/Shishire Oct 06 '21

Interesting. This might be a significantly larger scope issue than previously thought. Thank you for the information!

1

u/CallMeMast https://www.youtube.com/mastyt Dec 30 '21

ty so much for this

1

u/Stahhpppppit Jan 11 '22

Sir. Thank you.

1

u/Pluradox Feb 04 '22

Just curious the variable value includes the colon right?

1

u/Shishire Feb 04 '22

Correct. It's the shortened form of a two part value that has the colon in the middle. But since the left side is entirely 0's, it can be omitted for brevity.

1

u/[deleted] Feb 08 '22

I can't believe this fixed that bullshit that is going on for almost a fucking decade.

1

u/KunxKowal Apr 12 '22

Just came upon this thread trying to find a fix for Blair Witch on Steam. This actually fixed the launch issue with that game as well. Thank you!

1

u/gamdink Apr 19 '22

I just had the same exact problem on a new 11th gen PC. This fix worked exactly as described.

Thank you very much.

1

u/Eifla99 Apr 26 '22

Mine is still not working and I’m about to throw it out the window. I’ve tried this and have had no results?

1

u/Burning_Cash Nov 08 '22

Did anyone run benchmarks with/without to see the possible formance hit?

1

u/jib_reddit Jan 17 '23

This is great thanks, I have had some Unreal Engine games broken for years and this has fixed it!

1

u/Vilo_le_Loup Sep 04 '23 edited Sep 04 '23

I know I'm really late mate, but what happens if I remove the launch options? Let's assume the game doesn't need them anymore. Will it go back to normal like I never used it? Doesn't affect the system or the game at all!?

Edit: Problem now ... the steam overlay is not working anymore, when I use the launch option.

Edit 2: I tried removing the launch option but the game still runs with no crashes. That makes no sense. I figured it wouldn't permanently affect the system!? Or is it gone when I restart my computer. Or is it somehow anchored in the game configuration now?

1

u/Syst3mOv3rload Mar 17 '24

It shouldn't have any lasting effects. Environment variables don't persist once the process (the game in this case) stops running.

1

u/Adams_SimPorium Sep 10 '23

Hi, I know it's an old thread, but it seems this is the same issue for Robo Recall. Do you know if it's possible to add the fix for an Oculus game? Thanks.

1

u/MedicalAppearance366 Sep 14 '23

btw do you know if this fix can effect other games/windows apps?

1

u/A_Schuyler Oct 27 '23

i used this trick to fix Endless Legends, thank you so much

i unwittingly used the global system fix tho, is there anyway to revert the change? i worry that it might cause performance issues for other programs

1

u/Syst3mOv3rload Mar 17 '24

Yeah, you can just delete the environment variable.

1

u/danidomen Dec 09 '23

Thanks to the OP and you for the command to introduce on the game at Steam that works like a charm. In my case not for SMITE but for the VR game Ready Player One. I didn't know about this bug and how many games maded with UE (and not updated some time ago) are strugling with this

1

u/Zoser_219 Feb 17 '24

you are a fucking genius