Jump to content

HDT Physics Extensions Crash Fix 1.5.0


About This File

Introduction:

 

This SKSE plugin fixes hdtPhysicsExtensions.dll+0x15E2EC crash (generally confused as a load game crash because it crashes right after loading your first save).

The crash happens due to a race condition when calling TlsGetValue (which returns 0/NULL when uninitialized), followed by HDT PE not checking for this possibility, doing arithmetic on a null pointer and finally dereferencing the result of this arithmetic, thus causing the game to crash for accessing an invalid memory address.

 

The solution was to make the function return immediately if the result of TlsGetValue is NULL, thus preventing it from trying to access an invalid memory address and crash the game.

 

Additional Fixes:

 

  • hdtPhysicsExtensions.dll+0xEF30: Crash happens because the game might return a null pointer for an object reference, which HDT PE does not check for; Solution was to execute the code to release this object reference from HDT, which is executed when the object reference is no longer in the expected cell.
  • hdtPhysicsExtensions.dll+0xD5A5C: Another crash that happens because HDT PE does not check for the possibility of TlsGetValue returning a null pointer; Solution was to skip part of the code that relies on the returned pointer.
  • hdtPhysicsExtensions.dll+0xC89E8: Another crash that happens because HDT PE does not check for the possibility of TlsGetValue returning a null pointer; Solution was to skip part of the code that relies on the returned pointer.

 

Installation:

 

Place hdtPhysicsExtensionsCrashFix.dll in the same location as hdtPhysicsExtensions.dll.

 

Known Issues:

 

Other memory addresses relying on TlsGetValue without a sanity check might need to be patched aswell.

I'll need you to report back to me with the crashing addresses.


What's New in Version 1.5.0

Released

  • Added logging for fixed crashes as a way to let users know if these fixes helped them. Logs are written to "<Skyrim>/Data/SKSE/Plugins/hdtPhysicsExtensionsCrashFix.log".

 

1.4.0

  • Added an additional crash fix for hdtPhysicsExtensions.dll+0xC89E8.

 

1.3.0

  • Added an additional crash fix for hdtPhysicsExtensions.dll+0xD5A5C.

 

1.2.0

  • Added an additional crash fix for hdtPhysicsExtensions.dll+0xEF30.

 

1.1.1

  • Added an image boundary sanity check to fixes.
  • Removed a redundant jmp instruction from the detour.

 

1.1.0

  • Restructured the codebase as to allow for easier patching of future addresses.


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use