Hi guys, Ive been dealing with some occasional hard crashes that I can never seem to figure out the root cause of. Unfortunately the crash logs are kinda cryptic to me, and didn’t tell me much. I installed editor debugging symbols which gave me more info but I still can’t figure out what might be causing it. I’m on the latest version of Unreal Engine
Typically what this is referring to is that your graphics settings need to be updated and enabled, it’s typically fixed with a graphics driver update and setting NVIDIA settings to default!
Unfortunately I’ve been on the latest drivers everytime this has popped up, and have default settings (and other people who have playtested my project experience the same crash within the first 10 minutes or so). I don’t think it’s GPU related as it seems to mention TimerManager.cpp, so I imagine its an issue relating to a specific timer/set of timers but I have no idea how to narrow it down.
Well the reason to assume it’s graphics based is because 0x00000000…18 is typically associated with that.
You can’t really assume it’s the timer manager any more than you can assume it’s:
LevelTick
GameEngine
LaunchEngineLoop
Launch
LaunchWindows
exe_common.inl
As they are all mentioned here in the same way.
You said this is a BUILT project, correct? Like an executable file?
I know I’ve heard somewhere about the AntiAliasing settings having a possible issue with less-than-newest graphics cards, but I couldn’t tell you which setting would have been the issue. Possibly FXAA? If it’s hard set in the project before export, that could also explain your testers having the issue as it’s a problem across many cards, if I remember correctly.
So I think i’ve had this issue before and I think I fixed it exactly the same way, which was by fixing up and deleting unreferenced redirectors. After fixing and cleaning up redirectors and repackaging, I’m not really getting these crashes anymore. I don’t know why I just completely forgot about trying that. I’ll have to playtest some more to see if its truly gone.
I did end up finding the cause of this crash. It was some really bad code. I think back when I wrote this code, I was trying to write a simple delay without the usual matching callback. After I commented it out, I’ve had zero crashing issues in multiple play tests spanning hours at this point, so I know this is what was causing it.
Whatever you do, please DO NOT copy and use this code. This was very difficult to pinpoint, and I only saw it because I was rewriting some code for the class as a part of something else and spotted it.
//Below commented code could be cause of EXCEPTION_ACCESS_VIOLATION errors I've been getting for years...
// FTimerDelegate TimerDelegate;
// TimerDelegate.BindLambda([&]()
// {
// Destroy();
// });
// if (!GetWorldTimerManager().TimerExists(DespawnTimerHandle))
// {
// GetWorldTimerManager().SetTimer(DespawnTimerHandle, TimerDelegate, 5.0f, false);
// }
The context is that this code was fired when projectiles overlapped something. I think there’s probably some scenarios where projectiles were forcefully deleted before this delegate could fire, that when it did fire, it would say “hey this projectile no longer exists! What are we suppossed to destroy?” and crash as a result.