Not a regression.
Tested in:
//UE4/Release-4.26.2 CL15973114 Binary - Reproduced
//UE4/Release-4.27.1 CL17735300 Binary - Reproduced
//UE5/Release-5.0-EarlyAccess CL16682836 Binary - Reproduced
From the user: "Unreal Editor performs a search for [an asset] usage in C++ classes, but during the search it tries to use TArray dangerously, triggering a check failure and a crash."
User's Github pull request: 8509
private: AMyStaticMeshActor(); void RefreshMaterials(); protected: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Appearance") UMaterialInterface* MyMaterial;
AMyStaticMeshActor::AMyStaticMeshActor() { static ConstructorHelpers::FObjectFinder<UMaterialInterface> plasticFinder(TEXT("Material'/Game/Materials/M_Plastic.M_Plastic'")); MyMaterial = plasticFinder.Object; RefreshMaterials(); } void AMyStaticMeshActor::RefreshMaterials() { UStaticMeshComponent* staticMeshComponent = GetStaticMeshComponent(); check(staticMeshComponent); if (staticMeshComponent && MyMaterial) staticMeshComponent->SetMaterial(0, MyMaterial); }
Expected Results:
A warning message about renaming an asset that is used by CDO should occur, allowing user to rename/move that asset.
Actual Results:
Crash occurs due to the assertion failure inside the FAssetRenameManager::FindCDOReferencedAssets() => TArray::Remove() => CheckAddress();
ntdll!7ffd2ade0000 + 9c144 KERNELBASE!7ffd27ef0000 + 38ba3 UE4Editor-Core!ReportCrash(_EXCEPTION_POINTERS *) [WindowsPlatformCrashContext.cpp:1591] UE4Editor!7ff64a090000 + 3b7ff VCRUNTIME140!7ffd0a1c0000 + ecf0 ntdll!7ffd2ade0000 + a11ff ntdll!7ffd2ade0000 + 6a289 ntdll!7ffd2ade0000 + 6a043 KERNELBASE!7ffd27ef0000 + 3a839 UE4Editor-Core!ReportAssert(wchar_t const *,int) [WindowsPlatformCrashContext.cpp:1644] UE4Editor-Core!FWindowsErrorOutputDevice::Serialize(wchar_t const *,ELogVerbosity::Type,FName const &) [WindowsErrorOutputDevice.cpp:78] UE4Editor-Core!FOutputDevice::LogfImpl(wchar_t const *,...) [OutputDevice.cpp:61] UE4Editor-Core!static void AssertFailedImplV(const char *, const char *, int, const wchar_t *, char *) [AssertionMacros.cpp:104] UE4Editor-Core!FDebug::CheckVerifyFailedImpl(char const *,char const *,int,wchar_t const *,...) [AssertionMacros.cpp:461] UE4Editor-AssetTools!DispatchCheckVerify<void,<lambda_53e648ef5d176b5dbe96459ec28ddb4c> >(<lambda_53e648ef5d176b5dbe96459ec28ddb4c> &&) [AssertionMacros.h:165] UE4Editor-AssetTools!FAssetRenameManager::FindCDOReferencedAssets(TArray<FAssetRenameDataWithReferencers,TSizedDefaultAllocator<32> > const &) [AssetRenameManager.cpp:502] UE4Editor-AssetTools!FAssetRenameManager::FixReferencesAndRename(TArray<FAssetRenameData,TSizedDefaultAllocator<32> > const &,bool,bool) [AssetRenameManager.cpp:367] UE4Editor-AssetTools!FAssetRenameManager::RenameAssetsWithDialog(TArray<FAssetRenameData,TSizedDefaultAllocator<32> > const &,bool) [AssetRenameManager.cpp:268] UE4Editor-ContentBrowserAssetDataSource!ContentBrowserAssetData::RenameAssetFileItem(IAssetTools *,FContentBrowserAssetFileItemDataPayload const &,FString const &) [ContentBrowserAssetDataCore.cpp:790] UE4Editor-ContentBrowserAssetDataSource!ContentBrowserAssetData::RenameItem(IAssetTools *,IAssetRegistry *,UContentBrowserDataSource const *,FContentBrowserItemData const &,FString const &) [ContentBrowserAssetDataCore.cpp:755] UE4Editor-ContentBrowserAssetDataSource!UContentBrowserAssetDataSource::RenameItem(FContentBrowserItemData const &,FString const &,FContentBrowserItemData &) [ContentBrowserAssetDataSource.cpp:1135] UE4Editor-ContentBrowserData!FContentBrowserItem::Rename(FString const &,FContentBrowserItem *) [ContentBrowserItem.cpp:480] UE4Editor-ContentBrowser!SAssetView::AssetRenameCommit(TSharedPtr<FAssetViewItem,0> const &,FString const &,FSlateRect const &,ETextCommit::Type) [SAssetView.cpp:3640] UE4Editor-ContentBrowser!bool TBaseSPMethodDelegateInstance<0,SAssetView,0,void __cdecl(TSharedPtr<FAssetViewItem,0> const &,FString const &,FSlateRect const &,enum ETextCommit::Type) [DelegateInstancesImpl.h:307] UE4Editor-ContentBrowser!SAssetViewItem::HandleNameCommitted(FText const &,ETextCommit::Type) [AssetViewWidgets.cpp:528] UE4Editor-ContentBrowser!bool TBaseSPMethodDelegateInstance<0,SAssetTileItem,0,void __cdecl(FText const &,enum ETextCommit::Type) [DelegateInstancesImpl.h:307] UE4Editor-Slate!SInlineEditableTextBlock::OnTextBoxCommitted(FText const &,ETextCommit::Type) [SInlineEditableTextBlock.cpp:323] UE4Editor-Slate!bool TBaseSPMethodDelegateInstance<0,SInlineEditableTextBlock,0,void __cdecl(FText const &,enum ETextCommit::Type) [DelegateInstancesImpl.h:307] UE4Editor-Slate!SEditableTextBox::OnEditableTextCommitted(FText const &,ETextCommit::Type) [SEditableTextBox.cpp:482] UE4Editor-Slate!bool TBaseSPMethodDelegateInstance<0,SEditableTextBox,0,void __cdecl(FText const &,enum ETextCommit::Type) [DelegateInstancesImpl.h:307] UE4Editor-Slate!FSlateEditableTextLayout::HandleCarriageReturn(bool) [SlateEditableTextLayout.cpp:1519] UE4Editor-Slate!FSlateEditableTextLayout::HandleKeyDown(FKeyEvent const &) [SlateEditableTextLayout.cpp:967] UE4Editor-Slate!SEditableText::OnKeyDown(FGeometry const &,FKeyEvent const &) [SEditableText.cpp:212] UE4Editor-Slate!static class FReply FEventRouter::Route<FReply,FEventRouter::FBubblePolicy,FKeyEvent,<lambda_f630e7f24dbef73857a69219e32f2d96> >(class FSlateApplication *, class FEventRouter::FBubblePolicy, struct FKeyEvent, const class FSlateApplication::ProcessKeyDownEvent::__l28::<lambda_f630e7f24dbef73857a69219e32f2d96> & const, ESlateDebuggingInputEvent) [SlateApplication.cpp:383] UE4Editor-Slate!FSlateApplication::ProcessKeyDownEvent(FKeyEvent const &) [SlateApplication.cpp:4341] UE4Editor-Slate!FSlateApplication::OnKeyDown(int,unsigned int,bool) [SlateApplication.cpp:4238] UE4Editor-ApplicationCore!FWindowsApplication::ProcessDeferredMessage(FDeferredWindowsMessage const &) [WindowsApplication.cpp:2040] UE4Editor-ApplicationCore!FWindowsApplication::DeferMessage(TSharedPtr<FWindowsWindow,0> &,HWND__ *,unsigned int,unsigned __int64,__int64,int,int,unsigned int) [WindowsApplication.cpp:2698] UE4Editor-ApplicationCore!FWindowsApplication::ProcessMessage(HWND__ *,unsigned int,unsigned __int64,__int64) [WindowsApplication.cpp:1881] UE4Editor-ApplicationCore!FWindowsApplication::AppWndProc(HWND__ *,unsigned int,unsigned __int64,__int64) [WindowsApplication.cpp:905] USER32!7ffd2a3c0000 + 163ed USER32!7ffd2a3c0000 + 15de2 UE4Editor-ApplicationCore!FWindowsPlatformApplicationMisc::PumpMessages(bool) [WindowsPlatformApplicationMisc.cpp:125] UE4Editor!7ff64a090000 + 7621 UE4Editor!7ff64a090000 + 20fbc UE4Editor!7ff64a090000 + 210aa UE4Editor!7ff64a090000 + 240cd
How does TextureRenderTarget2D get TArray<uint8> type data?
How do I set a material as a post-processing material?
What is the cause of the packaging error falling back to 'GameUserSettings' in ue5?
Why does the REMOVE method of map container remove elements have memory leaks?
How to delete some elements correctly when deleting an array loop?
What is the difference between Camera and CineCamera?
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-135768 in the post.
0 |
Component | UE - CoreTech - UObject |
---|---|
Affects Versions | 4.27.1, 5.0 |
Target Fix | 5.0 |
Created | Nov 23, 2021 |
---|---|
Resolved | Dec 13, 2021 |
Updated | Apr 27, 2022 |