Problem Enderal - Fehlersammlung

Scharesoft

Administrator
Teammitglied
Wenn euch in Enderal Fehler aufgefallen sind, könnt ihr diese hier in diesem Thread sammeln :) Alternativ habt ihr die Möglichkeit, gefundene Bugs im Bugtracker von Enderal einzutragen.

Den Link zu diesem Thema werde ich dem Team von Enderal mitteilen.
 
Zuletzt bearbeitet:
Keine Ahnung, ob das nur bei mir der Fall ist, aber gleich zu Anfang sehe ich diesen Text, Doppelt und Dreifach.



Im Perk-Verzeichnisbaum, befinden sich überwiegend nur Hieroglyphen.

 
Zuletzt bearbeitet:
Das mit dem Doppel und Dreifachtext habe ich auch. Es gibt viele nicht erntbare Lavendelbüsche, die in der Luft hängen ^^.
Öh, wieso hast Du einen Perk-Verzeichnisbaum und wo finde ich den? Ich kann nur in die Zwischenwelt um Punkte zu vergeben.

LG
 
  • Like
Reaktionen: Kleiner Prinz
Im Perk-Verzeichnisbaum, befinden sich überwiegend nur Hieroglyphen.


Der Perk-Skilltree ist für Enderal nicht mehr relevant, für Perks hat man ja die Zwischenwelt und Fertigkeiten, Lernpunkte etc. lassen sich über ein neues Menü über "H"anzeigen. Ich denke aus Technischen Gründen kann der Skilltree nicht entfernt werden, am besten einfach ignorieren. ;)

Öh, wieso hast Du einen Perk-Verzeichnisbaum und wo finde ich den?

Über die Schnelltaste, siehe Steuerungsmenü, kann der noch aufgerufen werden.

Gruß :)
 
Ein altes Problem von Skyrim hat sich anscheinend nach Enderal hinübergerettet. Wenn man eine bestimmte Dialogoption anklickt, steht eine der anderen Möglichkeiten statt dessen zur Verfügung. Meistens ändert selbst eine Wiederholung nichts daran. Für Skyrim wurde vor längerer Zeit eine Lösung geschaffen.
 
Ich habe viel öfter ctd's. Aber ich gebe nicht auf - ich spiele tapfer weiter. :D

Bugmeldungen:
1.) Der Spielmann Timm Tatenvoll aus der Unterstadt hat zwar Dialoge, die man anklicken kann, aber es fehlen scheinbar die Voicefiles, denn er bewegt weder den Mund noch hört man seine Stimme. Wenn er anfängt mit seinem Instrument zu spielen, höre ich keine Melodie.

2.) In der Quest "Eventualitäten" sind die Untertitel des Magister Ragon nicht mit seinem Voicefile identisch.
 
Ich spiele Enderal am Gamepad und habe mich nach ein paar Stunden gefragt wie man da das Heldenmenü (H) öffnet.Hab bisher nämlich nichts gefunden.Gibts da überhaupt eine am Gamepad dafür ? :)
 
Ich habe etwa alle halbe Stunde nen ctd :(
Ich habe viel öfter ctd's. Aber ich gebe nicht auf - ich spiele tapfer weiter.

Ich habe keinerlei CTDs mehr !!! :) ...denn auch für Enderal gilt hier das Selbe, wie für Skyrim:

http://www.elderscrollsportal.de/th...-plugin-preloader-by-meh321-and-sheson.52141/

Install-Anleitung des Crash-Fix:

Hallo, :)

Hier eine kleine Anleitung für ALLE die Leute, die danach gesucht hatten, oder mir eine PN deshalb schickten.
Ich hoffe, ihr kommt damit klar, und ich habe auch nichts vergessen zu erwähnen.
Falls doch, so postet es hier einfach, und ich versuche es dann zu ergänzen.

Wichtig: SKSE muss installiert sein!

1.)
Crash fixes runterladen und entpacken.
http://www.nexusmods.com/skyrim/mods/72725/?
2.)
Die drei Dateien ins Plugins Verzeichnis von SKSE kopieren. (Data/SKSE/Plugins)
Diese sind:
CrashFixPlugin.dll
CrashFixPlugin.ini
CrashFixPlugin_preload.txt
Wichtig: Auch die TXT-Datei muss dort hinein kopiert werden.
3.)
Die CrashFixPlugin.ini mit einem Editor öffnen, und "UseOSAllocators=0" ändern in "UseOSAllocators=1"
Die CrashFixPlugin.ini mit einem Editor öffnen, und "AlignHeapAllocate=0" ändern in "AlignHeapAllocate=1"
Einzelheiten:
This plugin is meant to fix some common crashes AFTER you have followed STEP guides and sensible modding rules! It does not fix problems that come from modding irresponsibly or conflicts between mods.

How to use the memory allocator patch?
1. Open CrashFixPlugin.ini and find "UseOSAllocators=0"
2. Change it to "UseOSAllocators=1"
3. Download and install SKSE Plugin Preloader
4. Start game, if you get an error saying that memory patch could not be applied read the message for help, otherwise you're good to go.
(5.) Causes game to crash and you use ENB? Set ExpandSystemMemoryX64=false in enblocal.ini
(6.) Causes game to crash more frequently (especially with UNP RaceMenu sliders)? Try AlignHeapAllocate=1 in CrashFixPlugin.ini

Tips for additional stability:
(These are things I've observed and Not 100% fact!)

If you don't have some lines listed below in your INI it means they are set to default value.

Data/SKSE/SKSE.ini (not needed if UseOSAllocators=1 in CrashFixPlugin.ini):

  • Set DefaultHeapInitialAllocMB:Memory to 768. If you are using a lot of mods or higher uGrid than 5 then set 1024. Helps with CTD during save load, especially if you can load the save after qasmoke. Max value is 1280. If you are using ENB you may get CTD on startup with higher value than 768 and ExpandSystemMemoryX64 true in enblocal.ini!
  • Set ScrapHeapSizeMB:Memory to 256. Game can't use more than 256 of this and setting higher serves no purpose.

Skyrim.ini:

  • uExterior Cell Buffer:General - setting this too high causes crashes more, especially when game wants to unload many cells at once. If you set 0 or just remove it from your INI then game decides this and that's the best way.
  • bPreemptivelyUnloadCells:General - setting this 1 will mean game purges cell buffers and unload cell whenever it is possible. Default is 0 which means keep cell in memory until we need the space for other cells. I find 0 to be better, there's no reason to unload cell immediately, the buffer was implemented for a reason.
  • fPostLoadUpdateTimeMSPapyrus - setting higher will cause longer loading. Mine is 500, seems to work well for me. You can try 750 or even 1000+ if you have a lot of script-heavy mods.
  • fUpdateBudgetMSPapyrus - remove (this sets to default 1.2). If you have a lot of script heavy mods and a good PC you can set higher for example 2.0, however this can reduce your FPS when a lot of things are happening.
  • fExtraTaskletBudgetMSPapyrus - remove (this sets to default 1.2). See above.
  • bEnableLoggingPapyrus - set 0. There's no reason to log papyrus unless you are developing a mod. Writing to file constantly is not good for performance. Papyrus logs have nothing to do with finding causes for crashes, although you can use this to find misbehaving mod scripts which can be helpful, I'd recommend to disable it for normal gameplay though.
  • bEnableTracePapyrus - set 0. See above.
  • Any other papyrus setting - delete. Changing the papyrus from default will just cause instability or lagged scripts.
  • iPresentIntervalDisplay - VSync enabled or disabled. You shouldn't need to change this as default value is 1 and that's good.

Safety Load (not needed if UseOSAllocators=1 in CrashFixPlugin.ini):
Install Safety Load if you have a infinite loading screen or freeze at any point. It fixes a bug in memory allocation that causes deadlock. Yes you still need this if you have SKSE memory patch, no they don't do the same thing. SKSE memory patch hides the problem of deadlock for longer because it allocates a larger memory block. If you don't have freeze or infinite loading screen at all then you don't need this!


Stable uGridsToLoad:
Don't use this. It causes memory corruption and does nothing unless you are changing your uGridsToLoad setting in INI often (I don't know why you would).

ENB:
I'm not an expert in ENB, but these two I recommend in enblocal.ini:
ExpandSystemMemoryX64=false
ReduceSystemMemoryUsage=true

Bashed Patch:
You should make this. It helps resolve a lot of conflicts between mods, especially related to leveled lists which can be a big problem. If there are no conflicts this doesn't really do any harm but even a small mod list usually has some.

LOOT:
LOOT can be a good tool to help resolve issues with ordering, but it is not perfect, sometimes it places mods incorrectly, use your best judgement. LOOT can also warn you about other potential problems with mods.

TES5Edit cleaning:
Do this! LOOT can tell you which mods need cleaning.

Playthrough:
Don't install or uninstall mods (with ESP files) in the middle of playthrough. Even changing the order can be very bad, especially if you use bashed patch or anything with SkyProc (requiem, perkus maximus). This of course applies to ESP files! Graphics mods and pure SKSE plugins are fine most of the time.

Common issues:

UseOSAllocators=1 and crashing when touching sliders in character creation or otherwise.
Set AlignHeapAllocate=1 in CrashFixPlugin.ini, downside is increased load time and increased memory usage.

UseOSAllocators=1 and crashing on game startup or loading save or shortly after.
Set ExpandSystemMemoryX64=false in enblocal.ini

Game says message box "running out of memory" and crashes.
Set ReduceSystemMemoryUsage=true in enblocal.ini

Ground textures flickering weird.
Set ExpandSystemMemoryX64=false in enblocal.ini
4.)
Lade den "SKSE Plugin Preloader" runter.
http://www.nexusmods.com/skyrim/mods/75795/?
Kopiere den Inhalt "d3dx9_42.dll" ins Hauptverzeichnis von Skyrim. (Also da, wo auch Tesv.exe ist)

Desweiteren:
Änderungen in der skyrim.ini

[General]
uExterior Cell Buffer=0 (Setze dies auf "0" oder lösche den Eintrag, ...dann starte das Spiel, welches dann den besten Wert selber ermittelt)
bPreemptivelyUnloadCells=1

[Papyrus]
fPostLoadUpdateTimeMS=750 (oder auch 1000 oder höher) ...musst du dann mal selber testen, was besser läuft.
fUpdateBudgetMS <<< den Eintrag löschen
fExtraTaskletBudgetMS <<< den Eintrag löschen
bEnableLogging=0
bEnableTrace=0
Alle anderen Einträge unter [Papyrus] ebenfalls löschen, die hier nicht genannt wurden.
Aber zuvor unbedingt eine Sicherungs-Kopie von der skyrim.ini machen.

[Display]
iPresentInterval=0 oder 1 <<< Das ist für "VSync" welches du enabled oder disabled kannst, ... auch hier musst du schauen, was besser läuft.

Oki, ... das war es, was zu tun ist. :)

Gruß
Prinz

[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: 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.
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 + 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

[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: 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.
AlignHeapAllocate=1

; 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 + 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

Danach müsste auch ENDERAL , CTD-frei laufen !!! :)

Quellen zum Nachlesen bezüglich des Crash-Fix, den die Enderal-Entwickler bereits ihrem Spiel beigelegt/installiert haben, aber dann noch aktiviert werden muss, falls es zu CTDs kommt:
http://www.nexusmods.com/skyrim/mods/72725/?
http://www.nexusmods.com/skyrim/mods/75795/?

WICHTIG:
Bitte Änderungen nur dann vornehmen, wenn auch tatsächlich CTD-Probleme vorliegen.

Ergänzung:
Der Hinweis von PRieST ist hierzu Lesenswert und von Interesse:
Die CrashFixes funktionieren vollkommen losgelöst vom SKSE PreLoader.
Aber nur so lange man in der CrashFixes.ini UseOSAllocators=0 belässt.
Ändert man den Wert auf 1 funktioniert alles ein wenig anders, da dieser Wert/Fix die komplette Speicherverwaltung von Skyrim (ENDERAL) verändert und daher quasi noch vor dem SKSE geladen werden muss.
Hier kommt dann der PreLoader ins Spiel, welcher dafür sorgt, dass CrashFixes vor allen anderen Mods (inkl. SKSE selbst) geladen wird und somit greift.
 
Zuletzt bearbeitet:
Warum stellt das keiner bei SureAI im Forum ein ??? SureAI schreibt selbst auf der eigenen Seite das sie an den Crashes arbeiten. Ich teste da auch grade mit rum
nur leider überschreibt der Launcher immer wieder die SCHREIBGESCHÜZTE ini
 
Naja und ich kann Enderal gar nicht mehr starten. Schreibt immer "Aplication Error". Super. Hab nur die automatischen Updates gemacht.
 
Warum stellt das keiner bei SureAI im Forum ein ???

Hat sich vielleicht noch nicht rumgesprochen! ;)
Wenn man dort ins Forum schaut, dürfte ENDERAL gar nicht funktionieren, so viele Meldungen zu Problemen gibt es dort. :D
Wer den Crash-Fix richtig installiert, und sich genau an die Anleitung hält, ist jedenfalls bei Skyrim & Enderal, zu 99% frei von CTDs.
Meine Anleitung ist eine grobe Übersicht dessen, was zu tun ist. (habe sie jetzt wegen der besseren Übersicht überarbeitet)
Alle Feinheiten entnehmt der Original-Anleitung von meh321 & sheson.
 
  • Like
Reaktionen: FROSTY10101
Warum stellt das keiner bei SureAI im Forum ein ??? SureAI schreibt selbst auf der eigenen Seite das sie an den Crashes arbeiten. Ich teste da auch grade mit rum
nur leider überschreibt der Launcher immer wieder die SCHREIBGESCHÜZTE ini

Welche schreibgeschützte ini ?

Ich habe das nun mal im Forum von SureAI gepostet.
Mal schauen, ob es bereits bekannt ist.

Jedenfalls funktioniert der Crash Fix bei mir auch sehr gut.
Bis jetzt hatte ich keinen CTD mehr.
 
  • Like
Reaktionen: Kleiner Prinz
... nur leider überschreibt der Launcher immer wieder die SCHREIBGESCHÜZTE ini

Auch hier noch einmal:

Welche ini-Einstellungen?

Halte dich doch zunächst an die Original-Anleitung des Erstellers dieses Fix.
Demnach sollte man Änderungen in den *.ini-Dateien erst dann vornehmen, wenn es mit den Voreinstellungen trotzdem zu CTDs kommt.

Installiere also zunächst nur einmal diese drei Dateien ins SKSE/Plugin Verzeichnis, und schau mal, ob dies bereits Wirkung zeigt.

CrashFixPlugin.dll
CrashFixPlugin.ini
CrashFixPlugin_preload.txt

Und bezüglich deiner Frage aus dem anderen Thread:

Wann setzt der Launcher wieder was genau zurück?
Passiert dies beim Wechsel von Enderal zu Skyrim, bzw. und wieder zurück zu Enderal, per Launcher?
Falls JA, schau dir mal dies an, vielleicht behebt das dein Problem:

http://www.elderscrollsportal.de/themen/enderal-modveroeffentlichungen.52227/#post-1047695

Ich habe das nun mal im Forum von SureAI gepostet.
Mal schauen, ob es bereits bekannt ist.

Prima! ...da brauche ich das nicht mehr tun! :D;)
 
Kann mir jemand helfen, oder hat noch jemand das gleiche Problem? Immer wenn ich die Karte öffne, lande ich sofort auf dem Desktop. :(
Der neue Patch hat daran leider nichts geändert.

(hab das mit der Crash Fix Ini wie oben beschrieben wurde ebenfalls versucht, was aber auch nicht geholfen hat)
 
Huhu :)

Ich habe so eben die "Spuren des Nordens (Setgegenstand)" gefunden. Eben jene scheinen aber einem kleinen Bug zu unterliegen, wird ihr Modell doch an den Füßen meines "Halb-Qyraners" nicht angezeigt.

Edit: Das gleiche Problem liegt bei den "Klauen des Aschekriegers" vor.
Edit2: Okay, also mittlerweile habe ich noch zwei weitere Items in den T3-Sets gefunden, die nicht funktionieren. Der Helm aus dem Aschekriegerset ist genauso buggy. Ebenso ein Teil des Wandermagier-Sets. :(

Liebe Grüße
Jusi
 
Zuletzt bearbeitet:
Kann mir jemand helfen, oder hat noch jemand das gleiche Problem? Immer wenn ich die Karte öffne, lande ich sofort auf dem Desktop. :(
Der neue Patch hat daran leider nichts geändert.

Hast du mal ein älteres Savegame versucht, ob das Problem dort auch bereits besteht?
Könnte auch an einem jetzt fehlerhaften Savegame liegen.
 
Ich hatte vorher schon nur sehr selten CTD's. Meine FPS lagen immer zwischen 30 und 60 aber flüssig. Seitdem ich im Enderal-Launcher den Grafikspeicher der zur Verfügung gestellt wird, auf 10 GB und die CPU auf 4 eingestellt habe, habe ich fast immer um die 60 FPS und das alles absolut stabil. Lediglich beim Ladebildschirm geht es mal auf 30 runter, aber das stört ja nicht. Ich habe Skyrim und Enderal einschließlich ihrer dazugehörigen Dokumente (Ini's, Saves...) aber auch in 2 verschiedenen Skyrim-Ordnern (Skyrim 1 und Skyrim) so das bei der Installation von Enderal mein Skyrim mit Mods nie mit ins Spiel kam. Damit laufen beide absolut sauber auf der selben Festplatte/Partition.
 
Zuletzt bearbeitet:
Hast du mal ein älteres Savegame versucht, ob das Problem dort auch bereits besteht?
Könnte auch an einem jetzt fehlerhaften Savegame liegen.
Jup, hab das Problem bei mehreren Spielständen... ich hab dann allerdings mal ein neues Spiel gestartet und da war das Problem nicht.
Also ist es wohl ein kaputtes Savegame, bzw mehrere kaputte Saves. :(