-
-
Notifications
You must be signed in to change notification settings - Fork 22
Description
In Unreal 5.5, with a basic runtime/thread setup, if you run the Crime Scene ink snippet and make the first choice 22 times, you can reproduce this assert.
LogWindows: Windows GetLastError: The operation completed successfully. (0)
LogWindows: Error: === Critical error: ===
LogWindows: Error:
LogWindows: Error: Assertion failed: success [File:D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\inkcpp\Source\inkcpp\Private\ink\string_table.cpp] [Line: 44]
LogWindows: Error: Duplicate string pointer in the string_table. How is that possible?
LogWindows: Error:
LogWindows: Error:
LogWindows: Error: [Callstack] 0x00007ff8dfc6717e UnrealEditor-inkcpp.dll!ink::runtime::internal::string_table::create() [D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\inkcpp\Source\inkcpp\Private\ink\string_table.cpp:44]
LogWindows: Error: [Callstack] 0x00007ff8dfc74e78 UnrealEditor-inkcpp.dll!ink::runtime::choice::setup() [D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\inkcpp\Source\inkcpp\Private\ink\choice.cpp:26]
LogWindows: Error: [Callstack] 0x00007ff8dfc791b0 UnrealEditor-inkcpp.dll!ink::runtime::internal::runner_impl::step() [D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\inkcpp\Source\inkcpp\Private\ink\runner_impl.cpp:1144]
LogWindows: Error: [Callstack] 0x00007ff8dfc70792 UnrealEditor-inkcpp.dll!ink::runtime::internal::runner_impl::line_step() [D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\inkcpp\Source\inkcpp\Private\ink\runner_impl.cpp:698]
LogWindows: Error: [Callstack] 0x00007ff8dfc652fb UnrealEditor-inkcpp.dll!ink::runtime::internal::runner_impl::advance_line() [D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\inkcpp\Source\inkcpp\Private\ink\runner_impl.cpp:480]
LogWindows: Error: [Callstack] 0x00007ff8dfc6eaaf UnrealEditor-inkcpp.dll!ink::runtime::internal::runner_impl::getline() [D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\inkcpp\Source\inkcpp\Private\ink\runner_impl.cpp:464]
LogWindows: Error: [Callstack] 0x00007ff8dfc5be84 UnrealEditor-inkcpp.dll!UInkThread::ExecuteInternal() [D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\inkcpp\Source\inkcpp\Private\InkThread.cpp:114]
LogWindows: Error: [Callstack] 0x00007ff8dfc5bac2 UnrealEditor-inkcpp.dll!UInkThread::Execute() [D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\inkcpp\Source\inkcpp\Private\InkThread.cpp:210]
LogWindows: Error: [Callstack] 0x00007ff8dfc639e9 UnrealEditor-inkcpp.dll!AInkRuntime::Tick() [D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\inkcpp\Source\inkcpp\Private\InkRuntime.cpp:109]
LogWindows: Error: [Callstack] 0x00007ffa35ede8d7 KERNEL32.DLL!UnknownFunction []
LogWindows: Error:
LogExit: Executing StaticShutdownAfterError
LogWindows: FPlatformMisc::RequestExit(1, LaunchWindowsStartup.ExceptionHandler)
LogWindows: FPlatformMisc::RequestExitWithStatus(1, 3, LaunchWindowsStartup.ExceptionHandler)
LogCore: Engine exit requested (reason: Win RequestExit)
From what I can tell, it is not a duplicate string pointer but the string_table's array has reached its max size of 100 so _table.size() hits 100, returns false on insert and triggers the assert.
This seems to be happening because of choices. It looks like eval stack never "releases" the choices that are pushed into it. The _strings string_table marks them as still used, keeps accumulating them and eventually reaches it max size and causes the assert.
I didn't run into this problem with The Intercept so I'm thinking the murder scene story's structure of jumping to the top label over and over could be why this is happening.