Description

A crash occurs when diffing a blueprint that contains an array that has changed from an Object Reference to a Soft Object Reference.

Note: I figured that this could be related to another bug that I entered, UE-50076, but I tested this in a CL past the fix CL for that one in 4.18 Release and the issue still occurred.

Regression?: No
This was also tested in 4.16 and did not occur, but the test was not the same as the option for a Soft Object Reference array does not exist, only an Asset ID array. This is why this is not labeled as a regression.

Steps to Reproduce
  1. Create a new project and add it to a Perforce repository.
  2. Create a new Blueprint.
  3. Add a Texture 2D Object Reference array to the new Blueprint, add 1 element and set that element to any texture.
  4. Compile, save, and submit the blueprint to Perforce.
  5. Change the Blueprint's Texture 2D array from an Object Reference to a Soft Object Reference.
  6. Compile and Save the Blueprint, checking it out in the process.
  7. Right-click the Blueprint in the Content Browser and select Diff Against Depot.
    Result: The editor crashes with the callstack below
    Expected: The diff window appears and shows what changes were made.
Callstack
Access violation - code c0000005 (first/second chance not available)

UE4Editor_CoreUObject!UObjectPropertyBase::Identical() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\coreuobject\private\uobject\propertybaseobject.cpp:63]
UE4Editor_CoreUObject!UArrayProperty::Identical() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\coreuobject\private\uobject\propertyarray.cpp:52]
UE4Editor_Kismet!IdenticalHelper() [d:\build\++ue4+release-4.18+compile\sync\engine\source\editor\kismet\private\diffutils.cpp:436]
UE4Editor_Kismet!DiffUtils::Identical() [d:\build\++ue4+release-4.18+compile\sync\engine\source\editor\kismet\private\diffutils.cpp:604]
UE4Editor_Kismet!FDetailsDiff::DiffAgainst() [d:\build\++ue4+release-4.18+compile\sync\engine\source\editor\kismet\private\detailsdiff.cpp:124]
UE4Editor_Kismet!FCDODiffControl::FCDODiffControl() [d:\build\++ue4+release-4.18+compile\sync\engine\source\editor\kismet\private\sblueprintdiff.cpp:177]
UE4Editor_Kismet!SBlueprintDiff::GenerateDefaultsPanel() [d:\build\++ue4+release-4.18+compile\sync\engine\source\editor\kismet\private\sblueprintdiff.cpp:1378]
UE4Editor_Kismet!SBlueprintDiff::GenerateDifferencesList() [d:\build\++ue4+release-4.18+compile\sync\engine\source\editor\kismet\private\sblueprintdiff.cpp:1258]
UE4Editor_Kismet!SBlueprintDiff::Construct() [d:\build\++ue4+release-4.18+compile\sync\engine\source\editor\kismet\private\sblueprintdiff.cpp:737]
UE4Editor_AssetTools!TDecl<SBlueprintDiff,RequiredArgs::T0RequiredArgs>::operator<<=() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\public\widgets\declarativesyntaxsupport.h:1091]
UE4Editor_AssetTools!FAssetTypeActions_Blueprint::PerformAssetDiff() [d:\build\++ue4+release-4.18+compile\sync\engine\source\developer\assettools\private\assettypeactions\assettypeactions_blueprint.cpp:254]
UE4Editor_AssetTools!UAssetToolsImpl::DiffAssets() [d:\build\++ue4+release-4.18+compile\sync\engine\source\developer\assettools\private\assettools.cpp:996]
UE4Editor_AssetTools!UAssetToolsImpl::DiffAgainstDepot() [d:\build\++ue4+release-4.18+compile\sync\engine\source\developer\assettools\private\assettools.cpp:968]
UE4Editor_ContentBrowser!FAssetContextMenu::ExecuteSCCDiffAgainstDepot() [d:\build\++ue4+release-4.18+compile\sync\engine\source\editor\contentbrowser\private\assetcontextmenu.cpp:2234]
UE4Editor_ContentBrowser!TBaseSPMethodDelegateInstance<1,FAssetContextMenu,0,TTypeWrapper<void> __cdecl(void)>::Execute() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:327]
UE4Editor_ContentBrowser!TBaseSPMethodDelegateInstance<1,FAssetContextMenu,0,void __cdecl(void)>::ExecuteIfSafe() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:434]
UE4Editor_Slate!SMenuEntryBlock::OnClicked() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\framework\multibox\smenuentryblock.cpp:1091]
UE4Editor_Slate!SMenuEntryBlock::OnMenuItemButtonClicked() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\framework\multibox\smenuentryblock.cpp:1042]
UE4Editor_Slate!TMemberFunctionCaller<SMenuEntryBlock,FReply (__cdecl SMenuEntryBlock::*)(void) __ptr64>::operator()<>() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\delegates\delegateinstanceinterface.h:165]
UE4Editor_Slate!UE4Tuple_Private::TTupleImpl<TIntegerSequence<unsigned int> >::ApplyAfter<TMemberFunctionCaller<SMenuEntryBlock,FReply (__cdecl SMenuEntryBlock::*)(void) __ptr64> >() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\templates\tuple.h:497]
UE4Editor_Slate!TBaseSPMethodDelegateInstance<0,SMenuEntryBlock,0,FReply __cdecl(void)>::Execute() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:327]
UE4Editor_Slate!TBaseDelegate<FReply>::Execute() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:537]
UE4Editor_Slate!SButton::OnMouseButtonUp() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\widgets\input\sbutton.cpp:282]
UE4Editor_Slate!SMenuEntryButton::OnMouseButtonUp() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\framework\multibox\smenuentryblock.cpp:439]
UE4Editor_Slate!<lambda_1002768c627006711ef2f351a87ec0e7>::operator()() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5264]
UE4Editor_Slate!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,<lambda_1002768c627006711ef2f351a87ec0e7> >() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:234]
UE4Editor_Slate!FSlateApplication::RoutePointerUpEvent() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5253]
UE4Editor_Slate!FSlateApplication::ProcessMouseButtonUpEvent() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5755]
UE4Editor_Slate!FSlateApplication::OnMouseUp() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5735]
UE4Editor_ApplicationCore!FWindowsApplication::ProcessDeferredMessage() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:1725]
UE4Editor_ApplicationCore!FWindowsApplication::DeferMessage() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:2171]
UE4Editor_ApplicationCore!FWindowsApplication::ProcessMessage() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:888]
UE4Editor_ApplicationCore!FWindowsApplication::AppWndProc() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:725]
user32
user32
UE4Editor_ApplicationCore!FWindowsPlatformApplicationMisc::PumpMessages() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\applicationcore\private\windows\windowsplatformapplicationmisc.cpp:129]
UE4Editor!FEngineLoop::Tick() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\launch\private\launchengineloop.cpp:3220]
UE4Editor!GuardedMain() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\launch\private\launch.cpp:166]
UE4Editor!GuardedMainWrapper() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:134]
UE4Editor!WinMain() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:210]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:253]
kernel32
ntdll

Have Comments or More Details?

There's no existing public thread on this issue, so head over toAnswerHub just mention UE-50696 in the post.

0
Login to Vote

Fixed
ComponentGameplay - Blueprint Editor
Affects Versions4.174.184.19
Target Fix4.18
Fix Commit3678388
Release Commit3678388
CreatedOct 3, 2017
ResolvedOct 3, 2017
UpdatedJul 2, 2018