Hello, my game runs fine when playing in editor but crashes in packaged version and standalone mode. This is the crash summary:
Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0xffffffffffffffff
UnrealEditor_CoreUObject!UStruct::IsChildOf() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Class.cpp:2202]
UnrealEditor_CharacterSelector_1!ACharacterSelectorMode_2::ACharacterSelectorMode_2() [C:\Users\pc\Documents\UnrealProjects\CafeEntrance_2\Plugins\CharacterSelector_1\Source\CharacterSelector_1\Private\CharacterSelectorMode_2.cpp:28]
UnrealEditor_CoreUObject!StaticConstructObject_Internal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:3522]
UnrealEditor_Engine!NewObject<AActor>() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Public\UObject\UObjectGlobals.h:1405]
UnrealEditor_Engine!UWorld::SpawnActor() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\LevelActor.cpp:658]
UnrealEditor_Engine!UWorld::SpawnActor() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\LevelActor.cpp:438]
UnrealEditor_Engine!UGameInstance::CreateGameModeForURL() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\GameInstance.cpp:1382]
UnrealEditor_Engine!UWorld::SetGameMode() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\World.cpp:4702]
UnrealEditor_Engine!UEngine::LoadMap() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\UnrealEngine.cpp:14120]
UnrealEditor_Engine!UEngine::Browse() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\UnrealEngine.cpp:13412]
UnrealEditor_Engine!UEngine::TickWorldTravel() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\UnrealEngine.cpp:13610]
UnrealEditor_Engine!UGameEngine::Tick() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\GameEngine.cpp:1820]
UnrealEditor!FEngineLoop::Tick() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp:5215]
UnrealEditor!GuardedMain() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Launch.cpp:183]
UnrealEditor!GuardedMainWrapper() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:147]
UnrealEditor!LaunchWindowsStartup() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:283]
UnrealEditor!WinMain() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:330]
UnrealEditor!__scrt_common_main_seh() [d:\a01\_work\6\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
kernel32
ntdll
The summary shows the line 28 of my CharacterSelectorMode_2.cpp
. These are my codes without my (not English) comments and the line should be if (SelectedCharacterClass->IsValidLowLevel())
(I marked below):
// CharacterSelector_1
#include "CharacterSelectorMode_2.h" // ACharacterSelectorMode_2
#include "CharacterSelectorGameInstance_1.h" // UCharacterSelectorGameInstance_1
#include "CharacterSelectorAlias_1.h" // CharacterClass_t
// CoreUObject
#include "UObject/ObjectPtr.h" // TObjectPtr
#include "Templates/SubclassOf.h" // TSubclassOf
// engine
#include "Kismet/GameplayStatics.h" // UGameplayStatics
// constructor
ACharacterSelectorMode_2::ACharacterSelectorMode_2(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
const TObjectPtr<UCharacterSelectorGameInstance_1>& SelectorGameInstance{
Cast<UCharacterSelectorGameInstance_1>(UGameplayStatics::GetGameInstance(GetWorld())) };
if (SelectorGameInstance->IsValidLowLevel())
{
const TSubclassOf<CharacterClass_t>& SelectedCharacterClass{ SelectorGameInstance->SelectedCharacterClass };
// THIS LINE CRASHES
if (SelectedCharacterClass->IsValidLowLevel())
{
DefaultPawnClass = SelectedCharacterClass;
}
}
}
The SelectedCharacterClass
is (marked) in the CharacterSelectorGameInstance_1.h
:
#pragma once
// engine
#include "Engine/GameInstance.h" // UGameInstance
// CharacterSelector_1
#include "CharacterSelectorAlias_1.h" // CharacterClass_t
//
#include "CharacterSelectorGameInstance_1.generated.h"
UCLASS()
class CHARACTERSELECTOR_1_API UCharacterSelectorGameInstance_1 : public UGameInstance
{
GENERATED_BODY()
public:
// THIS IS IT
static inline TSubclassOf<CharacterClass_t> SelectedCharacterClass{ CharacterClass_t::StaticClass() };
};
In short, the game starts at a level, then I open another level which uses the ACharacterSelectorMode_2
game mode.
This is the crash report files:
UECC-Windows-0CD6D7CC4E026419F22491A0B4A550CD_0000.zip (164.6 KB)