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:
- Create a struct to contain CSV data (inherit from FTableRowBase)
- Create a CSV file which will be used to import data into the struct
- Build the project, open the editor, import the CSV file, load the data into the game
- Create a widget blueprint which references and uses the CSV data. Verify that this works.
Now, to crash the editor:
- Don’t change your widget blueprint at all. Shut down the editor and go back to the C++ code.
- Modify the struct by deleting a few properties and adding a few more.
- Modify your CSV file to match the properties in your struct
- 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.
- 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.
- Import the new CSV data object and use the modified struct as the CSV template
- 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: