SKYRIM
Safety Load by kapaer
Skyrim » Bug fixes
Added: 05/11/2013 - 04:34PM
Updated: 04/01/2014 - 11:35AM

17,264 Endorsements

1.2 Latest version

245,127 Unique D/Ls

362,503 Total D/Ls

1,053,033 Total Views

Uploaded by kapaer

Description

Last updated at 11:35, 4 Jan 2014 Uploaded at 16:34, 5 Nov 2013

# ---------------------------------------------------------------------
# Safety Load v.1.2
# by kapaer
# ---------------------------------------------------------------------


----------------------------------------------------------------------
Information
----------------------------------------------------------------------
I uploaded source code and some documents in MISCELLANEOUS.
If you can fix more better, please.


----------------------------------------------------------------------
Description
----------------------------------------------------------------------
This mod blocks "Infinite Loading Screen" bug and game freezing during play.
Rather than an error of load, "Infinite Loading Screen" is caused by an error in memory allocation.
This mod modify the function of memory allocation and block all freezing due to memory allocation failure.


----------------------------------------------------------------------
Notes
----------------------------------------------------------------------
This mod changes memory allocation, it is dependent on your PC (OS, 32or64bit, memory size etc.).
If you have no problem after Installation, Congratulations! You got all the features.

If you have any problem after Installation (CTD when open menu, get more CTD or freeze, graphical glitch etc.), please try:
"EnableOnlyLoading = true" in data/SKSE/Plugins/SafetyLoad.ini.
This means that it can not block game freezing during play except loading screen.

If you still got problems after setting .ini, you cannot use this mod... Sorry.


When you install many mods or large textures, animation of loading screen will be stopped sometimes.
However, the game will continue to load in the background. Please wait.
You can check it is infinite loading or not by using "Skyrim Performance Monitor", "Windows Task Manager" etc.
When the memory usage or Disk I/O has changed, game is running.
** OSD information is not usable because it is stop with loading screen. **

Infinite Loading Screen happens for several reasons:
1. broken saveGame
2. memory shortage
3. when game loads many object/texture data

This mod blocks 3. only.
If detect broken saveGame, this mod writes error to a logfile (data/SKSE/Plugins/SafetyLoad.log) and stop game (CTD, call to desktop). It would be better than Infinite Loading Screen.

This mod fix "memory allocate function" only, it does not affect the other.
But, it is possible to install a lot of mods, it may malfunction occurs in overload. Be careful.


----------------------------------------------------------------------
Requirements
----------------------------------------------------------------------
Skyrim version 1.9.32.0
SKSE 1.6.16 or later


----------------------------------------------------------------------
Installation
----------------------------------------------------------------------
drop the "data" folder into your Skyrim directory.


----------------------------------------------------------------------
Compatibility
----------------------------------------------------------------------
These are confirmed compatibility already:
CTD and Memory patch ENBoost
Stable uGridsToLoad (Cell Stabilizer)

Incompatible mod is not found now.


----------------------------------------------------------------------
Background - Skyrim Memory Allocation and why freeze
----------------------------------------------------------------------
Skyrim malloc function looks like TCMalloc or so. Each threads have their own memory, and allocate from these memory. If threads do not have enough memory, they try to free memory by some methods from their own memory first. If they fail all methods, finally allocate from general heap with "HeapAlloc" function in kernel32.dll.

But one of methods to free memory is cause of infinit loading and freeze.
Thread enqueue the message to main thread and wait by "WaitForSingleObject" function, but wait infinity sometimes.
I think this message is signal to free "unused object" or garbage collection. When the thread has no "unused object", this thread wait infinity. (ex. first load after start Skyrim. All loaded objects are necessary.)
This behavior is good idea because this function was made for "limited memory (like XBOX)" and "limited resource (Vanilla Skyrim), but this limits to use more memory and resources.

This mod skip that method, it has a little problem. Unused objects are not released during the while. They will be released at cell change, loading screen or a few minutes later. This will increase some amount of memory, but it does not matter so much because almost objects are necessary while player is in that cell. Memory usage as additionally required is less.
Known exception: showracemenu with "showRaceMenu preCache killer" mod. When change hairs, all selected hairs are not released. Simply, this mod is stopped in showRaceMenu.


----------------------------------------------------------------------
Permission
----------------------------------------------------------------------
You are allowed to upload, convert, modify this mod.


----------------------------------------------------------------------
Changelog
----------------------------------------------------------------------
2013/11/11 v1.2
add errorCheck when open menu.
add EnableOnlyLoading option. If enabled, SafetyLoad will be enabled in only LoadingScreen.
(default Disabled, in data/SKSE/Plugins/SafetyLoad.ini)

2013/11/07 v1.1
fix conflict with showRaceMenu_PreCacheKiller

2013/11/05 v1.0
Initial release


----------------------------------------------------------------------
Credits
----------------------------------------------------------------------
Thanks to Bethesda Softworks
Thanks to SKSE team