Jump to content

HDT Physics Extensions Crash Fix


Guest

Recommended Posts

Posted

Thanks - I checked WER and found that the occasional crash during first load happens at the offset you mentioned.  I'll let this run a few days and post back if it helps or still crashes.

Posted

Intriguing, so I installed Bobs bug fixes, uninstalled Continue Game No Crash. Played around in Skyrim for a couple of hours.

LoL, My damn Skyrim wont crash. I'll keep trying and see if I get this crash.

Thanks for all your contributions, a lot of use appreciate it.

Posted

Thanks for the reports. It looks like patching that single address fixes the issue for everyone, not just me.

 

Also, here is something that will help you fix stretching issues with HDT PE.

It will recursively parse all your XMLs and warn you about the ones with maxLinearVelocity and/or maxAngularVelocity having a value other than 255. You can edit those manually as you deem fit.

This script requires Python 2 or 3.

 

EDIT:

Improved the script to run faster under < Python 3.3 and made the warnings less cryptic.

 

validate.py

Posted

Incidentally, I just got an HDT crash when waking up a sleeping male by talking to him.

 

Faulting application name: TESV.exe, version: 1.9.32.0, time stamp: 0x51437ce5
Faulting module name: hdtPhysicsExtensions.dll, version: 0.0.0.0, time stamp: 0x53108655
Exception code: 0xc0000005
Fault offset: 0x0000ef30

 

 

(Not suggesting it's related to your fix, just that it's a different crash somewhere else)

Posted
32 minutes ago, throwaway219 said:

Incidentally, I just got an HDT crash when waking up a sleeping male by talking to him.

 

Faulting application name: TESV.exe, version: 1.9.32.0, time stamp: 0x51437ce5
Faulting module name: hdtPhysicsExtensions.dll, version: 0.0.0.0, time stamp: 0x53108655
Exception code: 0xc0000005
Fault offset: 0x0000ef30

 

 

(Not suggesting it's related to your fix, just that it's a different crash somewhere else)

Could you attach the SKSE minidump from this crash?

Posted
23 hours ago, throwaway219 said:

Thanks, sent over PM.

The crash happens for the same reason as TlsGetValue, it calls a function which can return a null pointer, but it doesn't check whether the function has returned a null pointer or not and proceed to dereference it.

push ebx // Object refID.
mov eax,TESV.exe+51A30
call eax
add esp,04
cmp [eax+40],edi // Crashes when EAX is NULL (return value of the function previously called).

The function it calls is from Skyrim:

TESObjectREFR* __cdecl TESV_51A30(UInt32 refID);

Aka, it returns the object reference that has that refID.

 

It then proceeds to check if the parent cell of that object is the expected cell:

TESObjectREFR* objReference = TESV_51A30(ebx); // EBX == refID

if (objReference->parentCell == edi) // EDI == Expected Cell
{
    ...
}
else
{
    // Release object reference from HDT.
}

Since objReference is NULL from your minidump (EAX == 0), objReference->parentCell is going to crash the game.

 

The obvious solution seems to release the object reference from HDT when it's NULL (same behavior as if the object reference is no longer in the expected cell).

TESObjectREFR* objReference = TESV_51A30(ebx); // EBX == refID

if (objReference != NULL && objReference->parentCell == edi) // EDI == Expected Cell
{
    ...
}
else
{
    // Release object reference from HDT.
}

I was not able to reproduce this crash though and this crash has nothing to do with TlsGetValue nor the 0x15E2EC fix.

 

I'll see if I can push this fix today, although LL is becoming more unusable by the day. I had to input captchas 4 times with 2 pages of captchas each just to view the site and then another to login. Apparently I am not human.

Might aswell move this fix to Nexus with a throwaway account as to not reveal my identity.

Posted

Released 1.2.0 with a fix for the crash discussed above.

 

Also edited my previous post as to fix some elements of the explanation (formID -> refID, current cell -> expected cell).

Posted
On 4/16/2020 at 7:53 AM, Hawk9969 said:

It uses NiOverride overlays to replace the default cum applying from SexLab.

It allows for better looking effects and placements (mouth, face, chest, vagina and anus vs face/chest, vagina and anus).

It's the same as applying those overlays yourself with SlaveTats, but it's done automatically at your configured orgasm event and does not require SlaveTats a all.

 

 

  Reveal hidden contents

https://imgur.com/a/nNyXiMm



int Function GetSceneCumType(sslBaseAnimation animation)
    int cumType = CUM_NONE

    ; First we check the tags for some more specific types.
    if (animation.HasTag("CumInMouth") || animation.HasTag("EatingCum"))
        cumType = Math.LogicalOr(cumType, CUM_MOUTH)
    elseif (animation.HasTag("Facial"))
        cumType = Math.LogicalOr(cumType, CUM_FACE)
    endif
    if (animation.HasTag("ChestCum"))
        cumType = Math.LogicalOr(cumType, CUM_BREAST)
    endif
    if (animation.HasTag("Creampie") || animation.HasTag("VaginalCum"))
        cumType = Math.LogicalOr(cumType, CUM_VAGINA)
    endif
    if (animation.HasTag("AnalCreampie") || animation.HasTag("AnalCum"))
        cumType = Math.LogicalOr(cumType, CUM_ANUS)
    endif

    return cumType
EndFunction

int Function GetPositionCumType(sslBaseAnimation animation, int stage, int position)
    int cumType = CUM_NONE

    int cumID = animation.GetCumID(position, stage)

    if (cumID < 1 || cumID > 7)
        return cumType
    endif

    if (cumID == 7)
        cumType = CUM_ALL
    else
        if (cumID == 2 || cumID == 4 || cumID == 6) ; Oral, Oral Vaginal, Oral Anal
            if (animation.HasTag("Boobjob") || animation.HasTag("Titjob") || animation.HasTag("Titfuck")) ; Check for boobjob.
                cumType = Math.LogicalOr(cumType, CUM_BREAST)
            else
                cumType = Math.LogicalOr(cumType, CUM_FACE)
            endif
        endif
        if (cumID == 1 || cumID == 4 || cumID == 5) ; Vaginal, Oral Vaginal, Vaginal Anal
            cumType = Math.LogicalOr(cumType, CUM_VAGINA)
        endif
        if (cumID == 3 || cumID == 5 || cumID == 6) ; Anal, Vaginal Anal, Oral Anal
            cumType = Math.LogicalOr(cumType, CUM_ANUS)
        endif
    endif

    return cumType
EndFunction

 

 

 

I've offered it around to some authors (including the author of the textures), but got literally zero replies from them.

Is there any chance you could upload the mod without the art assets in it. and then direct ppl to the mod that contains the assets in it. I think that operates within permissible mod practices, Im just asking, if its not doable i understand, but I had to ask cuz WOW that looks F'n Amazing! And thanks for your hard work, I still use HDT PE so stopping crashes is super cool.

Posted

Thanks for posting source

This made me smile in this day and age:
 

if (msg->sender == nullptr || std::strcmp(msg->sender, "SKSE") != 0)
            return; // We are only listening to SKSE. Ignore everything else.

 

Posted
On 4/23/2020 at 9:28 AM, Dorito King said:

Is there any chance you could upload the mod without the art assets in it. and then direct ppl to the mod that contains the assets in it. I think that operates within permissible mod practices, Im just asking, if its not doable i understand, but I had to ask cuz WOW that looks F'n Amazing!

Those textures need to be moved to another directory structure as to not conflict with SlaveTats (SlaveTats considers anything in its directory structure to be managed by it). I've also edited the Facial1 texture for use with the "Cum in Mouth" overlay.

Besides all that:

Quote

Out of principle. Why support those who try to hinder you at every step (Captcha, copyright stupidity, etc)?

Sorry.

51 minutes ago, radech said:

This made me smile in this day and age:

What made you smile?

Posted
12 hours ago, Tyrygosa said:

How does it affect your fps?

I believe he might be referring to running SMP for the PC and PE for NPCs; If not, it's complete nonsense or he has posted in the wrong thread.

This plugin WILL NOT affect your FPS at all. These are merely guards that will execute the same instructions as before under normal conditions or execute an alternate set of instructions under conditions that would cause the game to crash 100% of the time before.

Posted

VirusTotal Reports:

 

SecureAge APEX     Malicious     BitDefenderTheta     Gen:NN.ZedlaF.34106.fu8@aeSs8Xfi

 

It seems to be a false positive. Can we gget resolution on this?

Posted
On 4/25/2020 at 7:03 AM, DivinityItself said:

VirusTotal Reports:

 

SecureAge APEX     Malicious     BitDefenderTheta     Gen:NN.ZedlaF.34106.fu8@aeSs8Xfi

 

It seems to be a false positive. Can we gget resolution on this?

Not sure if serious, but I'll reply anyway.

 

This is your report: https://www.virustotal.com/gui/file/a2979518cc5e0f8c657c93be8eafb7af55242fd2bb02d76c939f324315e77402/detection

  1. Only 2 out of 71 (SEVENTY ONE) reported it as malicious.
  2. Those 2 look like shitty antiviruses and I've never heard of them.
  3. The source code is FULLY available, you don't need to trust my DLL if you don't want to. You can take a look at the source code yourself and compile it yourself.
  4. There is nothing to solve here. It doesn't perform any syscalls that SKSE itself won't perform (GetModuleHandleEx, VirtualProtect, etc), but for some reason they are ok with far more intrusive methods from SKSE.

Here is a piece of code that I've written to test LAA on some system that gets reported by far more antiviruses than this plugin:

#include <stdlib.h>
#include <stdio.h>
#include <Windows.h>

#define BLOCK_SIZE 1024

void AllocateTest(void)
{
	size_t bytes = 0;

	printf("Block Size: %u\n", BLOCK_SIZE);

	do
	{
		printf("\rHeap: %u", bytes);
		bytes += BLOCK_SIZE;
	}
	while (malloc(BLOCK_SIZE) != NULL);

	fputs("\n\nPress any key to continue...", stdout);
	getchar();
}

int main(const int argc, const char** const argv)
{
	UNREFERENCED_PARAMETER(argc);
	UNREFERENCED_PARAMETER(argv);

	AllocateTest();

	return 0;
}

 

Posted

Hi.  Do you know anything about HDT SMP for skyrim LE?  I'm having a frustating crash issue, and I've finally discovered SMP as the source of the problem.  I was wondering if maybe you could help me.  It's possible I just set up SMP wrong, but just in case I was advised on a solution but don't know anything about scripting and cannot make the solution myself.  Let me know if you think you can help (and if you want to help).  If not I understand.

Posted
On 4/27/2020 at 11:59 AM, Aki K said:

Hi.  Do you know anything about HDT SMP for skyrim LE?  I'm having a frustating crash issue, and I've finally discovered SMP as the source of the problem.  I was wondering if maybe you could help me.  It's possible I just set up SMP wrong, but just in case I was advised on a solution but don't know anything about scripting and cannot make the solution myself.  Let me know if you think you can help (and if you want to help).  If not I understand.

No, sorry. I don't even have SMP installed at the moment.

Posted
Just now, Hawk9969 said:

No, sorry. I don't even have SMP installed at the moment.

Oh well.  Worth a shot.

 

Let me ask something else.  I heard it was possible to disable HDT for NPCs but keep it for the player.  Do you know how that's accomplished?  I don't know that it would apply to my SMP troubles but worth a shot.

Posted
49 minutes ago, Aki K said:

Let me ask something else.  I heard it was possible to disable HDT for NPCs but keep it for the player.  Do you know how that's accomplished?  I don't know that it would apply to my SMP troubles but worth a shot.

No, never researched that because NPCs are the ones that need physics working when your PC is male. I am also far from an expert on HDT and Havok.

This plugin fixes logical programming errors (my area of expertise) and not physics related ones (not my area of expertise). You are better off asking someone else.

Posted
15 minutes ago, Hawk9969 said:

No, never researched that because NPCs are the ones that need physics working when your PC is male. I am also far from an expert on HDT and Havok.

This plugin fixes logical programming errors (my area of expertise) and not physics related ones (not my area of expertise). You are better off asking someone else.

Ah well.  I'll figure it out eventually...I hope.

Posted

Came across another crash related to TlsGetValue returning NULL. I am working on a fix.

Posted

1.3.0 released with a new fix included.

Posted
21 hours ago, Aki K said:

Let me ask something else.  I heard it was possible to disable HDT for NPCs but keep it for the player.  Do you know how that's accomplished?  I don't know that it would apply to my SMP troubles but worth a shot.

The way i see it - this can be done is by using some mod like Unique Player/Charmers of the Reach or something that will let you use different meshes for the player and NPCs. Then build HDT or SMP for the player and non PE for all the NPCs.

 

Hope this can help you a bit :)

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...