Jump to content

New SR:LE Install, Game Freeze

Recommended Posts

I just finished installing SR:LE. I've created three different test characters and I'm having a game freeze at the same general spot on all three. I've selected "property owner" for two in Another Life and the third I selected surprise me. It still put me inside a home. The locations are: Riften, Solitude, and Whiterun.


My game freezes during the load screen as I try to exit the home will a pop-up window from crash-fixes:




I've made the change as suggested in #1 and 2. #4 was already enabled.  and I'm still getting the freeze. Here is a copy of my Memory Block Log:



logging of blocks enabled

logging max values only
Timer disabled
Block1 Block2
256MB 256MB
85 8
85 8

Any help/advise appreciated.


Link to comment

hmm. what does your crash fixes ini file look like? can you post it in spoiler tags? as well do you have the latest version of crash fixes downloaded? I had several mysterious crashes until I checked version and updated to latest.  Could also check your enb settings in enb local.ini.  by default, ExpandSystemMemoryX64=true, but if you read the page description on nexus it is very clear to set it to ExpandSystemMemoryX64=false.  I was getting a "failed to allocate memory crash once per hour or so until i changed this.




also, did you make sure to install skse plugin preloader as per guide instructions?

Edited by Hodegar
Link to comment




; 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": https://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.
; 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.
; 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.
; 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.
; 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
; 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.
; 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
; 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.
; 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.
; Info: This crash happens because StrLen crash was prevented.
; Address: 46EE1D
; Solution: Skip over it.
; Result: See StrLen.
; 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.
; Info: Crash happens during loading, no idea. Might be related to rendering.
; Address: D822D8
; Solution: Tried patch something but it probably doesn't work.
; 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
; 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.
; 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.
; 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.
; 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.
; 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.
; 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.
; 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.
; 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 + 8) is null
;  else
;    v9 = 0;
;  v10 = *(v9 + 140) * *(a2 + 4) // <- crash because null
;    + *(v9 + 136) * *a2
;    + *(v9 + 144) * *(a2 + 8);
;  v21 = v10 - *(*(v8 + 8) + 148) * a3;
; }
; Address: CB051A
; Solution: We will skip this if block when *(v8 + 8) is null, as if v8 was null.
; 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.
; 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.
; 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.
; 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
; 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
; 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.
; Address: Around 30 different parts of code had to be patched.
; 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.
; Info: If AlignHeapAllocate is disabled by user then fix that one movaps crash manually. There's no downside to having this enabled.
; Address: 4BD832
; 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.
; Info: Player's NiNode (not necessarily same as loaded node) is NULL while drawing world.
; Address: 69B84B
; 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
; 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
; Info: Something is done with outfit of NPC, but one or more entry is NULL and game crashes.
; Address: 561FF7
; Info: Actor is being deleted and base form is NULL.
; Address: 6BAC9A
; 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.
; 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.
; Info: Something is done with face gen animation on BSFaceGenNiNode but the parent node is NULL which is unexpected.
; Address: 5A8808
; 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.
; Info: How many objects to allocate and free for each size (8, 12 and 16).
; Info: How many times to run each test.
; 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.
; Info: Enable custom block allocator for small sizes. May help with memory fragmentation problem. This option does nothing if UseOSAllocators
;       is not enabled.
; 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!
; 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.



I'll be away for the rest of the night. I'll check for any replies tomorrow.
Thanks for the help.
Link to comment


It is advised to adjust the following in your SKSE/Plugins/CrashFixPlugin.ini file:

Optional you can set these to avoid memory fragmentation:
CustomMemoryBlockTotalSizeMb=112 (this value is system dependant; set it to 64 and increase little by little until ingame console shows the memory blocks between 80-90% and none to 100%)


setting it to 64 may not be enough for you. Check in game console for the right number

Edited by paul666root
Link to comment

@badfrog88 after you set the custom memory block to 64 when you log in game and open the console you get a message about the amount of memory used. If that amount exceeds 85%-90% I suggest you to raise the custom memory block value to about 100 and check again if then the value is under 80/85%. Personally with 64 as setting I get 72-80% when I open the console but really depends on how powerful your system is


Sent from my SM-G925F using Tapatalk

Link to comment
  • 2 weeks later...

I am having the exact same issue as badfrog. I followed the tutorial the the "t". I will try your suggestions and get back to you both.


One thing I noticed is that I do not see ENBiist load when Skyrim loads. I installed via EMB Organizer. I did however, see enboost start up after I did STEP. Is ENBoost not working? 

Edited by mpjbay
Link to comment
  • Recently Browsing   0 members

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

Important Information

By using this site, you agree to our Guidelines, Privacy Policy, and Terms of Use.