Critical verse bug crashing the FN client

Please select what you are reporting on:

Verse

What Type of Bug are you experiencing?

Verse

Summary

A certain verse pattern seems to crash the fortnite client.

Steps to Reproduce

Add this code to your project and run a session. The cook will take a long until and eventually crash the client.

type_a := struct<computes> {
  Number: int
}

Type_a := module {
  Constant_of_type_a<public>: type_a = type_a { Number := 42 }
}

type_b := struct<computes> {
  Type_a_value : type_a
}

Module_b := module {
  Constant_of_type_b<public>: type_b = type_b { Type_a_value := Type_a.Constant_of_type_a }
}

Expected Result

This should just work and not crash the client, nor the editor (happens sometimes in a similar pattern, I’m still trying to isolate it).

Observed Result

Fortnite client is being crashed. A similar pattern seems to cause an editor crash during project loading. This issue could also potentially lead to content moderation warning as a false positive.

[2024.05.03-16.43.15:320][973]LogRHI: Display: FPipelineCacheFile User cache [key:FortniteGame_usr] opened 'FortniteGame'=0, filename FortniteGame, guid ... 
[2024.05.03-16.43.15:327][974]LogPackageLocalizationCache: Processed 1 localized package path(s) for 1 prioritized culture(s) in 0.000009 seconds
[2024.05.03-16.43.15:328][974]LogGameFeatures: Game feature '../../../FortniteGame/Plugins/GameFeatures/.../....uplugin' has no BuiltInInitialFeatureState key, using legacy BuiltInAutoRegister(1)/BuiltInAutoLoad(1)/BuiltInAutoActivate(0) values to arrive at initial state.
[2024.05.03-16.43.15:328][974]LogStreaming: Display: FlushAsyncLoading(116120): 1 QueuedPackages, 0 AsyncPackages
[2024.05.03-16.43.15:403][974]LogProperty: Error: Struct type unknown for property 'StructProperty /.../_Verse/type_b.type_b:__verse_0x005E694B_Type_a_value'; perhaps the USTRUCT() was renamed or deleted?
[2024.05.03-16.43.15:403][974]LogProperty: Error: Struct type unknown for property 'StructProperty /.../_Verse/_Root._c596e0334135b327ebd9fda7433f703b:VERSE_DEAD_type_a_0$Factory:RetVal'; perhaps the USTRUCT() was renamed or deleted?
[2024.05.03-16.43.15:403][974]LogProperty: Error: Struct type unknown for property 'StructProperty /.../_Verse/_Root._c596e0334135b327ebd9fda7433f703b:VERSE_DEAD_type_a_0$OverrideFactory:RetVal'; perhaps the USTRUCT() was renamed or deleted?
[2024.05.03-16.43.15:411][974]LogProperty: Error: Struct type unknown for property 'StructProperty /.../_Verse/type_a.type_a:$InitCDO:$ExprResult_0'; perhaps the USTRUCT() was renamed or deleted?
[2024.05.03-16.43.15:411][974]LogProperty: Error: Struct type unknown for property 'StructProperty /.../_Verse/type_a.type_a:$InitCDO:$ExprResult_3'; perhaps the USTRUCT() was renamed or deleted?
[2024.05.03-16.43.15:411][974]LogProperty: Error: Struct type unknown for property 'StructProperty /.../_Verse/type_a.type_a:__verse_0x4AB570E2_Constant_of_type_a'; perhaps the USTRUCT() was renamed or deleted?
[2024.05.03-16.43.15:986][974]LogThreadingWindows: Error: Runnable thread FAsyncLoadingThread crashed.
[2024.05.03-16.43.15:987][974]LogWindows: Error: === Critical error: ===
[2024.05.03-16.43.15:987][974]LogWindows: Error: 
[2024.05.03-16.43.15:987][974]LogWindows: Error: Fatal error!
[2024.05.03-16.43.15:987][974]LogWindows: Error: 
[2024.05.03-16.43.15:987][974]LogWindows: Error: Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000000
[2024.05.03-16.43.15:987][974]LogWindows: Error: 
[2024.05.03-16.43.15:987][974]LogWindows: Error: [Callstack] 0x00007ff79bce84dc FortniteClient-Win64-Shipping.exe!UnknownFunction []
[2024.05.03-16.43.15:987][974]LogWindows: Error: [Callstack] 0x00007ff79bce797c FortniteClient-Win64-Shipping.exe!UnknownFunction []
[2024.05.03-16.43.15:987][974]LogWindows: Error: [Callstack] 0x00007ff79bce42e3 FortniteClient-Win64-Shipping.exe!UnknownFunction []
[2024.05.03-16.43.15:987][974]LogWindows: Error: [Callstack] 0x00007ff79bce8507 FortniteClient-Win64-Shipping.exe!UnknownFunction []
[2024.05.03-16.43.15:987][974]LogWindows: Error: [Callstack] 0x00007ff79bce797c FortniteClient-Win64-Shipping.exe!UnknownFunction []
[2024.05.03-16.43.15:987][974]LogWindows: Error: [Callstack] 0x00007ff79be0f123 FortniteClient-Win64-Shipping.exe!UnknownFunction []
[2024.05.03-16.43.15:987][974]LogWindows: Error: [Callstack] 0x00007ff79be0f4f4 FortniteClient-Win64-Shipping.exe!UnknownFunction []
[2024.05.03-16.43.15:987][974]LogWindows: Error: [Callstack] 0x00007ff79c10bc34 FortniteClient-Win64-Shipping.exe!UnknownFunction []
[2024.05.03-16.43.15:987][974]LogWindows: Error: [Callstack] 0x00007ff79c10b3b4 FortniteClient-Win64-Shipping.exe!UnknownFunction []
[2024.05.03-16.43.15:987][974]LogWindows: Error: [Callstack] 0x00007ff79c107e2e FortniteClient-Win64-Shipping.exe!UnknownFunction []
[2024.05.03-16.43.15:987][974]LogWindows: Error: [Callstack] 0x00007ff79c10722b FortniteClient-Win64-Shipping.exe!UnknownFunction []
[2024.05.03-16.43.15:987][974]LogWindows: Error: [Callstack] 0x00007ff79c1076e5 FortniteClient-Win64-Shipping.exe!UnknownFunction []
[2024.05.03-16.43.15:987][974]LogWindows: Error: [Callstack] 0x00007ff79c098e6f FortniteClient-Win64-Shipping.exe!UnknownFunction []
[2024.05.03-16.43.15:987][974]LogWindows: Error: [Callstack] 0x00007ff79c098cd2 FortniteClient-Win64-Shipping.exe!UnknownFunction []
[2024.05.03-16.43.15:987][974]LogWindows: Error: [Callstack] 0x00007ffa27077344 KERNEL32.DLL!UnknownFunction []
[2024.05.03-16.43.15:987][974]LogWindows: Error: 
[2024.05.03-16.43.15:987][974]LogWindows: Error: Crash in runnable thread FAsyncLoadingThread
[2024.05.03-16.43.15:992][974]LogExit: Executing StaticShutdownAfterError
[2024.05.03-16.43.16:008][974]LogWindows: FPlatformMisc::RequestExit(1, FRunnableThreadWin::GuardedRun.ExceptionHandler)
[2024.05.03-16.43.16:008][974]LogWindows: FPlatformMisc::RequestExitWithStatus(1, 3, FRunnableThreadWin::GuardedRun.ExceptionHandler)
[2024.05.03-16.43.16:008][974]LogCore: Engine exit requested (reason: Win RequestExit)

Platform(s)

PC

The status of FORT-741589 incident has been moved from ‘Needs Triage’ to ‘To Do’.

There are two workaround to this problem:

  1. Rename Type_a := module.
  2. Change the second submodule’s constant into a function.

However none of these should be required in the first place.

PS: One thing that I haven’t tested is the actual call to any of the submodule constants.