Bug: Editor crashes on launch when a UDataTable is changed

Editor Version: 4.7.0

OS: Win7 64-bit

I was able to trace an editor crash down to one blueprint in my project. If I delete it from my game, the editor launches. If I add it, the editor crashes. The blueprint itself worked before I changed the underlying C++ code it relies on. The blueprint has a node which contains a reference to a UDataTable I created.

Here is a high level view of what I did to cause the crash:

  1. Create a struct to contain CSV data (inherit from FTableRowBase)
  2. Create a CSV file which will be used to import data into the struct
  3. Build the project, open the editor, import the CSV file, load the data into the game
  4. Create a widget blueprint which references and uses the CSV data. Verify that this works.

Now, to crash the editor:

  1. Don’t change your widget blueprint at all. Shut down the editor and go back to the C++ code.
  2. Modify the struct by deleting a few properties and adding a few more.
  3. Modify your CSV file to match the properties in your struct
  4. At this point, the blueprint which relies on this struct is out of date and needs to be updated. No big deal, right? Launch the editor.
  5. Delete the old CSV data object. You may have to manually delete the old data object through windows explorer if the editor crashes on load.
  6. Import the new CSV data object and use the modified struct as the CSV template
  7. If you haven’t crashed yet: Try to open the blueprint which used your old CSV data. We’re trying to delete the old CSV data object reference so that we can update it with the new one, but we never get this far.

If the outdated widget blueprint is in the content folders on launch, the editor crashes. If the widget blueprint is not in the content folders on launch, the editor will launch. If you open the content directories in windows explorer and manually copy the widget blueprint into the content folders, the asset shows up. However, when you right click the asset or double click on it, the editor will try to load it and crash.

what should happen:
The editor complains about an outdated data table in the blueprint within the error log. You can open up the blueprint, but the invalid nodes are grayed out and disabled & disconnected.

Crash Output Log

[2015.03.24-18.07.56:346][  0]LogProperty:Error: UStructProperty::Serialize Loading: Property 'StructProperty /Game/Assets/GUI/Strategic/Strategic_GarrisonUI.Strategic_GarrisonUI_C:ExecuteUbergraph_Strategic_GarrisonUI.CallFunc_Array_Get_Item'. Unknown structure.
[2015.03.24-18.07.56:346][  0]LogProperty:Error: UStructProperty::Serialize Loading: Property 'StructProperty /Game/Assets/GUI/Strategic/Strategic_GarrisonUI.Strategic_GarrisonUI_C:ExecuteUbergraph_Strategic_GarrisonUI.CallFunc_GetAllUnits_OutCreatureData.CallFunc_GetAllUnits_OutCreatureData'. Unknown structure.

My widget blueprint which causes the crash:

Strategic_GarrisonUI.uasset

Hi Slayemin,

I tried to replicate the issue that you described using 4.7.0 built from source code, but was unable to see a crash occur. I was left with a Blueprint where I had to reconnect several nodes to use the changed struct’s new data types, but I could open the Blueprint without seeing a crash. Would you be able to provide an example of the struct in code before and after you made the changes to it?

Hi Slayemin,

We have not heard back from you for a few days. Do you still need help with this issue? I will be marking this post as resolved for internal tracking purposes, but please feel free to reopen the post with a comment at any time.

Hey ,

Sorry about the delay in response. I made a bit of an architectural change to my game which caused some rework of code and I haven’t been able to get back to this. I also upgraded the engine to 4.7.3, so I’ll have to go back and see if my repro steps still result in a crash. I’ll post an update in a few days, and at the latest, by the end of the week.

-Eric