Th3Fanbus / LinearCouponCost

Satisfactory mod that makes AWESOME Sink coupons cost the same amount of sink points
https://ficsit.app/mod/LinearCouponCost
0 stars 0 forks source link

Bug Report - AWESOME Sink Overflows with Extra Coupons #1

Open bamboo98 opened 2 months ago

bamboo98 commented 2 months ago

Description: After installing the MOD, I recycled some DNA packaging and materials, exchanging them for about 500 coupons. Upon loading the save the next day, the AWESOME Sink displayed over 66,000 redeemable coupons (which I'm certain I didn't provide corresponding items for; they appeared out of thin air). I refrained from claiming these extra coupons and saved the game. Upon attempting to load the latest save again, the game froze and crashed approximately 1 second after entering. Uninstalling the MOD allowed for normal loading of the save.

Attached below is the call stack from the game crash. Thank you for your assistance.

Version: 273254, IsEditor: No, IsPerforceBuild: No, BuildConfiguration: Shipping, Launcher: Steam, NetMode: Listen Server, IsUsingMods: Yes, IsSaveGameEdited: No

Assertion failed: Index >= 0 && Index < MaxElements [File:C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\CoreUObject\Public\UObject\UObjectArray.h] [Line: 388]

FactoryGame_CoreUObject_Win64_Shipping!FChunkedFixedUObjectArray::AddRange() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\CoreUObject\Public\UObject\UObjectArray.h:550] FactoryGame_CoreUObject_Win64_Shipping!FUObjectArray::AllocateUObjectIndex() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectArray.cpp:229] FactoryGame_CoreUObject_Win64_Shipping!UObjectBase::AddObject() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectBase.cpp:222] FactoryGame_CoreUObject_Win64_Shipping!StaticAllocateObject() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:3423] FactoryGame_CoreUObject_Win64_Shipping!StaticConstructObject_Internal() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:4321] FactoryGame_DSTelemetry_Win64_Shipping!UDJSONObject::CreateJSONObject() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Plugins\DSTelemetry\Source\DSTelemetry\Private\DJSONObject.cpp:25] FactoryGame_FactoryGame_Win64_Shipping!AFGResourceSinkSubsystem::AddResourceSinkCoupons() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\FactoryGame\Source\FactoryGame\Private\FGResourceSinkSubsystem.cpp:340] FactoryGame_FactoryGame_Win64_Shipping!AFGResourceSinkSubsystem::CalculateLevel() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\FactoryGame\Source\FactoryGame\Private\FGResourceSinkSubsystem.cpp:512] FactoryGame_FactoryGame_Win64_Shipping!AFGResourceSinkSubsystem::Tick() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\FactoryGame\Source\FactoryGame\Private\FGResourceSinkSubsystem.cpp:176] FactoryGame_Engine_Win64_Shipping!AActor::TickActor() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\Engine\Private\Actor.cpp:1497] FactoryGame_Engine_Win64_Shipping!FActorTickFunction::ExecuteTick() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\Engine\Private\Actor.cpp:215] FactoryGame_Engine_Win64_Shipping!FTickFunctionTask::DoTask() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\Engine\Private\TickTaskManager.cpp:280] FactoryGame_Engine_Win64_Shipping!TGraphTask::ExecuteTask() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\Core\Public\Async\TaskGraphInterfaces.h:1315] FactoryGame_Core_Win64_Shipping!FNamedTaskThread::ProcessTasksUntilQuit() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:648] FactoryGame_Core_Win64_Shipping!FTaskGraphCompatibilityImplementation::WaitUntilTasksComplete() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:2123] FactoryGame_Engine_Win64_Shipping!FTickTaskSequencer::ReleaseTickGroup() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\Engine\Private\TickTaskManager.cpp:560] FactoryGame_Engine_Win64_Shipping!FTickTaskManager::RunTickGroup() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\Engine\Private\TickTaskManager.cpp:1595] FactoryGame_Engine_Win64_Shipping!UWorld::Tick() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\Engine\Private\LevelTick.cpp:1518] FactoryGame_Engine_Win64_Shipping!UGameEngine::Tick() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\Engine\Private\GameEngine.cpp:1795] FactoryGame_FactoryGame_Win64_Shipping!UFGGameEngine::Tick() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\FactoryGame\Source\FactoryGame\Private\FGGameEngine.cpp:15] FactoryGame_Win64_Shipping!FEngineLoop::Tick() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp:5873] FactoryGame_Win64_Shipping!GuardedMain() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\Launch\Private\Launch.cpp:188] FactoryGame_Win64_Shipping!GuardedMainWrapper() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:107] FactoryGame_Win64_Shipping!LaunchWindowsStartup() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:244] FactoryGame_Win64_Shipping!WinMain() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:284] FactoryGame_Win64_Shipping!__scrt_common_main_seh() [D:\a_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288] kernel32 ntdll

Th3Fanbus commented 2 months ago

Hi, thanks for the report!

Interesting, that's a max UObjects crash, you can use https://ficsit.app/mod/Th3UObjectCounter to know if you're close to hitting the limit.

I know there's a problem when reloading a save, as the points are wrongly calculated. I'm afraid I haven't gotten around to fixing it yet, I'll take a look once I've got some time.

bamboo98 commented 2 months ago

I might have found the cause of the crash.

I managed to successfully load the save after stopping the AWESOME Sink. Upon entering the game, it displayed "UObject Count: 23000/2162688". I believe this is a normal value?

Then, I opened the UI of the AWESOME Sink: "Printable coupons" = 66327, "Next coupon's standard point requirement" = -3186495500, "Next coupon's DNA point requirement" = -64900034000. After that, I fed an iron ore into the sink, and the game crashed. The reason for the game crashing one second after loading the save should be because I kept feeding resources into the sink.

Perhaps fixing the Sink points calculation could resolve this crash.

[C:\BuildAgent\work\607eee041ab2bfcf\UE4\Engine\Plugins\DSTelemetry\Source\DSTelemetry\Private\DJSONObject.cpp:25] FactoryGame_FactoryGame_Win64_Shipping!AFGResourceSinkSubsystem::AddResourceSinkCoupons() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\FactoryGame\Source\FactoryGame\Private\FGResourceSinkSubsystem.cpp:340] FactoryGame_FactoryGame_Win64_Shipping!AFGResourceSinkSubsystem::CalculateLevel() [C:\BuildAgent\work\607eee041ab2bfcf\UE4\FactoryGame\Source\FactoryGame\Private\FGResourceSinkSubsystem.cpp:512] FactoryGame_FactoryGame_Win64_Shipping!AFGResourceSinkSubsystem::Tick()

Th3Fanbus commented 2 months ago

I might have found the cause of the crash.

I managed to successfully load the save after stopping the AWESOME Sink. Upon entering the game, it displayed "UObject Count: 23000/2162688". I believe this is a normal value?

This is OK. If the counter goes yellow or red, it means it's getting close to the limit.

Then, I opened the UI of the AWESOME Sink: "Printable coupons" = 66327, "Next coupon's standard point requirement" = -3186495500, "Next coupon's DNA point requirement" = -64900034000. After that, I fed an iron ore into the sink, and the game crashed. The reason for the game crashing one second after loading the save should be because I kept feeding resources into the sink.

Perhaps fixing the Sink points calculation could resolve this crash.

I know it will. I just need time to do it.