Crash on latest UE5-Main (UE5.8/9) #508

Open
opened 2026-05-01 15:42:50 +02:00 by Aleman-sein-Vater · 9 comments
Aleman-sein-Vater commented 2026-05-01 15:42:50 +02:00 (Migrated from github.com)

Epic changed a few things for UE5.8 that haven't been implemented yet
1.) They Changed UEnum via adding EUnderlyingType UnderlyingType to it which you can see here:
https://github.com/EpicGames/UnrealEngine/blob/ue5-main/Engine/Source/Runtime/CoreUObject/Public/UObject/Class.h#L3657

&

github.com/EpicGames/UnrealEngine@1177295756 (diff-329cc0ff6f)

I've crashed here but i've managed to "fix" it via changing InializeUEnumSettings to this

// This function assumes that the EnumObj passed in is valid and that the values of the enum are starting at 0
void InializeUEnumSettings(const void* EnumObj, const uint32_t UEnumNumValuesOffset)
{
	Settings::Internal::bIsNewUE5EnumNamesContainer = true;
	return;
}

and making OffsetFinder::FindEnumNamesOffset return UEnumNumValuesOffset - 2 * sizeof(void*); instead of the previous UEnumNumValuesOffset - sizeof(void*); (not sure if this is correct)

Callstack:

Dumper_7!InializeUEnumSettings() [C:\Users\alman\source\repos\Dumper-7\Dumper\Engine\Private\OffsetFinder\OffsetFinder.cpp:626]
Dumper_7!OffsetFinder::FindEnumNamesOffset() [C:\Users\alman\source\repos\Dumper-7\Dumper\Engine\Private\OffsetFinder\OffsetFinder.cpp:668]
Dumper_7!Off::Init() [C:\Users\alman\source\repos\Dumper-7\Dumper\Engine\Private\OffsetFinder\Offsets.cpp:362]
Dumper_7!Generator::InitEngineCore() [C:\Users\alman\source\repos\Dumper-7\Dumper\Generator\Private\Generators\Generator.cpp:38]
Dumper_7!MainThread() [C:\Users\alman\source\repos\Dumper-7\Dumper\Main.cpp:37]

2.) Epic Deprecated FField's FlagsPrivate
see:
https://github.com/EpicGames/UnrealEngine/blob/ue5-main/Engine/Source/Runtime/CoreUObject/Public/UObject/Field.h#L655

&

github.com/EpicGames/UnrealEngine@afe5cdf746 (diff-360c0af9b4)

Now i haven't managed to fix this myself, because Epic recommends using FProperty's PropertyFlags but im not sure how to implement this change myself

FYI i changed my FFieldClass::ClassFlags to 0x18 to match the latest layout

Callstack:

Dumper_7!PackageManagerUtils::GetPropertyDependency() [C:\Users\alman\source\repos\Dumper-7\Dumper\Generator\Private\Managers\PackageManager.cpp:127]
Dumper_7!PackageManagerUtils::GetDependencies() [C:\Users\alman\source\repos\Dumper-7\Dumper\Generator\Private\Managers\PackageManager.cpp:179]
Dumper_7!PackageManager::InitDependencies() [C:\Users\alman\source\repos\Dumper-7\Dumper\Generator\Private\Managers\PackageManager.cpp:271]
Dumper_7!Generator::InitInternal() [C:\Users\alman\source\repos\Dumper-7\Dumper\Generator\Private\Generators\Generator.cpp:58]
Dumper_7!MainThread() [C:\Users\alman\source\repos\Dumper-7\Dumper\Main.cpp:39]

Crash Dump:
UEMinidump.dmp

This 2nd Crash seems related to: https://github.com/Encryqed/Dumper-7/issues/507

Epic changed a few things for UE5.8 that haven't been implemented yet 1.) They Changed UEnum via adding `EUnderlyingType UnderlyingType` to it which you can see here: https://github.com/EpicGames/UnrealEngine/blob/ue5-main/Engine/Source/Runtime/CoreUObject/Public/UObject/Class.h#L3657 & https://github.com/EpicGames/UnrealEngine/commit/1177295756557c53e4c24892be2cec5ae3c6a7e0#diff-329cc0ff6f14cdf71517ca65103ac0728c6e4411cb69ab9575fda2ca769b76eb I've crashed here but i've managed to "fix" it via changing `InializeUEnumSettings` to this ```cpp // This function assumes that the EnumObj passed in is valid and that the values of the enum are starting at 0 void InializeUEnumSettings(const void* EnumObj, const uint32_t UEnumNumValuesOffset) { Settings::Internal::bIsNewUE5EnumNamesContainer = true; return; } ``` and making `OffsetFinder::FindEnumNamesOffset` return `UEnumNumValuesOffset - 2 * sizeof(void*);` instead of the previous `UEnumNumValuesOffset - sizeof(void*);` (not sure if this is correct) Callstack: ``` Dumper_7!InializeUEnumSettings() [C:\Users\alman\source\repos\Dumper-7\Dumper\Engine\Private\OffsetFinder\OffsetFinder.cpp:626] Dumper_7!OffsetFinder::FindEnumNamesOffset() [C:\Users\alman\source\repos\Dumper-7\Dumper\Engine\Private\OffsetFinder\OffsetFinder.cpp:668] Dumper_7!Off::Init() [C:\Users\alman\source\repos\Dumper-7\Dumper\Engine\Private\OffsetFinder\Offsets.cpp:362] Dumper_7!Generator::InitEngineCore() [C:\Users\alman\source\repos\Dumper-7\Dumper\Generator\Private\Generators\Generator.cpp:38] Dumper_7!MainThread() [C:\Users\alman\source\repos\Dumper-7\Dumper\Main.cpp:37] ``` 2.) Epic Deprecated FField's `FlagsPrivate` see: https://github.com/EpicGames/UnrealEngine/blob/ue5-main/Engine/Source/Runtime/CoreUObject/Public/UObject/Field.h#L655 & https://github.com/EpicGames/UnrealEngine/commit/afe5cdf7461c470e9f53bb76d6283330a586396b#diff-360c0af9b4fdb9df4d0f27607f46ef7b4249f1879b3716e28838bb0784a0342c Now i haven't managed to fix this myself, because Epic recommends using FProperty's `PropertyFlags` but im not sure how to implement this change myself FYI i changed my `FFieldClass::ClassFlags` to 0x18 to match the latest layout Callstack: ``` Dumper_7!PackageManagerUtils::GetPropertyDependency() [C:\Users\alman\source\repos\Dumper-7\Dumper\Generator\Private\Managers\PackageManager.cpp:127] Dumper_7!PackageManagerUtils::GetDependencies() [C:\Users\alman\source\repos\Dumper-7\Dumper\Generator\Private\Managers\PackageManager.cpp:179] Dumper_7!PackageManager::InitDependencies() [C:\Users\alman\source\repos\Dumper-7\Dumper\Generator\Private\Managers\PackageManager.cpp:271] Dumper_7!Generator::InitInternal() [C:\Users\alman\source\repos\Dumper-7\Dumper\Generator\Private\Generators\Generator.cpp:58] Dumper_7!MainThread() [C:\Users\alman\source\repos\Dumper-7\Dumper\Main.cpp:39] ``` Crash Dump: [UEMinidump.dmp](https://github.com/user-attachments/files/27276882/UEMinidump.dmp) This 2nd Crash seems related to: https://github.com/Encryqed/Dumper-7/issues/507
Fischsalat commented 2026-05-04 22:16:56 +02:00 (Migrated from github.com)

Thanks for the detailed issue. I added support for the new UEnum::UnderlayingType member, if you'd like to test that feel free to use the EnumTest branch. I didn't fix any crashes yet, for that I need more information, most preferably a testgame.

Thanks for the detailed issue. I added support for the new `UEnum::UnderlayingType` member, if you'd like to test that feel free to use the [EnumTest branch](https://github.com/Encryqed/Dumper-7/tree/EnumTest). I didn't fix any crashes yet, for that I need more information, most preferably a testgame.
Aleman-sein-Vater commented 2026-05-04 23:56:54 +02:00 (Migrated from github.com)

Thanks
I'll give it a shot once I have the time to try
Gonna report back my findings

Thanks I'll give it a shot once I have the time to try Gonna report back my findings
Aleman-sein-Vater commented 2026-05-10 15:09:17 +02:00 (Migrated from github.com)

Sorry for the long wait, but i've been cloning & compiling the latest UE5-Main (UE5.9?) version
so you can do some testing

You can download it here

I've shipped the PDB, so debugging crashes should be easier

None of the Signatures seem to find the GUObjectArray, you can find it at the symbol ?GUObjectArray@@3VFUObjectArray@@A

The EnumTest branch seems to work, but i couldn't actually get to the stage of dumping

If you instantly crash, try launching with the -dx11 argument

Sorry for the long wait, but i've been cloning & compiling the latest UE5-Main (UE5.9?) version so you can do some testing You can download it [here](https://drive.google.com/file/d/1-rh3gDLkkkYXrJQA5PrA7s4JoU5K5nIc/view?usp=sharing) I've shipped the PDB, so debugging crashes should be easier None of the Signatures seem to find the GUObjectArray, you can find it at the symbol `?GUObjectArray@@3VFUObjectArray@@A` The [EnumTest branch](https://github.com/Encryqed/Dumper-7/tree/EnumTest) _seems_ to work, but i couldn't actually get to the stage of dumping If you instantly crash, try launching with the `-dx11` argument
Fischsalat commented 2026-05-12 19:28:27 +02:00 (Migrated from github.com)

I fixed a few bugs, the branch should work now.

I fixed a few bugs, the branch should work now.
Aleman-sein-Vater commented 2026-05-14 13:17:35 +02:00 (Migrated from github.com)

I've overridden InitEngineCore to this:

void Generator::InitEngineCore()
{
                                                            // Yes this is the correct RVA/Offset
	const uintptr_t GObjects = Platform::GetModuleBase(NULL) + 0x132CC6C0 + 0x10;
	std::cerr << "GObjects Address: 0x" << std::hex << GObjects << "\n";

	ObjectArray::Init(0x132CC6C0, 0x10000); // FChunkedFixedUObjectArray (UEVersion >= UE4.21)

	FName::Init(Off::InSDK::Name::AppendNameToString, FName::EOffsetOverrideType::AppendString, false);
	CALL_PLATFORM_SPECIFIC_FUNCTION(FName::Init);

	Off::Init();
	PropertySizes::Init();

	CALL_PLATFORM_SPECIFIC_FUNCTION(Off::InSDK::ProcessEvent::InitPE); // Must be at this position, relies on offsets initialized in Off::Init()

	Off::InSDK::World::InitGWorld(); // Must be at this position, relies on offsets initialized in Off::Init()

	Off::InSDK::Text::InitTextOffsets(); // Must be at this position, relies on offsets initialized in Off::InitPE()

	InitSettings();
}

Yet it infinitely gets stuck after FName::AppendString Offset 0x1CB4960

Initializing [Dumper-7]
Started Generation [Dumper-7]!
GObjects Address: 0x7ff69031c6d0
Overwrote FChunkedFixedUObjectArray GObjects to offset 0x132cc6c0

Off::InSDK::ObjArray::FUObjectItemSize: 20

Manual-Override: FName::AppendString --> Offset 0x1CB4960

Hardcoded FName::AppendString Offset 0x1CB4960

Not sure what i've done wrong, but your fixes seem to be working if i could get past this

I've overridden `InitEngineCore` to this: ```cpp void Generator::InitEngineCore() { // Yes this is the correct RVA/Offset const uintptr_t GObjects = Platform::GetModuleBase(NULL) + 0x132CC6C0 + 0x10; std::cerr << "GObjects Address: 0x" << std::hex << GObjects << "\n"; ObjectArray::Init(0x132CC6C0, 0x10000); // FChunkedFixedUObjectArray (UEVersion >= UE4.21) FName::Init(Off::InSDK::Name::AppendNameToString, FName::EOffsetOverrideType::AppendString, false); CALL_PLATFORM_SPECIFIC_FUNCTION(FName::Init); Off::Init(); PropertySizes::Init(); CALL_PLATFORM_SPECIFIC_FUNCTION(Off::InSDK::ProcessEvent::InitPE); // Must be at this position, relies on offsets initialized in Off::Init() Off::InSDK::World::InitGWorld(); // Must be at this position, relies on offsets initialized in Off::Init() Off::InSDK::Text::InitTextOffsets(); // Must be at this position, relies on offsets initialized in Off::InitPE() InitSettings(); } ``` Yet it infinitely gets stuck after `FName::AppendString Offset 0x1CB4960` ``` Initializing [Dumper-7] Started Generation [Dumper-7]! GObjects Address: 0x7ff69031c6d0 Overwrote FChunkedFixedUObjectArray GObjects to offset 0x132cc6c0 Off::InSDK::ObjArray::FUObjectItemSize: 20 Manual-Override: FName::AppendString --> Offset 0x1CB4960 Hardcoded FName::AppendString Offset 0x1CB4960 ``` Not sure what i've done wrong, but your fixes seem to be working if i could get past this
Fischsalat commented 2026-05-15 21:15:58 +02:00 (Migrated from github.com)

what if you just force GNames, instead of overriding AppendString?

what if you just force GNames, instead of overriding AppendString?
Aleman-sein-Vater commented 2026-05-15 21:51:23 +02:00 (Migrated from github.com)

what if you just force GNames, instead of overriding AppendString?

Doing the Following:

void Generator::InitEngineCore()
{
	const uintptr_t GObjects = Platform::GetModuleBase(NULL) + 0x132CC6C0 + 0x10;
	std::cerr << "GObjects Address: 0x" << std::hex << GObjects << "\n";

	ObjectArray::Init(0x132CC6C0, 0x10000); // FChunkedFixedUObjectArray (UEVersion >= UE4.21)

        // RVA/Offset of NamePoolData
	FName::Init(0x131F1380, FName::EOffsetOverrideType::GNames, true);
	CALL_PLATFORM_SPECIFIC_FUNCTION(FName::Init);

	Off::Init();
	PropertySizes::Init();

	CALL_PLATFORM_SPECIFIC_FUNCTION(Off::InSDK::ProcessEvent::InitPE); // Must be at this position, relies on offsets initialized in Off::Init()

	Off::InSDK::World::InitGWorld(); // Must be at this position, relies on offsets initialized in Off::Init()

	Off::InSDK::Text::InitTextOffsets(); // Must be at this position, relies on offsets initialized in Off::InitPE()

	InitSettings();
}

still gets me stuck on

Initializing [Dumper-7]
Started Generation [Dumper-7]!
GObjects Address: 0x7ff63ab5c6d0
Overwrote FChunkedFixedUObjectArray GObjects to offset 0x132cc6c0

Off::InSDK::ObjArray::FUObjectItemSize: 20

Overwrote offset: 'FNamePool GNames' set as offset 0x131F1380

Found FName::AppendString at Offset 0x1CB4960

i might be getting stuck in FNameEntry::Init or similar..?

> what if you just force GNames, instead of overriding AppendString? Doing the Following: ```cpp void Generator::InitEngineCore() { const uintptr_t GObjects = Platform::GetModuleBase(NULL) + 0x132CC6C0 + 0x10; std::cerr << "GObjects Address: 0x" << std::hex << GObjects << "\n"; ObjectArray::Init(0x132CC6C0, 0x10000); // FChunkedFixedUObjectArray (UEVersion >= UE4.21) // RVA/Offset of NamePoolData FName::Init(0x131F1380, FName::EOffsetOverrideType::GNames, true); CALL_PLATFORM_SPECIFIC_FUNCTION(FName::Init); Off::Init(); PropertySizes::Init(); CALL_PLATFORM_SPECIFIC_FUNCTION(Off::InSDK::ProcessEvent::InitPE); // Must be at this position, relies on offsets initialized in Off::Init() Off::InSDK::World::InitGWorld(); // Must be at this position, relies on offsets initialized in Off::Init() Off::InSDK::Text::InitTextOffsets(); // Must be at this position, relies on offsets initialized in Off::InitPE() InitSettings(); } ``` still gets me stuck on ``` Initializing [Dumper-7] Started Generation [Dumper-7]! GObjects Address: 0x7ff63ab5c6d0 Overwrote FChunkedFixedUObjectArray GObjects to offset 0x132cc6c0 Off::InSDK::ObjArray::FUObjectItemSize: 20 Overwrote offset: 'FNamePool GNames' set as offset 0x131F1380 Found FName::AppendString at Offset 0x1CB4960 ``` i might be getting stuck in `FNameEntry::Init` or similar..?
Fischsalat commented 2026-05-15 23:10:19 +02:00 (Migrated from github.com)

Oh, you're calling it twice. You're only supposed to call the version with the override if you're overwriting the offset. If the generator finds GNames by itself simply passing true to the function should be fine.

Oh, you're calling it twice. You're only supposed to call the version with the override if you're overwriting the offset. If the generator finds GNames by itself simply passing `true` to the function should be fine.
Aleman-sein-Vater commented 2026-05-16 00:29:22 +02:00 (Migrated from github.com)

Ah i see, changing that didn't fix it though

Initializing [Dumper-7]
Started Generation [Dumper-7]!
GObjects Address: 0x7ff67175c6d0
Overwrote FChunkedFixedUObjectArray GObjects to offset 0x132cc6c0

Off::InSDK::ObjArray::FUObjectItemSize: 20



Could not find GNames!




Could not find GNames!


Found FName::ToString at Offset 0x1CB4960



Could not find GNames!

and doing FName::Init(0x131F1380, FName::EOffsetOverrideType::GNames, true);

just gets me stuck at

Initializing [Dumper-7]
Started Generation [Dumper-7]!
GObjects Address: 0x7ff67175c6d0
Overwrote FChunkedFixedUObjectArray GObjects to offset 0x132cc6c0

Off::InSDK::ObjArray::FUObjectItemSize: 20

Overwrote offset: 'FNamePool GNames' set as offset 0x131F1380

This is my current Init

void Generator::InitEngineCore()
{
	ObjectArray::Init(0x132CC6C0, 0x10000); // FChunkedFixedUObjectArray (UEVersion >= UE4.21)

	FName::Init(0x131F1380, FName::EOffsetOverrideType::GNames, true);

	Off::Init();
	PropertySizes::Init();

	CALL_PLATFORM_SPECIFIC_FUNCTION(Off::InSDK::ProcessEvent::InitPE); // Must be at this position, relies on offsets initialized in Off::Init()

	Off::InSDK::World::InitGWorld(); // Must be at this position, relies on offsets initialized in Off::Init()

	Off::InSDK::Text::InitTextOffsets(); // Must be at this position, relies on offsets initialized in Off::InitPE()

	InitSettings();
}
Ah i see, changing that didn't fix it though ``` Initializing [Dumper-7] Started Generation [Dumper-7]! GObjects Address: 0x7ff67175c6d0 Overwrote FChunkedFixedUObjectArray GObjects to offset 0x132cc6c0 Off::InSDK::ObjArray::FUObjectItemSize: 20 Could not find GNames! Could not find GNames! Found FName::ToString at Offset 0x1CB4960 Could not find GNames! ``` and doing `FName::Init(0x131F1380, FName::EOffsetOverrideType::GNames, true);` just gets me stuck at ``` Initializing [Dumper-7] Started Generation [Dumper-7]! GObjects Address: 0x7ff67175c6d0 Overwrote FChunkedFixedUObjectArray GObjects to offset 0x132cc6c0 Off::InSDK::ObjArray::FUObjectItemSize: 20 Overwrote offset: 'FNamePool GNames' set as offset 0x131F1380 ``` This is my current Init ```cpp void Generator::InitEngineCore() { ObjectArray::Init(0x132CC6C0, 0x10000); // FChunkedFixedUObjectArray (UEVersion >= UE4.21) FName::Init(0x131F1380, FName::EOffsetOverrideType::GNames, true); Off::Init(); PropertySizes::Init(); CALL_PLATFORM_SPECIFIC_FUNCTION(Off::InSDK::ProcessEvent::InitPE); // Must be at this position, relies on offsets initialized in Off::Init() Off::InSDK::World::InitGWorld(); // Must be at this position, relies on offsets initialized in Off::Init() Off::InSDK::Text::InitTextOffsets(); // Must be at this position, relies on offsets initialized in Off::InitPE() InitSettings(); } ```
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
software-migration-backups/Dumper-7-17-05-2026#508
No description provided.