Hot reload crashes editor when UPROPERTY value is changed

Most of the objects in my scene are blueprints based on a custom AActor subclass with the following structure:

AMyCustomActor
    |- UStaticMeshComponent (root)
        |- UMyCustomSceneComponent

I can add whatever code I like in the constructor of my custom USceneComponent (declare variables, print messages, and so on), and hot-reload works fine. As soon as I touch any of the UPROPERTY values in the constructor, however, hot-reload crashes with the following stacktrace:

http://pastebin.com/48ECapgF

If I compile with the editor closed, I have no issues or crashes at all and everything works as expected. It just seems that there’s a problem to do with refreshing the blueprints and/or the actors using them.

Hello, rohoon

Sorry to hear about the crash, but please note that Hot Reload should only be used for minor code changes, that don’t affect UPROPERTIES (UFUNCTIONS).

Thus, when you add/remove a function and change some Blueprint-exposed behavior, closing the editor and recompiling would be the correct solution.

Hope this helped!
Good luck!

Hi,

I should have phrased my question better. What I mean is this: If I have the class hierarchy I described before, then add the following line to the constructor the of the nested USceneComponent:

MySimpleIntProperty = 5;

From that point on, hot-reload will ALWAYS crash the editor. As long as that line of code exists in my project, hot-reload will never work again, even if the next change I make is to simply add whitespace or a comment somewhere…

On a side note, I would have thought that changing the default value of existing UPROPERTYs would have been a perfect use case for hot-reloading (and it certainly works in all other scenarios I’ve tested). In any case, surely there’s a better way for the editor to handle this than crashing with an Access Violation error.

,

I created a test project to demonstrate another bug, but it also demonstrates this hot-reload crash. Try making a whitespace-only change to the code and then recompile with the editor open.