[4.5.1] Compiling interface blueprint will always crash

It is certainly possible to have two (or more) Blueprints communicate data back and forth between each other without running into a circular reference.

I did a quick set up this morning where I have a character run into a pickup which causes the character Blueprint to call a function in the pickup’s Blueprint.

The function in the pickup Blueprint takes the character’s current health value and, depending on that value, adds an additional amount of health, then calls a function on the character to update the character’s health.

The function on the character checks to make sure the new health value is not greater than the character’s maximum health value.

Finally, the character destroys the pickup that it collided with (in the character event graph).

No circular reference occurs in this instance (though when you compile one of the Blueprints the other one is marked as dirty and indicates that it needs to be recompiled, but it will work correctly). Admittedly, this is a fairly simple setup, but it should be possible to do the same for more complex situations if it is planned carefully.

We are still working on making Blueprints more robust in these situations as well. The number of problems that are being seen currently will start to decrease in upcoming releases of the Engine, and hopefully disappear entirely.

I am still working on reproducing the original crash involving interfaces. I might see if I can modify this setup that I created to force a circular dependency and add interfaces to try to reproduce the crash you initially described.