My application receives OSC messages from a machine vision server.
The message can become REALLY big - thousands of floats - and when that happens the blueprint first hangs and after a while closes. After that, I find in the output log an “Infinite loop detected” warning.
I’m quite sure the problem arises because a new OSC message comes in before the old one’s processing completes, and ok, I have ways to deal with that.
But I’m curious: why does UE find an infinite loop?
How does UE detects infinite loops?
You might have a problem. Even hundreds of thousands of floats shouldn’t cause that warning.
UE counts the loops, and once it breaches the Maximum Loop Iteration Count, it’ll throw that error. The max is defaulted to a million- thousands shouldn’t even think of triggering it.
Ah, @rokenrock, the machine vision server generating the OSC messages is something I wrote several years ago in C++… going to UE and C++ is definitely in my plans, but before that I have to master UE (well… let’s say “come to an agreement with it” ).
For the moment I want to stick with BPs.
Definitely there’s a problem in my blueprint and I wanto to understand what it is - it’s not a performance issue, so I think I don’t need C++ for now.
The server sends a new message about 25 times per second.
My guess is my BP gets flooded if a new message arrives before the previous’ preocessing completed.
To prevent that I tried to put there a “boolean guard”, but it doesn’t seem to detect the problem - the guard never seems to trigger, even if the “infinite loop” thing get triggered.
BTW, thanks for your answer. I’ll tell you the story when I get to the bottom of it.
must be a guard that blueprint execution has behind scene. since your communicating with the server I’m assuming you are using some sort of async operation. which, when you have a lot of them in memory, waiting, maybe then you get over some internal limits.