PIE: Error: Infinite loop detected. Blueprint: LearningDirector Function: Outputs - Outputs is a Standard Macro.

Summary

UE5.8 is frequently throwing an Infinite Loop error when I attempt to do things. It’s telling me that it originates in the Standard Macros.

What Type of Bug are you experiencing?

Editor

Steps to Reproduce

I don’t know why it is or is not happening. I don’t know how to trigger or not trigger it. It’s unpredictable, sometimes happening when I change things and sometimes when I don’t.

Expected Result

It should run, obviously, without throwing an error that doesn’t exist. Or, barring that, it could give some kind of indication of where in the Begin Chase function it’s breaking. Or, barring that, it could give me SOMETHING to work with instead of just throwing a phantom error and crashing.

Observed Result

Behold, the crash report. I click the button I’ve made that activates the Begin Chase function, and it immediately crashes. It shows me an error that I’ve copied into the title of this bug report.

Affects Versions

5.8

Platform(s)

Windows

Upload an image

For crash reports, include your callstack

Script call stack:
Function /Game/Widgets/LearningControl.LearningControl_C:BndEvt__LearningControl_Chase_K2Node_ComponentBoundEvent_1_OnButtonClickedEvent__DelegateSignature
Function /Game/Widgets/LearningControl.LearningControl_C:ExecuteUbergraph_LearningControl
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Begin Chase
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector
Function /Game/LearningThing/LearningDirector.LearningDirector_C:Shuffle Positions
Function /Game/LearningThing/LearningDirector.LearningDirector_C:ExecuteUbergraph_LearningDirector

Additional Notes

Sometimes, it claims that the issue is coming from a For Loop. Sometimes, it claims it comes from Outputs. In both cases, it’s a Standard Macro that it directs me to.

In THIS case, there is a function that is calling itself in certain conditions.
This function shuffles the position of two units within a given range, and then each unit marks itself ‘ready.’ If there’s no ‘false’ bools in the ‘ready list,’ then everything should be ready, and it’ll start giving the chase commands.

Otherwise, it reshuffles the positions and tries again, until there’s no ‘false’ in the ready list. This isn’t an infinite loop.

That’s not a bug; if your branch is true, it enters an infinite loop :eyes:

Okay. I’ll explain how this works a little more:

Shuffle Positions randomizes the positions of specified characters, then initializes them. After initializing, the characters mark themselves as Ready in the Ready List. The Director checks whether they’re far enough away from each other, and if they are, it marks itself as Ready in the Ready List. There are two characters, and they’re only considered to be too close together if they’re within a couple hundred units of each other - despite having a three thousand unit field to work with. Running the Shuffle Positions function a few times at most gets them to generate far enough apart.

The call record shows that it’s only calling Shuffle Positions once, which is not what should be happening; if there’s a False in the Ready List, it should be running Shuffle Positions before running Begin Chase again. It’s not doing that, so it ends up in an infinite loop that’s only happening because it’s not running a function. Hadn’t actually realized that until now, or I’d have made a thread about that; I was very tired and extremely frustrated.

But, that is literally all beside the point. Whether there’s an infinite loop or not is not the problem I’m reporting here.

The problem that I’m reporting is that UE is telling me that the problem originates in UE’s own code, not the things I’ve made. If it’s accurate, then there’s something wrong with UE’s code. If it’s not, then there’s something wrong with UE’s code.

So I guess this is actually a couple bugs. But there’s definitely bugs.