UEditorUtilityWidgetBlueprint has state (RegistrationName, CreatedUMGWidget) that assumes a single registration at any time, when in fact multiple tabs can be registered and concurrently sharing this object
UEditorUtilityWidgetBlueprint has state (RegistrationName, CreatedUMGWidget) that assumes a single registration at any time, when in fact multiple tabs can be registered and concurrently sharing this object
Steps to Reproduce
Launch an EUW from the Content Browser ( context menu )
Open the same EUW's asset editor
Launch the EUW from the "Run Utility Widget" button
You now have 2 tabs each with their own UEditorUtilityWidget instance, however they are both registered in the UEditorUtilitySubsystem's RegisteredTabs with the same UEditorUtilityWidgetBlueprint object and that object has members like RegistrationName and CreatedUMGWidget that assume single registration.
So for example, when the 2nd EUW was launched from "Run Utility Widget" and CreateUtilityWidget() was called, it went ahead and moved the CreatedUMGWidget to the transient package thinking that it was releasing that object for GC. However, that widget is still alive and well in the other tab launched from the CB, so now it is in the transient package instead of having the Editor UWorld as owning object.
Have Comments or More Details?
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-234987 in the post.