Hi everyone,
It’s been a while since I got this crash problem, which often occurs recently.
At first I thought it could be started by some unsafe pointers, and I added almost every validation check procs for all my pointers. Obviously, I failed.
Then I tried to overview call stack messages, and then this issue was figured out that some config data became illegal during TSet construct which listed below:
As what I’ve figured out, the crash issue came though the following path:
Winmain->
UnrealEngine Tick->
FAudioDeviceManager::UpdateActiveAudioDevices(bool bGameTicking) ->
USoundWave::IsStreaming(*FPlatformCompressionUtilities::GetCookOverrides(PlatformName))
Check if you’re spawning tickable objects in Editor world instead of in Game world. If you are doing this somewhere, you should not, unless it’s a class meant to be spawned by editor world.
Crash like this is common when in c++ somebody is assuming current world is game world then spawns some runtime classes that then start ticking and doing nasty things while game isn’t playing at all.
Yes I merely got these crash during standalone gameplay. There’re still a few questions I can’t understand well:
1.I do use GetWorld()->SpawnActor() method during game play. Is it possible that GetWorld() returns EditorWorld instead of GameWorld?
2.All actors got "Tick before begin play " unchecked. How could that happen for them to tick in EditorWorld?
I would try to track the point where my code → engine code transition happens in the callstack.
Usually looking into the engine area of the trace won’t help to figure out where the crash trigger is coming from.
When it’s coming from an engine dll I usually won’t even look, will skip until it’s a dll from one of my modules.