The Elder Scrolls V: Skyrim Special Edition

The Elder Scrolls V: Skyrim Special Edition

Not enough ratings
UPLOADING AND READING A CRASHLOG (WIP)
By Altbert
How to publish and how to read your crashlogs.
   
Award
Favorite
Favorited
Unfavorite
INTRODUCTION
A crashlog exported by CrashLogger or Trainwreck is often referred to as unreadable and non-informative. For most lines in the crashlog this is true, but some lines may provide useful information. There is a CrashLog Reader available, but it requires you to download and install the .NET Framework and Python, and I am not really sure if the Reader will provide a proper explanation of the crashlog. Still, you may be able to use the information in the crashlog to get closer to the culprit in your mod build.

This guide covers the CrashLogger and Trainwreck logs. If you want to share your log, please post in somewhere, e.g. Pastebin or Google Docs, and provide a link to the log in the comments section. Do NOT post the complete log itself in the comments section, but only the "cleaned" version of the log, and also do NOT post links to Papyrus logs, as these are not relevant.

WARNING: Even if you have provided a complete or cleaned crashlog, it will not mean anyone may be able to provide you with a solution.
FIRST THINGS FIRST
Before asking for help with your crashlog, be sure to check the following first (not in any particular order):
  1. Make sure your operating system and your GPU drivers are up to date. Check if a crash is related to atidxx64.dll or nvwgf2umx.dll. Use Google Search with the DLL name + " crash", to find solutions in the Microsoft Community. These DLLs are related to Windows, not to Skyrim.
  2. Never remove mods mid-playthrough, in particular if these mods contain scripts. Scripts with properties (global variables) tend to cause issues in the long run as those properties are stored in your save files. Opinions on the usability of ReSaver (part of the FallrimTools) contradict each other. I wouldn't rely on ReSaver too much.
  3. If you are receiving an SKSE (Skyrim Script Extender) runtime error, check if you have downloaded and installed the correct versions of SKSE, the SKSE DLL plugins and the Address Library for SKSE Plugins in your Data/SKSE/Plugins folder. Remove any SKSE DLL plugins that are not compatible with the (correct) version of SKSE. See SKSE Plugin Status[modding.wiki] for compatible plugins.
  4. Your game crashed before the main menu appears (no crash log, but with a launcher error): On a first run, the launcher may have installed an updated version of C++, and you need to reboot your PC.
  5. Your game crashed before the main menu appears (no crash log and no launcher error): This may be caused by a corrupt plugin which is also a master (ESM or ESM flagged) or it may be caused by a missing dependency of an installed mod.
  6. If your crashlog mentions BGSStoryManagerBranchNode, it could be that you have created a character, returned to the menu, and tried to create a new character. Always restart the game before creating a new character or switching characters.
  7. Check to see if your anti-virus software has blacklisted any of the executables and DLLs in your game directory and its subdirectories. Whitelist your main game folder and all of its subfolders.
  8. The larger your modlist gets, the more memory it needs. If there is not enough memory available, allocating more memory may fail. To fix this you will have to add more RAM or enlarge your pagefile ("virtual memory"), the file on disk that Windows will use when there is not enough RAM available.
  9. Load order can also be the cause of crashes, as well as incompabile mods. Start by rearranging your load order by using the Load Order Optimization Tool (LOOT). If that doesn't solve the issue, you may need to use SSEEdit to search for mod conflicts.
SECTIONS IN THE CRASHLOG
The crashlog consists of various sections with many lines which are unreadable for many users, if not most of them.
  1. Skyrim and CrashLogger or Trainwreck version, and Unhandled Exception
  2. System Specifications
  3. Probable Call Stack
  4. Registers
  5. Stack
  6. Modules
  7. SKSE Plugins
  8. Plugins

For information on stacks see: Call Stack[en.wikipedia.org] and Stack (abstract data type)[en.wikipedia.org].
PUBLISHING YOUR CRASHLOG
A complete crashlog can be around 700 lines in length (CrashLogger) or even more (over 1,000 lines with Trainwreck), where each line has a line numbering. Not all of the provided lines will be necessary to find the issue you encounter, and you can probably remove many lines, and you probably should, unless someone specifically asks for a complete crashlog. What should definitely be published in your crashlog based on the sections mentioned above?
  1. Always include the info about the Skyrim, CrashLogger or Trainwreck version and the unhandled exception. The unhandled exception will most probably be EXCEPTION_ACCESS_VIOLATION in most case and may refer to an SKSE DLL Plugin, but could also refer to another unhandled exception. But, you may also encounter other unhandled exception.
  2. System specifications can be optional, unless the unhandled exception without a doubt refers to a Windows DLL.
  3. Always include the PROBABLE CALL STACK.
  4. As for REGISTERS, only include lines with a relation to the unhandled exception.
  5. As for the STACK, only include lines with a relation to the unhandled exception.
  6. Completely skip the MODULES section as it will list both Windows DLLs and SKSE DLL Plugins.
  7. The listing of SKSE PLUGINS is important, instead of the previous section, as it lists all SKSE DLL Plugins you are using. These are listed in alphabetical order as these plugins have no specific load order.
  8. You can completely skip the PLUGINS section as this section first lists non-light plugins (non-ESL and non-ESLified: 00-FD) and then the light plugins (ESL and ESLified: FE000-FEFFF). Instead, insert your LOOT load order, or equivalent, list here as it will provide your specific load order of standard and light plugins.
HOW TO READ THE CRASHLOG
You will find the first indication of an issue in line 4, the unhandled exception. It may probably refer to an SKSE DLL plugin, but in any case (also when it's a Windows DLL) you will have to look further. The PROBABLE CALL STACK may provide other indications, and may even pinpoint it to a specific subroutine or function or even a specific variable in that subroutine or function. The REGISTER section may also give some additional information, although it may not always be that clear. The STACK section may also provide additional information, but skip references to Windows DLL files when the issue is clearly Skyrim related.

If the PROBABLE CALL STACK, the REGISTERS and the STACK all point to the same DLL causing the issue, it may even give you a clue where the problem may be found, such as a variable (property) setting. Most probably it may refer to an incompabitable DLL version, an incorrect SKSE version or an incorrect version of the Address Library binary.
HOW TO SOLVE THE ISSUE
When the issue is a SKSE DLL Plugin issue, your options are
  • to update SKSE to the proper version
  • to update Address Library to the proper version
  • to update the SKSE DLL plugin to the proper version
Required SKSE versions:
  • SKSE version 1.7.3 for Classic Skyrim version 1.9.x
  • SKSE version 2.0.12 for Skyrim VR version 1.4.15
  • SKSE version 2.0.20 for Skyrim Special Edition 1.5.97
  • SKSE version 2.2.6 for Skyrim Special Edition 1.6.1170
  • SKSE version 2.2.6 for Skyrim Special Edition 1.6.1179 (GOG)
These SKSE versions can be downloaded from this page[skse.silverlock.org]. Other versions can be found on the archive page[skse.silverlock.org]

Address Library binaries come in a single package. The separate binaries consist of the Skyrim SE version number in the name, e.g. "versionlib-1-6-1130-0.bin". Downloads:
Address Library for Skyrim VR[www.nexusmods.com]
Address Library for Skyrim SE[www.nexusmods.com]
Once installed you can find these binaries in the .../Data/skse/Plugins folder. It seems not recommended to remove binaries which are not for your specific game version.

The compatibility status of SKSE DLL Plugins can be checked at the SKSE Plugin Status[modding.wiki] page. Apart from the compatibility status (for Skyrim SE 1.5.97, 1.6.640, 1.6.1130 and 1.6.1170), you will also see necessary requirements, replacements, alternatives and additional notes. The compatiblity status of mods is grouped into: Core Mods, User Interface Mods, Animation Mods, Gameplay Mods and Utility Mods.

If you are using Skyrim SE 1.6.1130 or 1.6.1170, additional information can be found in my other guide:
https://steamproxy.net/app/489830/guides/
EXAMPLES
This section will show you where to look for issues and what to publish in your crashlog and what not. Each header will tell you if data are mandatory or optional.

Versions and Unhandled Exception (mandatory)
  • Skyrim SSE v1.6.640
  • CrashLoggerSSE v1-12-1-0 Dec 22 2023 02:20:56
  • Unhandled exception "EXCEPTION_ACCESS_VIOLATION" at <offset address> <dll name>.dll <plus the rest of the line>

The exception doesn't always have to be a DLL plugin, but can also be an invalid or corrupt asset file. The rest of the line may already provide information about a function, variable or asset, which could be the cause of the issue.

System Specs (optional)
6. SYSTEM SPECS:
7. OS: Microsoft Windows 10 Home v10.0.19045
8. CPU: GenuineIntel Intel(R) Core(TM) i7-10700K CPU @ 3.80GHz
9. GPU #1: Nvidia TU104 [GeForce RTX 2080 SUPER]
10. GPU #2: Microsoft Basic Render Driver
11. PHYSICAL MEMORY: 14.87 GB/31.81 GB
12. GPU MEMORY: 3.19/7.06 GB

Probable Call Stack (mandatory)
14. PROBABLE CALL STACK:
15. [0] <offset address> <dll name>.dll <plus the rest of the line>

Also in this case the rest of the line or lines may provide information about an event, function and/or variable, which could be the cause of the issue.

Registers (mandatory)
Publish only the lines that mention the DLL or asset, and the possible mentioned events, e.g. "ButtonEvent".

Stack (mandatory)
Publish only the lines that mention any DLLs found in your Data/SKSE/Plugins folder, DLLs found in your main Skyrim SE game folder, or assets. Remove lines like
[RSP+C8] 0x0 (size_t) [0] [RSP+F8] 0x<offset address> (void*)

Modules
This section can be completely removed, as the SKSE plugins are covered by the following section.

SKSE Plugins (mandatory)
This is a complete listing of the SKSE plugins in your Data/SKSE/Plugins folder in alphabetical order.

Plugins
Completely remove this section and replace it with your actual load order as generated by LOOT.
  • Activate LOOT
  • In the menu bar select "Game"
  • In the drop-down menu select "Copy Load Order"
  • Paste the copy in the crashlog under "PLUGINS" or at the end of the crashlog
WHAT TO LOOK FOR?
In this section you will find an overview of the keywords that you have to look for.

TESObjectREFR
The line you are looking for might be displayed as
RBX 0x<offset address> (TESObjectREFR*)
and will be followed by the mod that is affecting the reference (File :), flags (Flags:), the form ID (Form ID:) and the form Type (Form Type:). Important are the name of the mod (if available), the form ID and the reference ID (if available).

TESNPC
The line you are looking for might be displayed as
[RSP+###] 0x<offset address> (TESNPC*)
and will also be followed by mod, flags, form ID and form type. Important are the name of the mod and the form ID.

Assets
If an asset has caused issues, the line you are looking for might be displayed as
[RSP+###] 0x<offset address> (char*) "data\textures\...\<asset name>.dds"
or
[RSP+###] 0x<offset address> (char*) "data\meshes\...\<asset name>.nif"
where in these examples a texture and a mesh cause the issues. However, there may be other assets displayed in the crashlog.

DLLs
The line to look for might be displayed as
[RSP+###] 0x<offset address> (void* -> <modname>.dll+<hexvalue>)
and will be followed by file ("*"), flags, form ID and form type. This DLL or SKSE plugin is causing issues, in particular if it shows up multiple times. However, it could also be a DLL or SKSE plugin that requires the mentioned DLL or SKSE plugin that causes the issue, making the mentioned DLL or SKSE plugin the culprit.

Keywords to look for
The following are keywords to look for in PROBABLE CALL STACK and REGISTERS:
  • TESObjectREFR
  • TESNPC
  • TESObjectCELL
  • hkp (prefix for animations/behaviors)
  • <modname>.dll
  • BSFaceGenModel or similar (with BS and FaceGen in the keyword)
  • BSMultiBoundNode (indicates a bad mesh (.nif file)
  • BSGeometryListCullingProcess (indicates bad occlusion culling)
  • BSJobs:JobThread (sofar found to be attached to the previous 2 keywords)
2 Comments
Altbert  [author] 10 May, 2024 @ 9:44am 
If you are experiencing crashes, post your "cleaned" crashlog in your own thread. That way you will have more audience and possibly a faster answer or even a solution. I will be using those crashlogs where possible to update the guide. Don't expect immediate solutions.
x4es 10 May, 2024 @ 9:16am 
good