Jump to content

Need help reading Papyrus stuff for CTD and trying to swap two mods


Aki K

Recommended Posts

Posted
1 hour ago, Aki K said:

I can't even find the crashfixplugin.ini .  Maybe I installed it wrong somehow.  EDIT  I do have it installed wrong.  I found the plugin and the ini file.  UseOSAllocators=1.  But I installed the crashfix to the wrong location.  I installed it like a mod, rather than putting it in the SKSE plugins folder.  That might be my problem?

The three things are impossible.

I don't know what you're doing, how you install the mods or how you manage your installation.

 

Point one:
If the memory block file says that you have the blocks in 256kb and only have 2 lines with 85/8 it is impossible for your game to work with 190 plugings using memory blocks.
Block1 Block2
256MB 256MB
85 8
85 8

 

Point two:
If you are not using memory blocks and your game works it is because you are using CrashFixes with OsAllocators

 

Point three:
It is impossible that you have CrashFixes improperly installed because if it were improperly installed your game would not work.

 

------------------


Possibility 1
That memory block file is not correct. Maybe you have not installed the Memory Blocks Logs in the right way and the memory block file you show yesterday is not correct, it is old or not updated. In that case is possible that you are using SKSE Memory allocation.


Possibility 2
You really have crash fixes installed and working whit OsAllocators but you are doing so many things and so many mixes that you no longer know what you are doing, or what you have, whether it is right or wrong.

 

------------------

 

If you want to play Skyrim with 200, 400 or 600 mods you have to stop doing things MANUALLY.

You have to follow the same method that everyone uses.

 

I've always wondered how you might break your game and have to reinstall it if you use MO. Technically it is IMPOSSIBLE. MO does not touch the game directory. MO does not install absolutely ANYTHING on Skyrim\DATA

 

If your game is broken and you have to delete the Skyrim directory to be able to reinstall the game in an empty directory it must be because YOU, manually, are copying files, BY HAND, into the Skyrim folder.

If you are using a mod administrator you should not manually copy ANYTHING.

Absolutely NOTHING ... NEVER.


You have a mod manager to manage the mods.

It doesn't matter if you use NMM, MO, Vortex, ByreWash, Kortex...

The mod administrator is to manage the mods.
Your mods have to be installed with the mod manager.
You do not have to install any mod manually.
That's what mod manager is for.
The manager is the only one who should install the mods

Forget about doing things MANUALLY.
YOU DO NOT HAVE TO MANUALLY INSTALL ANYTHING ABSOLUTELY NOTHING. NEVER.

 

The only mods that you MUST install manually are SKSE and ENB because their files go to the main master folder of the game, the same folder that have TESV.exe and the managers can not install files in that folder. 
That are the only TWO mods that you MUST install MANUALLY.
Some special mods need to be installed MANUALLY in the same main folder of the game, like for example SKSE Pluging preloader, but is clearly explained in the web pages.


The rest of the mods MUST be installed using the manager.
The rest include every mod from every download from every web page.
The rest include FNIS, BodySlide, CrashFixes, Memory Block Log, SkyUi, SexLab, Slavetats, STMM....

 

ALL THE MODS MUST BE INSTALLED USING THE MANAGER.
PLEASE, STOP MAKING MANUAL THINGS.

That only can cause problems to you and to any person to try help you because nobody can know what things are you making manually, if that things are correctly made or if yours problems come from a bad mod, a bad configuration or a bad MANUAL operation.

 

As you can see, i have ALL installed from MO and, of course, EVERY user MUST have ALL installed from MO:

Spoiler

image.png

 

Posted
37 minutes ago, GenioMaestro said:

The three things are impossible.

I don't know what you're doing, how you install the mods or how you manage your installation.

 

Point one:
If the memory block file says that you have the blocks in 256kb and only have 2 lines with 85/8 it is impossible for your game to work with 190 plugings using memory blocks.
Block1 Block2
256MB 256MB
85 8
85 8

 

Point two:
If you are not using memory blocks and your game works it is because you are using CrashFixes with OsAllocators

 

Point three:
It is impossible that you have CrashFixes improperly installed because if it were improperly installed your game would not work.

 

------------------


Possibility 1
That memory block file is not correct. Maybe you have not installed the Memory Blocks Logs in the right way and the memory block file you show yesterday is not correct, it is old or not updated. In that case is possible that you are using SKSE Memory allocation.


Possibility 2
You really have crash fixes installed and working whit OsAllocators but you are doing so many things and so many mixes that you no longer know what you are doing, or what you have, whether it is right or wrong.

 

------------------

 

If you want to play Skyrim with 200, 400 or 600 mods you have to stop doing things MANUALLY.

You have to follow the same method that everyone uses.

 

I've always wondered how you might break your game and have to reinstall it if you use MO. Technically it is IMPOSSIBLE. MO does not touch the game directory. MO does not install absolutely ANYTHING on Skyrim\DATA

 

If your game is broken and you have to delete the Skyrim directory to be able to reinstall the game in an empty directory it must be because YOU, manually, are copying files, BY HAND, into the Skyrim folder.

If you are using a mod administrator you should not manually copy ANYTHING.

Absolutely NOTHING ... NEVER.


You have a mod manager to manage the mods.

It doesn't matter if you use NMM, MO, Vortex, ByreWash, Kortex...

The mod administrator is to manage the mods.
Your mods have to be installed with the mod manager.
You do not have to install any mod manually.
That's what mod manager is for.
The manager is the only one who should install the mods

Forget about doing things MANUALLY.
YOU DO NOT HAVE TO MANUALLY INSTALL ANYTHING ABSOLUTELY NOTHING. NEVER.

 

The only mods that you MUST install manually are SKSE and ENB because their files go to the main master folder of the game, the same folder that have TESV.exe and the managers can not install files in that folder. 
That are the only TWO mods that you MUST install MANUALLY.
Some special mods need to be installed MANUALLY in the same main folder of the game, like for example SKSE Pluging preloader, but is clearly explained in the web pages.


The rest of the mods MUST be installed using the manager.
The rest include every mod from every download from every web page.
The rest include FNIS, BodySlide, CrashFixes, Memory Block Log, SkyUi, SexLab, Slavetats, STMM....

 

ALL THE MODS MUST BE INSTALLED USING THE MANAGER.
PLEASE, STOP MAKING MANUAL THINGS.

That only can cause problems to you and to any person to try help you because nobody can know what things are you making manually, if that things are correctly made or if yours problems come from a bad mod, a bad configuration or a bad MANUAL operation.

 

As you can see, i have ALL installed from MO and, of course, EVERY user MUST have ALL installed from MO:

  Reveal hidden contents

image.png

 

I have installed all mods with MO.  The only things I installed manually are SKSE and ENB.

 

I installed crashfix with MO.  Is that right or wrong?

 

I read the ini and that's what it said.  It said the allocator was on.  Maybe it was the wrong logs or maybe it didn't update or something.  But I only just installed it so I don't know how the logs could not be updated.  Aside from installing this stuff and reading the logs to you, I haven't done anything out of the ordinary as far as I can tell.

 

I don't understand the memory stuff.  I have said many times I am not a technical person.  So maybe I am just misunderstanding what I am meant to be doing.

 

But I want to confirm, aside from SKSE and ENB I have done nothing manually.  I did not know that was required, but it was easier so that's how I did it.  So to reiterate, 100% of my mods are installed with MO.  

 

Spoiler

308504772_MOthing.png.7693f0d08c18a3b558c2064aef0b7954.png

See?  I try to avoid overcomplicating things.  I just don't understand the details so I need to talk about it in very simple terms.  I don't understand how all the tools and fixes work.  I just install them when people tell me I'm supposed to. 

 

EDIT: Not visible in picture but the other crash fix is installed on MO also, not just srtcrashfix.

Posted
2 hours ago, Aki K said:

EDIT  I do have it installed wrong.  I found the plugin and the ini file.  UseOSAllocators=1.  But I installed the crashfix to the wrong location.  I installed it like a mod, rather than putting it in the SKSE plugins folder.

Then, if you are installing EVERYTHING with MO i can not understand why you write:

"But I installed the crashfix to the wrong location"

Is IMPOSSIBLE... You have not installed it manually, then MUST be installed correctly.

If you have installed CrashFixes in MO MUST be correctly installed. 

 

If you say: "I installed it like a mod, rather than putting it in the SKSE plugins folder"

You are saying that you are making a special installation.

CrashFixes is a mod, like any other mod, have exactly the same treatment as SkyUi, SexLab or STMM.

If you install it manually or making a special installation you are making it bad.

 

 

The correct way to install a mod is add it to MO and enable it. Is ALL that you must make.

If you are making that, exactly that, you are making it in the correct way.

If you are making others things are bad made and nobody can know what are you making or why.

Posted
36 minutes ago, Aki K said:

I installed crashfix with MO.  Is that right or wrong?

That is correct.

 

If you have CrashFixes correctly installed and you have UseOSAllocators=1 inside CrashFixPlugin.ini that section of the memory management is correct.

 

Next step is verify ENB. Open enblocal.ini located in the main folder of the game, outside MO, and verify if you have ReduceSystemMemoryUsage=true

 

Download BethIni and configure it correctly to be used with MO. Read and follow the instruction, specifically that:

3. Mod Organizer users should go to the Setup tab and select the profile they wish to use via the ''INI Path'' setting. Your profiles should be autodetected. It is highly recommended to close Mod Organizer if open.
4. Click Default. This will refresh your INI files to the default state.

 

Run Ordinator in your entire mod folder to generate MipMaps in every mod.

 

If the CTD persist, revise your HDT installation, remove some HDT mods and try again.

Posted
1 hour ago, GenioMaestro said:

Then, if you are installing EVERYTHING with MO i can not understand why you write:

"But I installed the crashfix to the wrong location"

Is IMPOSSIBLE... You have not installed it manually, then MUST be installed correctly.

If you have installed CrashFixes in MO MUST be correctly installed. 

 

If you say: "I installed it like a mod, rather than putting it in the SKSE plugins folder"

You are saying that you are making a special installation.

CrashFixes is a mod, like any other mod, have exactly the same treatment as SkyUi, SexLab or STMM.

If you install it manually or making a special installation you are making it bad.

 

 

The correct way to install a mod is add it to MO and enable it. Is ALL that you must make.

If you are making that, exactly that, you are making it in the correct way.

If you are making others things are bad made and nobody can know what are you making or why.

I thought that was wrong.  But it turns out I was right.  I misunderstood.  So it is installed on MO (which is what I did first) and I misunderstood something when I went to look it up and thought I was supposed to install it manually.  But since you corrected me, I now know I was right in the first place.

Posted
1 hour ago, GenioMaestro said:

That is correct.

 

If you have CrashFixes correctly installed and you have UseOSAllocators=1 inside CrashFixPlugin.ini that section of the memory management is correct.

 

Next step is verify ENB. Open enblocal.ini located in the main folder of the game, outside MO, and verify if you have ReduceSystemMemoryUsage=true

 

Download BethIni and configure it correctly to be used with MO. Read and follow the instruction, specifically that:

3. Mod Organizer users should go to the Setup tab and select the profile they wish to use via the ''INI Path'' setting. Your profiles should be autodetected. It is highly recommended to close Mod Organizer if open.
4. Click Default. This will refresh your INI files to the default state.

 

Run Ordinator in your entire mod folder to generate MipMaps in every mod.

 

If the CTD persist, revise your HDT installation, remove some HDT mods and try again.

Ok.  ENB says "ReduceSystemMemoryUsage=True" so that's correct.

 

I think I can handle it from here.  If anything goes wrong I will let you know.  I have downloaded BethIni.  Just going to backup my current ini files in case anything goes wrong.

Posted
15 hours ago, GenioMaestro said:

The three things are impossible.

I don't know what you're doing, how you install the mods or how you manage your installation.

 

Point one:
If the memory block file says that you have the blocks in 256kb and only have 2 lines with 85/8 it is impossible for your game to work with 190 plugings using memory blocks.
Block1 Block2
256MB 256MB
85 8
85 8

 

Point two:
If you are not using memory blocks and your game works it is because you are using CrashFixes with OsAllocators...

I'm going to post the .ini files for crashfixes and memory block.  Both are installed through MO but the memory block log is exactly the same as the one I posted and OsAllocators is on.  If you can please look at the ini files and let me know if maybe I accidentally disabled something somewhere.  I don't think I did because I don't usually touch either of these inis, but you said this should be impossible.

 

Memory Block ini

Spoiler

[NotPlacebo]

;Set to false when done determining size of memory blocks, so you can keep dll but not affect performance when playing normally

EnableLog=true

 

;Only write new data line to logfile when blocks grow. Last written values will be maximum

;If false it also write values to logfile when blocks shrink again

MaxOnly=true

 

;true=..\Skyrim\Data\skse\plugins\MemoryBlocksLog.log

;false=..\Skyrim\MemoryBlocksLog.log

DefaultLogLocation=true

 

;Track elapsed time in ms since start between writes to log

EnableTimer=false

 

 

 

 

Crash fixes v12 beta ini

 

Spoiler

[Patch]

 

; Info: Completely disable Skyrim's memory allocator and use regular C malloc. That means memory blocks will not exist anymore

; and game will not crash at some arbitrary limit. Theoretically it should also be faster (especially loading screens)

; and eliminate most ILS or freezing issues.

; IMPORTANT!!: You NEED custom plugin loader to run this so CrashFixPlugin.dll gets loaded before the game initializes!

; Here is the link to "SKSE Plugin Preloader": http://www.nexusmods.com/skyrim/mods/75795/?

; When this is enabled then Safety Load and SSME/SKSE memory patch are not needed, but they don't cause any trouble if you do have them.

UseOSAllocators=1

 

; Info: When the game crashes unexpectedly then write the relevant information from crash to Data/SKSE/Plugins/CrashLog/crash_time.txt

; If game crashes when running out of memory or has other issues it's possible for the file to not appear or become empty!

; If the game crashes in SKSE dll or a SKSE plugin dll then it's possible for the crash information to not appear.

; This setting's value is treated as flags where:

; 1 - enabled (TL;DR set this for normal enable)

; 2 - don't write timestamp into file name but instead always write to crash_last.txt (overwritten by default)

; 4 - don't ignore already known crashes, usually ones that display a message box are ignored

; 8 - append file if it already exists instead of replacing

; 16 - when the game crashes CTD without a message box about game stopped responding

RecordCrashInfo=0

 

; Write messages that appear in error box also to file in "Data/SKSE/Plugins/CrashFixPluginLog.txt"

LogMessageToFile=1

 

; Info: Warn user on startup if ENB settings are incorrect.

WarnBadENB=1

 

; Info: Crash happens unknown constructor (TESObjectLAND::unk_24 object), movaps instruction is used

; but heap allocate did not allocate this object to have 16 align. Crash happens more frequently

; with high Ugrids because more cells are loaded and greater chance to misalign.

; Solution: Could align only this object or align all objects. Trying with all to see what happens since

; same error could be elsewhere as well and I think I have seen it elsewhere.

; Result: Fixes these type of crashes. Some people report longer loading times and higher memory usage with this enabled!

; Update: Disabled by default since it's incompatible with some ENB settings, higher memory usage and longer loading times.

; It's safe and probably good to enable if you are ok with those downsides. I have not personally experienced

; any incompatibility with ENB, some people say it messes up their game that's why I wrote it here.

AlignHeapAllocate=0

 

; Info: Game crashes when strcmp is passed NULL char*

; Address: D573A8

; Cause: Most frequently happens in TthkbClipGenerator::activate (0xBF2FB3),

; tracked issue to skeleton was deleted in another thread while

; this function is attempting to use it. Have seen in other places

; too.

; Solution: Unknown. This doesn't really fix it for BF2FB3 because it just pops up in foot IK.

; If patched in foot IK it pops up in hand IK, the problem is larger than just this.

; Still enabled because it may fix crashes in other places too this is a very common function.

; There's really no reason not to have it since the game would crash certainly with this off.

; Enable one. NoTry may be slightly faster but catches less crashes.

StrCmp=1

;StrCmpNoTry=1

 

; Info: Game crashes when strlen is used on NULL char*

; Address: 46EDF0

; Cause: NiNode names are compared, one of the NiNode's name is NULL.

; Code:

; NiNode ** v72 = NiNode::children.data - this is iterated until count

; NiNode * v69 = ...

; const char * v56 = v69->name;

; if ( v56 )

; {

; const char * v57 = v72[v49]->name; // <- v57 name is not checked for NULL for some reason ?

; _strnicmp(v56, v57, strlen(v57)); <- strlen on NULL, also result is not even used anywhere!

; }

; Solution: Unknown, temporarily bypass whole strcmp since it's unused.

; Result: Seems to have stopped the crash for me.

StrLen=1

 

; Info: Unknown, reported as loading save game.

; Address: 8B437C - vtable seems to be 0 or wrong pointer is used.

; Solution: Skip since this is the last part of the function and already has a check anyway

UnkUniqueId=1

 

; Info: Unknown, reported as loading save game. Possibly related to rendering. First

; argument is gNiDX9Renderer->unk_650 which is a pointer.

; Address: CEC5EC - null pointer is passed as second argument to function, this function does not expect it

; Solution: Bypass using argument if it's null. Maybe doesn't fix.

Render650=1

 

; Info: Unknown, no info was provided. // char __thiscall TESObjectREFR::unk_4D4EB0(TESObjectREFR *this)

; Address: 4D4EB9 - vtable of base form is 0

; Solution: Bypass and pretend that base form is 0 since the function does this check itself already

UnkObjRef4D4EB0=1

 

; Info: Game is saving location's seen data to save game. The data is NULL.

; Address: 4C6031

; Cause: Game doesn't check for null pointer

; Code:

; TESObjectCELL * v3 = ...

; v5 = BaseExtraList::GetSeenData_40D980(&v3->extraData);

; result = (void *)(*((int (__thiscall **)(_DWORD, _DWORD))*v5 + 1))(v5, v2); // <-- v5 can be null! but not checked

; v5 is IntSeenData, size is known.

; Solution: Only solution seems to be temporarily creating an empty IntSeenData and writing this to stream instead.

NullSeenData=1

 

; Info: BSFixedString::Set is called with NULL argument.

; Address: A51285

; Solution: Ignore call when NULL argument. Not really a solution :P probably better than crashing though.

StringRefSetNull=1

 

; Info: This crash happens because StrLen crash was prevented.

; Address: 46EE1D

; Solution: Skip over it.

; Result: See StrLen.

SkipStrLenCrash=1

 

; Info: This crash happens because unknown reasons during loading. Something to do with behavior graph.

; One of the more common crashes I get.

; Address: C27A8F

; Solution: Don't know, trying to let game think the value is 0 and see what happens.

; Result: Haven't had this crash since.

bhvGraphUpdateLoad=1

 

; Info: Crash happens during loading, no idea. Might be related to rendering.

; Address: D822D8

; Solution: Tried patch something but it probably doesn't work.

Unk11=1

 

; Info: Incompatible skeleton, but could be something else too.

; Address: 46ECF5 - NiNode children access

; Solution: No solution from here, but since it's going to crash anyway we could at least

; warn user about possible incompatible skeleton and let them fix it. Shows messagebox

MissingNode=1

 

; Info: Crash, it's function array and index goes out of bounds which causes it to call invalid address.

; Address: 6F3A31

; Solution: Check index before calling.

; Result: Haven't had this crash since.

IndexError1=1

 

; Info: Crash happens in "MovementPlannerAgentWarp" function, unknown what it does. LookupFormById returns

; NULL and game does not check or expect this to happen.

; Address: 76E358

; Solution: Game has a check for if returned isn't actor it sets 0 as value, we will do same if NULL is returned.

MovementPlannerAgentWarp=1

 

; Info: Crash happens in DDB0A0, seems to be used in some havok animated object's vtables.

; Normally these crashes are fixed by aligning allocated memory with 16 bytes. But

; this one isn't because it can be used on static memory locations which aren't using

; Skyrim's allocator at all, this means that memory isn't guaranteed to be 16 byte aligned.

; Address: DDB0B2

; Solution: Use movups instruction instead of movaps.

UnallocatedMovaps=1

 

; Info: Weird crash with NULL ptr in TESWorldSpace::GetCellByCoordMask_4375D0, don't know why it happens.

; Address: 437604

; Solution: return 0 if this crash would happen.

; Result: Haven't had this crash since, but it's rare anyway so it could be coincidence.

CellNullCrash=1

 

; Info: Crash when trying to do: v14 = MagicItem::unk_406C70(a3)->properties.projectile;

; This 406C70 function is something like "GetMainMagicEffect". Sometimes though it may return

; NULL and in 90% of places the game expects this and checks for NULL result, this patch will

; fix the remaining locations.

; Address: 7E39EC, 657677, 6577D5, 65FEEC, 8127CF

; Solution: Check for NULL and skip (depends on location) if it is.

GetMainMagicEffect=1

 

; Info: Crash when game searches node "NPC COM [COM ]" on actor but the node was not found. This is unexpected

; for game because it uses the result without checking for NULL. This whole thing has something to do

; with mounting. The function that does this whole thing is present in "StopMountCameraHandler" and

; "MountInteraction" vtable. Also it seems that this has something to do with updating position.

; More info: Was reported that this could happen if non-humanoid tries to mount a horse. This is a rather specific

; error with a mod. Instead we will show error message to user when this happens so they can

; fix or uninstall that mod.

; Address: 6E7F85

; Solution: Check for NULL and if it is NULL then use base node of actor instead of this. It's fine because

; we only take X and Y position from it.

; Solution2: Show error message and crash after.

MountNodeCrash=0

MountNodeWarn=1

 

; Info: Crash when game is trying to setup foot IK but there's a problem. Real cause is unknown but for me.

; So we will display a message box when this crash happens. Seems related to the

; StrCmp crash in BF2FB3, maybe. Try reducing the amount of installed animations.

; Address: BFECC1

; Solution: No solution from here, display warning with helpful tips.

IKCrashWarn=1

 

; Info: Crash happens when rendering and saving. I think this is when it renders the save game image.

; if ( v8 ) // <- not null

; {

; if ( v8 )

; v9 = *(v8 + 8); // <- *(v8 + ? is null

; else

; v9 = 0;

; v10 = *(v9 + 140) * *(a2 + 4) // <- crash because null

; + *(v9 + 136) * *a2

; + *(v9 + 144) * *(a2 + 8);

; v21 = v10 - *(*(v8 + ? + 148) * a3;

; }

; Address: CB051A

; Solution: We will skip this if block when *(v8 + ? is null, as if v8 was null.

RenderSave=1

 

; Info: Crash was reported as casting spell. Only happens sometimes. Happens in movement controller.

; Seems like vtable is NULL.

; Address: 76636B

; Solution: This happens in a for loop and it happens in if clause. We can skip if this crash would happen.

MoveControllerCast=1

 

; Info: Crash when saving game and trying to render (possibly save game image again?). It's trying to get

; vtable of NULL pointer which will crash.

; if ((*a2 + 76)(a2, a1)) // a2 is null

; {

; *(0x1BA9344) = a1;

; *(0x1BA9340) = a2;

; }

; else

; {

; *(0x1BA9340) = 0;

; *(0x1BA9344) = 0;

; }

; Address: CAF9F7

; Solution: Skip function call and set return value to false so we don't have to use the NULL value.

SaveRenderCrash=1

 

; Info: Crash when game tries to get loaded node but it is set to NULL. Only ever seen this on two people.

; It is most likely actually related to corrupted mesh being unable to be loaded and game does not expect it.

; NiNode * node = a->GetLoadedStateNiNode();

; v2 = node->(*(vtable+0x14))(); // <- node is NULL

; if(v2) { *((int*)(v2 + 212)) = 0; } // <- we can skip this part since it has a check anyway

; Address: 4C119E

; Solution: Real solution would be to find the broken mesh and remove it. So lets notify user instead of ignoring this part.

; Enable one of the following, ignore problem and try to continue or show message box with object reference form ID and form Type.

NullLoadedNodeIgnore=0

NullLoadedNodeNotify=1

 

; Info: Crash in GarbageCollector::Add when actor argument's base form is NULL. Game does not check this, when in

; some other places it does check for this possibility.

; Address: 690A69

NullActorBaseForm=1

 

; Info: Crash when modifying actor value but the pointer is bad, possibly due to actor being invalid. This happens often

; when script engine is lagged and spells want to modify actor values a lot.

; Address: 6E07C6

AVSetCrash=1

 

; Info: If your scripts use more than 65535 different strings then the save game will be corrupt and not possible to load.

; This fixes it by changing the save file format slightly if string count is higher than 65520. That means if you

; have this option enabled and your save game would have become corrupt it changes format instead and vanilla game

; or save game tools will not be able to open it! Opposite is true as well, if the count goes below 65520 after

; and you save again then the format reverts to vanilla.

; TLDR: Fix for https://forums.nexusmods.com/index.php?/topic/3924850-corrupt-saves-strcount-0xffff-ctd-on-load/

; Address: Around 30 different parts of code had to be patched.

StringCount32=1

 

; Info: Warn if SKSE memory patch is not active. This checks if default heap size is 256 or less and warns if you try to

; click New, Continue or Load in main menu. Still lets you play the game, just shows a warning.

WarnSKSEMemoryPatch=1

 

; Info: If AlignHeapAllocate is disabled by user then fix that one movaps crash manually. There's no downside to having this enabled.

; Address: 4BD832

FixMovApsManuallyIfAlignedAllocateIsDisabled=1

 

; Info: Overwrite array allocator directly when UseOSAllocators is set to 1. Don't understand the code enough yet to

; say if it's safe or not. At this point it's just here for testing.

OverwriteArrayAllocator=0

 

; Info: Player's NiNode (not necessarily same as loaded node) is NULL while drawing world.

; Address: 69B84B

NullPlayerNode=1

 

; Info: Function TESObjectREFR::CanBeMoved_4D9CF0 is called on an object reference that has NULL base form. This is not expected

; and will crash. We will instead return false from that function if that's the case. The problem is most likely larger than

; just this, if you prefer to crash instead disable it.

; Address: 4D9D09

NullBaseFormMove=1

 

; Info: Game tries to iterate child nodes of a NiAVObject but it's possible that the target is not a NiNode and can't have child nodes.

; This ends up in a NULL pointer crash.

; v26 = v22->vtable->sub_5EADD0(v22); // Returns "this" if v22 is a NiNode and returns "NULL" if not.

; for ( i = 0; i < v26->children.emptyRunStart; ++i ) // crash because v26 is NULL.

; Address: 46CA06

NullRefNode=1

 

; Info: Something is done with outfit of NPC, but one or more entry is NULL and game crashes.

; Address: 561FF7

NullOutfitEntry=1

 

; Info: Actor is being deleted and base form is NULL.

; Address: 6BAC9A

ActorDeleteNullBase=1

 

; Info: Does two things:

; 1. Tracks the last X files opened by game.

; 2. If the game crashes while reading binary data stream (e.g. NIF file but could be others too) then show message box listing

; those files.

; This can be helpful to track down a corrupted NIF file.

DebugStream=1

 

; Info: When the game fails to create texture in memory should we display a warning and exit game? Recommended yes because you will

; see purple textures couple of seconds and then the game will crash anyway since it's not expected for this to be a NULL value.

WarnTextureFailure=1

 

; Info: Something is done with face gen animation on BSFaceGenNiNode but the parent node is NULL which is unexpected.

; Address: 5A8808

NullParentNode=1

 

; Info: For debugging purposes, on game startup run allocator benchmark and write results to "AllocatorBenchmark.txt" in Skyrim root

; directory. This compares vanilla, aligned vanilla, malloc, aligned_malloc and custom memory block implementation. When you reach

; main menu the game will start the test, wait for a message box to say the test is completed, then close game and disable this option.

RunAllocatorBenchmark=0

; Info: How many objects to allocate and free for each size (8, 12 and 16).

CountAllocatorBenchmark=1000000

; Info: How many times to run each test.

TimesAllocatorBenchmark=2

; Info: How many threads to run concurrently. Most accurate is only running one thread, although you can also try 2 to see the performance

; of thread-safe code.

ThreadsAllocatorBenchmark=1

 

; Info: Enable custom block allocator for small sizes. May help with memory fragmentation problem. This option does nothing if UseOSAllocators

; is not enabled.

CustomMemoryBlock=0

 

; Info: Set total megabytes allocated for the custom block allocators. This amount is sensibly divided between each block.

; Has no effect if CustomMemoryBlock is not enabled. The more you allocate here the less memory you have for other stuff!

CustomMemoryBlockTotalSizeMb=64

 

; Info: Show usage of each memory block in per cent when you open console. Has no effect if CustomMemoryBlock is not enabled.

; This can help you tweak the CustomMemoryBlockTotalSizeMb value.

MemoryInfoConsole=1

 

; Info: Fixes two crashes specific to Enderal mod. Seems like something to do with havok.

; Address: EBC0A6 and ECD92E

EnderalSpecific=1

 

; Info: Active effect list of actors is not thread safe but accessed and modified from multiple threads, this will add mutex to each actor's

; effect list.

FixUnsafeEffectList=1

 

; Info: Game crashes when actor's combat style form is NULL for some reason. Warn the user and try to display the actor's reference and base ID.

; Address: 8368B1

WarnNullCombatStyle=1

 

; Info: Set OS update frequency to 1 millisecond (regular is around 16) and replace GetTickCount with timeGetTime. This is for debug only! Don't use.

; May reduce performance.

HighFrequencyOSTimer=0

 

; Info: Make game's update timer more accurate. This is for debug only! Don't use.

HighFrequencyGameTimer=0

 

 

Posted
54 minutes ago, Aki K said:

but the memory block log is exactly the same as the one I posted and OsAllocators is on.

This is how it has to be.

The Memory Block Log is designed to record the level of use of the memory blocks.


If you activate OsAllocators in CrashFixes, the memory blocks are deactivated and, logically, the Memory Block Log can NOT show the level of use of the memory blocks because there are no memory blocks, they do not exist, OsAllocator has deactivated them. Nothing can appear in the Memory Block Log.

Posted
1 hour ago, GenioMaestro said:

This is how it has to be.

The Memory Block Log is designed to record the level of use of the memory blocks.


If you activate OsAllocators in CrashFixes, the memory blocks are deactivated and, logically, the Memory Block Log can NOT show the level of use of the memory blocks because there are no memory blocks, they do not exist, OsAllocator has deactivated them. Nothing can appear in the Memory Block Log.

Oh.  So maybe nothing is happening and the logs just aren't updating then because it's activated?

 

Anyway, my CTD issue appears to be solved or at least improved so far.  I still have to use BethIni but I haven't had the chance to sit down and do it.  It's on my agenda for today.

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

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