Aki K Posted November 29, 2025 Posted November 29, 2025 (edited) I'm remodding skyrim LE from scratch due to my old computer GPU dying. I've encountered an issue where any hair with physics will crash the game as soon as I exit racemenu (but seems to work while in racemenu). I'm only installing basic mods atm and this I suspect will be last hurtle. Previously this issue was solved with SKSE.ini having uexteriorcellbuffer= 0. However, this crash is both different from that one (happening earlier) and my SKSE.ini doesn't seem to have an option for that at all for some reason. If I can get this to work, I think i'll be golden. Other details: Spoiler ENBoost installed, not using any other ENB. Frame limit set to 60, which has been my default in the past. SKSE.ini is: (Should it have more)? [General] ClearInvalidRegistrations=1 EnableDiagnostics=1 [Memory] DefaultHeapInitialAllocMB=768 ScrapHeapSizeMB=256 [Debug] WriteMiniDumps=1 Load Order: Spoiler 0 0 Skyrim.esm 1 1 Update.esm 2 2 Dawnguard.esm 3 3 HearthFires.esm 4 4 Dragonborn.esm 5 5 Unofficial Skyrim Legendary Edition Patch.esp 6 6 Schlongs of Skyrim - Core.esm 7 7 RaceCompatibility.esm 8 8 Shark Race.esp 9 9 SexLab.esm 10 a hdtHighHeel.esm 11 b Heels Sound.esm 12 c SkyUI.esp 13 d UIExtensions.esp 14 e SpellMerge1.esp UBWRe.esp 15 f Thunderchild - Epic Shout Package.esp 16 10 Remodeled Armor - Vanilla Replacer.esp 17 11 Bloodskal Magic Overhaul.esp 18 12 Thoom.esp 19 13 TRX - Statue TrixieWitchFlight.esp 20 14 Triumvirate - Mage Archetypes.esp 21 15 The Manipulator.esp 22 16 DarkEnvoy.esp 23 17 Optional.DibellaStatuesFixes.esp 24 18 DaxafaganSpells.esp 25 19 StoneLadyFix.esp 26 1a NewStatueOfShalidorMagicLights.esp 27 1b Apocalypse - The Spell Package.esp 28 1c Sacrosanct - Vampires of Skyrim.esp 29 1d Schlongs of Skyrim.esp 30 1e SOS - VectorPlexus Regular Addon.esp 31 1f HIMBO.esp 32 20 RaceMenuMorphsHIMBO.esp 33 21 RaceMenu.esp 34 22 RaceMenuPlugin.esp 35 23 Brows.esp 36 24 SOSRaceMenu.esp 37 25 XPMSE.esp 38 26 RaceMenuMorphsCBBE.esp 39 27 FNIS.esp 40 28 FNISspells.esp 41 29 AddItemMenuLE.esp 42 2a EyesFix.esp 43 2b SuccubusRaceLite.esp 44 2c halfdragonrace.esp 45 2d SCS_RacePatch_HalfDragon.esp 46 2e RaceCompatibilityUSKPOverride.esp 47 2f FNIS_PCEA2.esp 48 30 P1FlyingRing.esp 49 31 Animated Wings Ultimate.esp 50 32 SCS_RacePatch_Succubus.esp 51 33 MikanEyes All in one.esp 52 34 Remodeled Armor - Vanilla Replacer - Dawnguard.esp 53 35 Remodeled Armor - Vanilla Replacer - Dragonborn.esp SummonVampireCattle.esp 54 36 LindsMerEyes.esp 55 37 Smooth Argonians.esp GateOfBabylon.esp KillCurse.esp MarblePhantasm.esp Tempest.esp TweaksMagicTouchCrafting.esp 56 38 REP_Tattoos.esp 57 39 VioLens.esp 58 3a New Vaermina Statue.esp 59 3b StoneLoverFix.esp 60 3c Colorful Bound Weapons.esp 61 3d StoneThiefFix.esp 62 3e TRX - SanguineF.esp 63 3f New Falmer Statue fixes.esp 64 40 [Dint999] KSH's HDT.esp shadowman_Bury_Face_Breasts_Shout.esp shadowman_kissanywoman.esp shadowman_plant_face_shout.esp slap_butt_shout.esp shadowman_grab_ass_shout.esp shadowman_grindanywomanshout.esp 65 41 ShadowManShouts.esp 66 42 ShadowSpellPackage.esp 67 43 FNISSexyMove.esp 68 44 MystVisionFilters.esp 69 45 Za Warudo.esp 70 46 Ponzu Merged.esp PonzuEffectRing.esp PonzuEffectRingDLC1.esp PonzuEffectRingDLC3.esp 71 47 Alternate Start - Live Another Life.esp 72 48 Alternate Start -- New Beginnings.esp Crashfix v12 .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=0 ; 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 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 + 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. 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=0 ; 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 Everything is installed in MO2 except for SKSE and the Legendary edition unofficial patch. Edited November 29, 2025 by Aki K
Aki K Posted November 29, 2025 Author Posted November 29, 2025 (edited) Possibly solved that problem only to encounter another. (Still not 100% I solved the other problem) But now I'm getting CTD during loadgame whenever I have a large number of animations. This makes no sense since I am using FNIS XXL. The game should be able to handle the animations. EDIT: So I'm an idiot. Forgot to install SRTCrashFix. Back to testing. Edited November 29, 2025 by Aki K
Mez558 Posted November 29, 2025 Posted November 29, 2025 5 hours ago, Aki K said: ossibly solved that problem How? I still have this issue on some hair styles, usually the longer, loose ones. It doesn't bother me much since I always use shorter or tied back/up hair styles anyway. The wig variants all work fine, it is just exiting RM as you said that the crash happens
Aki K Posted November 30, 2025 Author Posted November 30, 2025 18 hours ago, Mez558 said: How? I still have this issue on some hair styles, usually the longer, loose ones. It doesn't bother me much since I always use shorter or tied back/up hair styles anyway. The wig variants all work fine, it is just exiting RM as you said that the crash happens I installed Crashfixes v12 incorrectly. So I reinstalled and carefully followed the instructions. (https://www.nexusmods.com/skyrim/mods/72725?tab=files) The previous time I checked SKSE.ini and made sure uexteriorcellbuffer= 0. When it is set to a value higher then zero, weird shit happens. 1
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now