Neos-Metaverse / NeosPublic

A public issue/wiki only repository for the NeosVR project
195 stars 9 forks source link

Setting the reference of a LogiX node into one of its' own inputs causes an instant crash. #1324

Open BlueCyro opened 3 years ago

BlueCyro commented 3 years ago

I know this is a known issue, but a check to make sure that this never happens would be good, as this crashing can be easily automated via other LogiX. I've seen a button going around that crashes you if you touch it that uses this method exactly.

shiftyscales commented 3 years ago

This is something that will be addressed in the optimizations that Frooxius is developing right now, preventing infinite loops from crashing.

If you are aware of any malicious use of that, I'd suggest treating it as a moderation issue and acting accordingly.

Enverex commented 3 years ago

Doesn't the Logix normally deactivate itself if something takes too long to process? My experience was that nodes go red and disable themselves if they lock you up for more than around 3 seconds.

H3BO3 commented 3 years ago

The loop bug is an internal overflow rather than a legitimate impulse operation taking too long. The two aren't related.

BlueCyro commented 3 years ago

@Enverex To clarify on what H3 is saying, it's as if you were able to say, take the output of an add node and plug it back into itself. This is invalid and it causes a hard crash. This is different from say, an impulse infinitely looping which is detectable and haltable once it happens.

Frooxius commented 3 years ago

LogiX references shouldn't generally be edited manually, especially right now. When you use the LogiX tooltip it'll prevent this from happening.

But like Shifty said, the new LogiX validation system will take care of this once it's in place, by performing the validation at lower level.

This specifically affects only value evaluation as well, Impulses are a different system (more akin to method calls), while evaluations are more like expressions. By plugging it into itself you're effectively making an expression that contains itself, which in most cases leads to infinite recursion.