Android crashing on level loading

My android game is starting up just fine and loads into the main menu where all functions work correctly. When I load into the game level, it crashes. It does not crash on Windows. Furthermore, if I connect to a remote server it does not crash on Android, either, so it’s something to do with the GameMode or authority gated code, I guess.

The problem is that the crash dump I get is pretty useless. I’m hoping someone might recognize it or at least have a better idea of how I can get more detail on just what’s triggering the crash?

This is a converted 4.27 to 5.1 project, which did not crash previously. I’m not sure if that’s from the engine update or another change I made though.

Thank you for any help! I’ve been on this for days.

Revision: '18'
ABI: 'arm64'
Processor: '7'
Timestamp: 2022-12-16 08:58:09.287258902-0500
Process uptime: 20s
Cmdline: com.Company.Game
pid: 24820, tid: 24872, name: GameThread  >>> com.Company.Game <<<
uid: 10555
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0000000000000020
Cause: null pointer dereference
    x0  000000702308f460  x1  00000070e79f4798  x2  00000070e79f450c  x3  0000000000000000
    x4  00000070e79f4736  x5  00000070407aff00  x6  0000000000000001  x7  0000000000000001
    x8  0000007040792c13  x9  00000000000000ff  x10 0000000000000003  x11 0000000000000014
     x12 0000000000000002  x13 0000000000000002  x14 0000000000000000  x15 0000000034155555
     x16 000000708b90dea8  x17 00000074183c33bc  x18 000000705b9e691c  x19 00000070e79f450c
     x20 00000070e79f4798  x21 00000070e79f4712  x22 00000070e79fc000  x23 000000708bab04d8
     x24 00000070e79fc000  x25 0000000000000000  x26 000000708bab04d8  x27 00000070407aff20
     x28 0000000000000008  x29 00000070e79f44a0
     lr  00000070844d92a8  sp  00000070e79f4430  pc  00000070844ca85c  pst 0000000020001000
 backtrace:
       #00 pc 000000001003385c  /lib/arm64/libUnreal.so (UObject::execCallMathFunction(UObject*, FFrame&, void*)+84) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #01 pc 00000000100422a4  /lib/arm64/libUnreal.so (UObject::execLetBool(UObject*, FFrame&, void*)+208) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #02 pc 00000000100364d8  /lib/arm64/libUnreal.so (ProcessLocalScriptFunction(UObject*, FFrame&, void*)+892) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #03 pc 00000000100359a8  /lib/arm64/libUnreal.so (void ProcessScriptFunction<void (*)(UObject*, FFrame&, void*)>(UObject*, UFunction*, FFrame&, void*, void (*)(UObject*, FFrame&, void*))+500) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #04 pc 0000000010037784  /lib/arm64/libUnreal.so (ProcessLocalFunction(UObject*, UFunction*, FFrame&, void*)+2372) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #05 pc 00000000100364d8  /lib/arm64/libUnreal.so (ProcessLocalScriptFunction(UObject*, FFrame&, void*)+892) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #06 pc 00000000100359a8  /lib/arm64/libUnreal.so (void ProcessScriptFunction<void (*)(UObject*, FFrame&, void*)>(UObject*, UFunction*, FFrame&, void*, void (*)(UObject*, FFrame&, void*))+500) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #07 pc 0000000010037784  /lib/arm64/libUnreal.so (ProcessLocalFunction(UObject*, UFunction*, FFrame&, void*)+2372) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #08 pc 00000000100364d8  /lib/arm64/libUnreal.so (ProcessLocalScriptFunction(UObject*, FFrame&, void*)+892) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #09 pc 00000000100359a8  /lib/arm64/libUnreal.so (void ProcessScriptFunction<void (*)(UObject*, FFrame&, void*)>(UObject*, UFunction*, FFrame&, void*, void (*)(UObject*, FFrame&, void*))+500) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #10 pc 0000000010037784  /lib/arm64/libUnreal.so (ProcessLocalFunction(UObject*, UFunction*, FFrame&, void*)+2372) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #11 pc 00000000100364d8  /lib/arm64/libUnreal.so (ProcessLocalScriptFunction(UObject*, FFrame&, void*)+892) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #12 pc 0000000010036068  /lib/arm64/libUnreal.so (UObject::ProcessInternal(UObject*, FFrame&, void*)+356) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #13 pc 000000000fdaee5c  /lib/arm64/libUnreal.so (UFunction::Invoke(UObject*, FFrame&, void*)+124) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #14 pc 000000001003beec  /lib/arm64/libUnreal.so (UObject::ProcessEvent(UFunction*, void*)+5384) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #15 pc 0000000013ca8efc  /lib/arm64/libUnreal.so (AActor::ProcessEvent(UFunction*, void*)+316) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #16 pc 0000000014534770  /lib/arm64/libUnreal.so (AGameModeBase::PostLogin(APlayerController*)+396) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #17 pc 0000000014534528  /lib/arm64/libUnreal.so (AGameMode::PostLogin(APlayerController*)+464) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #18 pc 000000001477fbdc  /lib/arm64/libUnreal.so (UWorld::SpawnPlayActor(UPlayer*, ENetRole, FURL const&, FUniqueNetIdRepl const&, FString&, unsigned char)+852) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #19 pc 00000000147e2948  /lib/arm64/libUnreal.so (ULocalPlayer::SpawnPlayActor(FString const&, FString&, UWorld*)+692) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #20 pc 0000000015270a58  /lib/arm64/libUnreal.so (UEngine::LoadMap(FWorldContext&, FURL, UPendingNetGame*, FString&)+11336) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #21 pc 000000001526c100  /lib/arm64/libUnreal.so (UEngine::Browse(FWorldContext&, FURL, FString&)+3364) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #22 pc 000000001526d600  /lib/arm64/libUnreal.so (UEngine::TickWorldTravel(FWorldContext&, float)+552) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #23 pc 00000000144ec1c0  /lib/arm64/libUnreal.so (UGameEngine::Tick(float, bool)+3696) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #24 pc 000000000be8150c  /lib/arm64/libUnreal.so (FEngineLoop::Tick()+22736) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #25 pc 000000000be79ef8  /lib/arm64/libUnreal.so (AndroidMain(android_app*)+4432) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #26 pc 000000000be88444  /lib/arm64/libUnreal.so (android_main+196) (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)
       #27 pc 000000000bebf37c  /lib/arm64/libUnreal.so (BuildId: 33dacec6a305284bd7aa1f95be9aa8f4b7968631)```

I’m still digging on this. I’m doing nothing in my post login functions, so this seems pretty low level. It looks somehow related to the post login event delegate.

For more info, here’s the symbolized call stack.

UObjectBase::GetOuter() const
F:/UnrealEngine51/Engine/Source/Runtime/CoreUObject/Public/UObject/UObjectBase.h:147:10
UFunction::GetOuterUClassUnchecked() const
F:/UnrealEngine51/Engine/Source/Runtime/CoreUObject/Public/UObject/Class.h:1815:36
UObject::execCallMathFunction(UObject*, FFrame&, void*)
F:/UnrealEngine51/Engine/Source/Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:1041:34
FFrame::Step(UObject*, void*)
F:/UnrealEngine51/Engine/Source/Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:467:2
UObject::execLetBool(UObject*, FFrame&, void*)
F:/UnrealEngine51/Engine/Source/Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:2975:8
FFrame::Step(UObject*, void*)
F:/UnrealEngine51/Engine/Source/Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:467:2
ProcessLocalScriptFunction(UObject*, FFrame&, void*)
F:/UnrealEngine51/Engine/Source/Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:1215:9
void ProcessScriptFunction<void (*)(UObject*, FFrame&, void*)>(UObject*, UFunction*, FFrame&, void*, void (*)(UObject*, FFrame&, void*))
F:/UnrealEngine51/Engine/Source/Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:1015:3
FFrame::Step(UObject*, void*)
F:/UnrealEngine51/Engine/Source/Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:467:2
ProcessLocalScriptFunction(UObject*, FFrame&, void*)
F:/UnrealEngine51/Engine/Source/Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:1215:9
void ProcessScriptFunction<void (*)(UObject*, FFrame&, void*)>(UObject*, UFunction*, FFrame&, void*, void (*)(UObject*, FFrame&, void*))
F:/UnrealEngine51/Engine/Source/Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:1015:3
FFrame::Step(UObject*, void*)
F:/UnrealEngine51/Engine/Source/Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:467:2
ProcessLocalScriptFunction(UObject*, FFrame&, void*)
F:/UnrealEngine51/Engine/Source/Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:1215:9
void ProcessScriptFunction<void (*)(UObject*, FFrame&, void*)>(UObject*, UFunction*, FFrame&, void*, void (*)(UObject*, FFrame&, void*))
F:/UnrealEngine51/Engine/Source/Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:1015:3
FFrame::Step(UObject*, void*)
F:/UnrealEngine51/Engine/Source/Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:467:2
ProcessLocalScriptFunction(UObject*, FFrame&, void*)
F:/UnrealEngine51/Engine/Source/Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:1215:9
UFunction::Invoke(UObject*, FFrame&, void*)
F:/UnrealEngine51/Engine/Source/Runtime/CoreUObject/Private/UObject/Class.cpp:6455:9
UObject::ProcessEvent(UFunction*, void*)
F:/UnrealEngine51/Engine/Source/Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:2114:13
AGameModeBase::K2_PostLogin(APlayerController*)
F:/Project/Intermediate/Build/Android/Project/Inc/Engine/UHT/GameModeBase.gen.cpp:456:3
AGameModeBase::DispatchPostLogin(AController*)
F:/UnrealEngine51/Engine/Source/Runtime/Engine/Private/GameModeBase.cpp:1020:3
AGameModeBase::PostLogin(APlayerController*)
F:/UnrealEngine51/Engine/Source/Runtime/Engine/Private/GameModeBase.cpp:1010:2
AGameMode::PostLogin(APlayerController*)
F:/UnrealEngine51/Engine/Source/Runtime/Engine/Private/GameMode.cpp:117:9
UWorld::SpawnPlayActor(UPlayer*, ENetRole, FURL const&, FUniqueNetIdRepl const&, FString&, unsigned char)
F:/UnrealEngine51/Engine/Source/Runtime/Engine/Private/LevelActor.cpp:1051:13
ULocalPlayer::SpawnPlayActor(FString const&, FString&, UWorld*)
F:/UnrealEngine51/Engine/Source/Runtime/Engine/Private/LocalPlayer.cpp:292:31
UEngine::LoadMap(FWorldContext&, FURL, UPendingNetGame*, FString&)
F:/UnrealEngine51/Engine/Source/Runtime/Engine/Private/UnrealEngine.cpp:14866:15
UEngine::Browse(FWorldContext&, FURL, FString&)
F:/UnrealEngine51/Engine/Source/Runtime/Engine/Private/UnrealEngine.cpp:14037:10
UEngine::TickWorldTravel(FWorldContext&, float)
F:/UnrealEngine51/Engine/Source/Runtime/Engine/Private/UnrealEngine.cpp:14235:7
UGameEngine::Tick(float, bool)
F:/UnrealEngine51/Engine/Source/Runtime/Engine/Private/GameEngine.cpp:1767:4
FEngineLoop::Tick()
F:/UnrealEngine51/Engine/Source/Runtime/Launch/Private/LaunchEngineLoop.cpp:5361:12
AndroidMain(android_app*)
F:/UnrealEngine51/Engine/Source/Runtime/Launch/Private/Android/LaunchAndroid.cpp:584:16

So I thought to myself, screw it, only one plugin which I don’t even use is binding to that post login event. I’ll just cut out the broadcast call all together and go on with my hacky fix. Nope. Now it’s just crashing at another point.

(UObject::execCallMathFunction(UObject*, FFrame&, void*)+84)
(UObject::execLetBool(UObject*, FFrame&, void*)+208)
(ProcessLocalScriptFunction(UObject*, FFrame&, void*)+892)
(void ProcessScriptFunction<void (*)(UObject*, FFrame&, void*)>(UObject*, UFunction*, FFrame&, void*, void (*)(UObject*, FFrame&, void*))+500)
(ProcessLocalFunction(UObject*, UFunction*, FFrame&, void*)+2372)
(ProcessLocalScriptFunction(UObject*, FFrame&, void*)+892)
(UObject::ProcessInternal(UObject*, FFrame&, void*)+356)
(UFunction::Invoke(UObject*, FFrame&, void*)+124)
(UObject::ProcessEvent(UFunction*, void*)+5384)
(AActor::ProcessEvent(UFunction*, void*)+316)
(AGameMode::HandleMatchIsWaitingToStart()+92)
(AGameMode::SetMatchState(FName)+204)
(AGameMode::StartPlay()+84)
(UWorld::BeginPlay()+340)
(UEngine::LoadMap(FWorldContext&, FURL, UPendingNetGame*, FString&)+11472)
(UEngine::Browse(FWorldContext&, FURL, FString&)+3364)
(UEngine::TickWorldTravel(FWorldContext&, float)+552)
(UGameEngine::Tick(float, bool)+3696)
(FEngineLoop::Tick()+22736)

Obviously this goes a bit deeper.

Well, this was a pain to find, but I found the problem.