FLinkerLoadがメモリリークしている問題の対処

メモリリークの調査をしていたところ、コンソールコマンド「LinkerLoadList」の「LiveLinkers」で表示される
FLinkerLoad がレベル遷移のたびに増え続けていました。
さらに調査を行ったところ、大半は参照しているLinkerRoot(UPackage)の中身がnullptrでしたので、
UPackage関係を調べて以下のようにエンジンのコードを修正したら「LiveLinkers」を表示してもほとんど増えなくなりました。

Engine\Source\Runtime\CoreUObject\Private\UObject\Package.cpp
void UPackage::BeginDestroy()
{
	// Detach linker if still attached
	if (LinkerLoad)
	{
#if 0
		// 元のコード
		LinkerLoad->Detach();
		FLinkerManager::Get().RemoveLinker(LinkerLoad);
#else
		// Detach()の内部で LinkerLoad に nullptr がセットされてしまうため、RemoveLinkerに渡すポインタを事前に保持
		FLinkerLoad* Temp = LinkerLoad;
		LinkerLoad->Detach();
		FLinkerManager::Get().RemoveLinker(Temp);
#endif
		LinkerLoad = nullptr;
	}

	Super::BeginDestroy();
}

こちらのような対処で問題ないでしょうか?

こちら可能であればバグサブミッションフォームの方に登録していただけないでしょうか?今年からバグ報告は専用フォームが用意されることになりました。

基本的に英語の報告となるので、ハードルが高くなってしまいますが、難しそうであれば日本語でもいいかと思います。ご検討よろしくお願いします。

お世話になっております。
バグフォームに投稿するため再現手順を作っていたところ、
少し複雑な条件がからみそうなことが分かったためそのあたり取りまとめてから
バグ報告をさせていただこうかと思います。

調査した結果、リークはレベルに紐付けられたアセットでは発生せず、FStringAssetReference::TryLoad()やAsyncLoadAssetノードなどで明示的に読み込んだアセットで発生していたようです。これらの情報を元にバグ報告を行わせていただこうと思います。