Description

This is a regression, the crash seem to have been introduced by CL 40129784 on ue5-main and persists in latest.

Function UDataTable::RemoveRow(FName RowName) uses macro DATATABLE_CHANGE_SCOPE_SINGLE_ROW to call HandleDataTableChanged() after the modification. This, attempts to access the table row using "RowMap[ChangedRowName]", which is a checked accessor. It succeeds after adding a row, but crashes in the removal operation since the row has just been deleted.

Steps to Reproduce

Blueprint Utility repro

  1. Load a project in the editor with data tables like Lyra
  2. Create a new Editor Utility Blueprint, of type Asset Action Utility
  3. On the right, press + to add an entry to Supported Classes and select Data Table
  4. Add this DeleteRow function which deletes a specific named row. For the name pick a row that exists in a table in your project:
    [Image Removed]
  5. Compile and save blueprint
  6. Find a data table with a row matching the one you entered in the function (tested using DT_SaveActions in Lyra), right click it and select Scripted Asset Actions -> Delete Me
  7. In 5.5 this would delete the row with that name. You may need to close and reopen the editor to see. In 5.6, this crashes with the stack mentioned below

General Repro

  1. Create a Data Table asset using a native Row Struct (not a BP struct).
  2. Add one or more rows to it using the editor
  3. Call either:
    1. In C++: UDataTable::RemoveRow(FName RowName)
    2. In Python: unreal.DataTableFunctionLibrary.remove_data_table_row(myDataTableAsset, "MyRowName")
Callstack

BP Utility stack:

[Inline Frame] UnrealEditor-Engine.dll!TMapBase<FName,unsigned char *,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,unsigned char *,0>>::FindChecked(const FName &) Line 741
[Inline Frame] UnrealEditor-Engine.dll!TMap<FName,unsigned char *,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,unsigned char *,0>>::operator[](const FName &) Line 1483
UnrealEditor-Engine.dll!UDataTable::HandleDataTableChanged(FName ChangedRowName) Line 246
UnrealEditor-Engine.dll!UDataTable::FScopedDataTableChange::~FScopedDataTableChange() Line 77
UnrealEditor-Engine.dll!UDataTable::RemoveRow(FName RowName) Line 510
[Inline Frame] UnrealEditor-Engine.dll!UDataTableFunctionLibrary::RemoveDataTableRow(UDataTable * DataTable, const FName &) Line 449
UnrealEditor-Engine.dll!UDataTableFunctionLibrary::execRemoveDataTableRow(UObject * Context, FFrame & Stack, void * const Z_Param__Result) Line 1305
UnrealEditor-CoreUObject.dll!UObject::execCallMathFunction(UObject * Context, FFrame & Stack, void * const Z_Param__Result) Line 1107
[Inline Frame] UnrealEditor-CoreUObject.dll!FFrame::Step(UObject *) Line 510
UnrealEditor-CoreUObject.dll!ProcessLocalScriptFunction(UObject * Context, FFrame & Stack, void * const Z_Param__Result) Line 1243
UnrealEditor-CoreUObject.dll!UObject::ProcessInternal(UObject * Context, FFrame & Stack, void * const Z_Param__Result) Line 1372
UnrealEditor-CoreUObject.dll!UFunction::Invoke(UObject * Obj, FFrame & Stack, void * const Z_Param__Result) Line 7483
UnrealEditor-CoreUObject.dll!UObject::ProcessEvent(UFunction * Function, void * Parms) Line 2212
UnrealEditor-Blutility.dll!FBlutilityMenuExtensions::CreateBlutilityActionsMenu::__l2::<lambda_1>::()::__l6::<lambda_1>::operator()() Line 1106

Python stack

[Inline Frame] UnrealEditor-Engine.dll!TMapBase<FName,unsigned char *,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,unsigned char *,0>>::FindChecked(const FName &) Line 729
[Inline Frame] UnrealEditor-Engine.dll!TMap<FName,unsigned char *,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,unsigned char *,0>>::operator[](const FName &) Line 1471
UnrealEditor-Engine.dll!UDataTable::HandleDataTableChanged(FName ChangedRowName) Line 240
UnrealEditor-Engine.dll!UDataTable::FScopedDataTableChange::~FScopedDataTableChange() Line 77
UnrealEditor-Engine.dll!UDataTable::RemoveRow(FName RowName) Line 508
[Inline Frame] UnrealEditor-Engine.dll!UDataTableFunctionLibrary::RemoveDataTableRow(UDataTable * DataTable, const FName &) Line 449
UnrealEditor-Engine.dll!UDataTableFunctionLibrary::execRemoveDataTableRow(UObject * Context, FFrame & Stack, void * const Z_Param__Result) Line 1323
UnrealEditor-CoreUObject.dll!UFunction::Invoke(UObject * Obj, FFrame & Stack, void * const Z_Param__Result) Line 7453
UnrealEditor-CoreUObject.dll!UObject::ProcessEvent(UFunction * Function, void * Parms) Line 2211
UnrealEditor-PythonScriptPlugin.dll!PyUtil::InvokeFunctionCall(UObject * InObj, const UFunction * InFunc, void * InBaseParamsAddr, const wchar_t * InErrorCtxt) Line 575
UnrealEditor-PythonScriptPlugin.dll!FPyWrapperObject::CallFunction_Impl(UObject * InObj, _object * InArgs, _object * InKwds, const PyGenUtil::FGeneratedWrappedFunction & InFuncDef, const char * InPythonFuncName, const wchar_t * InErrorCtxt) Line 314
[Inline Frame] UnrealEditor-PythonScriptPlugin.dll!FPyWrapperObject::CallFunction(_typeobject * InPythonFuncName, _object *) Line 218
UnrealEditor-PythonScriptPlugin.dll!FPyWrapperObject::CallClassMethodWithArgs_Impl(_typeobject * InType, _object * InArgs, _object * InKwds, void * InClosure) Line 333
UnrealEditor-PythonScriptPlugin.dll!FPyMethodWithClosureDef::Call(FPyMethodWithClosureDef * InDef, _object * InSelf, _object * InArgs, _object * InKwds) Line 152
[External Code]
UnrealEditor-PythonScriptPlugin.dll!FPythonScriptPlugin::EvalString(const wchar_t * InStr, const wchar_t * InContext, const int InMode, _object * InGlobalDict, _object * InLocalDict) Line 1670
[Inline Frame] UnrealEditor-PythonScriptPlugin.dll!FPythonScriptPlugin::EvalString(const wchar_t *) Line 1654
UnrealEditor-PythonScriptPlugin.dll!FPythonScriptPlugin::RunString(FPythonCommandEx & InOutPythonCommand) Line 1703
[Inline Frame] UnrealEditor-PythonScriptPlugin.dll!FPythonScriptPlugin::ExecPythonCommandEx(FPythonCommandEx &) Line 858
UnrealEditor-PythonScriptPlugin.dll!FPythonScriptPlugin::ExecPythonCommand(const wchar_t * InPythonCommand) Line 749
UnrealEditor-PythonScriptPlugin.dll!FPythonCommandExecutor::Exec(const wchar_t * Input) Line 350

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-296335 in the post.

0
Login to Vote

Unresolved
ComponentUE - CoreTech
Affects Versions5.6
Target Fix5.7
CreatedJun 13, 2025
UpdatedJul 24, 2025
View Jira Issue