nunyabidnez Posted October 27, 2024 Posted October 27, 2024 So,... I'm pretty much a blithering idiot when it comes to the technical aspects of the game. Recently, I've started having completely random and frequent CTD, with no rhyme or reason to trigger them. I've not installed anything new in weeks, so I don't think that would be the cause. I'm looking at my most recent crash log from Crash Logger, but I have to admit that it's actually less understandable to me than classic Greek. Is there anything specific I should be looking for to begin my investigation? Any sort of flag or error message that should pop up in the log? Thanks in advance for any assistance.
nunyabidnez Posted October 29, 2024 Author Posted October 29, 2024 On 10/27/2024 at 10:33 AM, traison said: Some of my old scribbles here. Thank you so much! And, I feel like an idiot as for once I didn't do a big dive into the forums to see if anyone had already asked this question. Would you mind if I picked your brain for a moment or two concerning mine? Unlike you, I'm not even a "dangerous amateur", I'm much more a blind person in a darkened, soundproofed room, lol!
nunyabidnez Posted October 29, 2024 Author Posted October 29, 2024 @traison, in your older post you say the topmost callstack entries are potentially related to possible causes for crashes. Mine are all SkyrimSE.exe except for two hdtSMP64 entries, with a "+" and then what I would assume to be an address string or some other series of numbers / letters following it, (i.e. SkyrimSE.exe+0D1BF7F). Would that mean I have something wrong with SkyrimSE itself? The stack does end with KERNEL32 and ntdll, which I saw you say is how it should end.
traison Posted October 29, 2024 Posted October 29, 2024 (edited) 1 hour ago, nunyabidnez said: the topmost callstack entries are potentially related to possible causes for crashes No they are literally where the crash occured. The callstack is the return addresses from CALL instructions - what you might call functions. Functions as a concept doesn't exist in assembly, but this is about as close to that as you're going to get. The higher up something is, the more closely related it is to where the crash occured. 1 hour ago, nunyabidnez said: Would that mean I have something wrong with SkyrimSE itself? Technically yes. If software was written perfectly flawless in every aspect you will never see RIP point to it in a crash log. This is not always practical however, especially if you allow for modifications to be made that are out of your control. SkyrimSE.exe is not a bank, military or other critical system. In crash logs where the topmost entries are in SkyrimSE.exe I generally do not bother with them. Figuring out what they are could require bypassing debugger traps and DRM, and this is overcomplicating things when the answer might be in the stack. Search for the callstack entries, from top to bottom, in the stack and mark the lines. The stack entries between your marked lines are the parameters passed to these "functions". Made-up example below: Callstack: [0] SkyrimSE.exe+0xdeadbeef [1] SkyrimSE.exe+0x12341234 [2] SkyrimSE.exe+0x67896789 ... Stack: void* SkyrimSE.exe+0x12341234 void* 0x0 void* 0x123 char* "path/to/my/broken/script.pex" void* SkyrimSE.exe+0x67896789 SkyrimVM* SkyrimSE.exe+0x44554455 ... Note the first callstack entry is the RIP, or the faulting offset. I personally think this should not be part of the callstack, as it is not the return address from a CALL instruction, but for some reason its common to include it. In this made-up example we can identify the stack frames of the first 2 "real" callstack entries (entries #1 and #2): Function that returns to SkyrimSE.exe+0x12341234 was passed: 0x0 (null pointer) 0x123 (invalid pointer, nothing can exist at 0x123) A char pointer to a compiled script. Function that returns to Skyrim.SE.exe+0x67896789 was passed: A pointer to a SkyrimVM object instance. This usually has something to do with scripting. ... With a crash log like this I'd say your issue is definitely in script.pex, not specifically in SkyrimSE.exe. The script.pex is a file that is out of the control of SkyrimSE.exe, and thus unless SkyrimSE.exe was made to account for all possible input (which technically it should, but like I said that's not always practical) it is quite likely the "script.pex" file contains invalid or otherwise unexpected data. Besides, it would be much simpler to alter a Papyrus script than to bytecode patch the exe itself. Edited October 29, 2024 by traison 1
nunyabidnez Posted October 29, 2024 Author Posted October 29, 2024 (edited) Ahh!! A little bit of comprehension, thank you, and that makes perfect sense about them being the most recent "calls", not necessarily the ones directly related to the error. So, is it possible to see which script would be the most likely culprit using the information contained within the crashlog? I do think mine is pretty heavily scripted, I run a lot of SL mods as well as a bunch of other mods that are heavily scripted. Edited October 29, 2024 by nunyabidnez
traison Posted October 29, 2024 Posted October 29, 2024 Most likely not. The made-up example I posted above would most likely be a script loading function. The function that actually executes the script wouldn't be interested in the file name. Ideally the script is loaded into memory, then executed from there. I don't know the game engine though, but lets put it this way: I hope it doesn't load a script file every time it executes something. That would seem like an insane waste of resources.
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