新しいランタイムフォントシステム(日本語などのキャラクターが多い言語をもっとよく対応する為に追加したシステム)にあるFCharacterList::GetKerning()の関数の中にクラッシュがあります。
この原因で一番めんどくさい現象は、4.6で新しいプロジェクトをThird Personなどのテンプレートにベースして、Starter Contentを含んで作成しようとするとクラッシュすることです。そして前のバージョンで作ったそのようなプロジェクトに似ているプロジェクトを「コピーを開く」しようとするとクラッシュすることもあります。
このクラッシュは以下の3つのチェンジに既に修正してありますが、このチェンジはUE4.6の為にブランチした後にコミットした物ですので、4.6に含んでいません。
Fixed crash in FCharacterList::GetKerning
Fixed crash in FSlateFontMeasure::MeasureStringInternal.
Fixed crash in FSlateElementBatcher::AddTextElement
(そのリンクをアクセスする為にUEサブスクリプションアカウントとリンクされているGitHubアカウントでログインする必要があります。)
とりあえず、以下の3つの対策の中の1つを使えるとこのクラッシュを防げます:
- プロジェクトを作成・「コピーを開く」時に一旦英語に戻してからやること
- 前のバージョンのプロジェクトの「コピーを開く」オプションを使うことの代わりにWindows ExplorerやMacのFinderで手動プロジェクトをコピーして、そのコピーを「同じフォルダで変換」するオプションの使用
- 上記にある3つのコードチェンジをマージすること
このバグはアジアのフォントに関する物ですので、これ以外の場合にも発生している可能性が十分あると思いますので、4.6.1をリリースするか3つのチェンジをローカルでマージする前に、別の場所でも出ると思います。
ご迷惑をかけて申し訳ございませんが、よろしくお願いします!
コールスタックは以下の感じです。他の再現ステップで似ているクラッシュがありましたら、このスレッドに再現ステップをコメント出来ますと幸いです。
UE4Editor_SlateCore! FCharacterList::GetKerning() + 19 bytes fontcache.cpp:967
UE4Editor_SlateCore! FSlateFontMeasure::MeasureStringInternal() + 1343 bytes fontmeasure.cpp:205
UE4Editor_SlateCore! FSlateFontMeasure::Measure() + 174 bytes fontmeasure.cpp:59
UE4Editor_UnrealEd! SSlowTaskWidget::GetMainTextFont() + 340 bytes feedbackcontexteditor.cpp:232
UE4Editor_UnrealEd! TMemberFunctionCaller<SSlowTaskWidget,FSlateFontInfo (__cdecl SSlowTaskWidget::*)(void)const __ptr64>::operator()<>() + 48 bytes delegateinstanceinterface_variadics.h:161
UE4Editor_UnrealEd! TTupleImpl<TIntegerSequence<> >::ApplyAfter_ExplicitReturnType<FSlateFontInfo,TMemberFunctionCaller<SSlowTaskWidget,FSlateFontInfo (__cdecl SSlowTaskWidget::*)(void)const __ptr64> >() + 25 bytes tuple.h:113
UE4Editor_UnrealEd! TBaseSPMethodDelegateInstance<1,SSlowTaskWidget,0,FSlateFontInfo __cdecl(void)>::Execute() + 89 bytes delegateinstancesimpl_variadics.inl:283
UE4Editor_Slate! TBaseDelegate<FSlateFontInfo>::Execute() + 26 bytes delegatesignatureimpl_variadics.inl:439
UE4Editor_Slate! TAttribute<FSlateFontInfo>::Get() + 56 bytes attribute.h:135
UE4Editor_Slate! STextBlock::GetFont() + 38 bytes stextblock.cpp:43
UE4Editor_Slate! STextBlock::GetComputedTextStyle() + 81 bytes stextblock.cpp:261
UE4Editor_Slate! STextBlock::ComputeDesiredSize() + 44 bytes stextblock.cpp:189
UE4Editor_SlateCore! SWidget::CacheDesiredSize() + 23 bytes swidget.cpp:370
UE4Editor_SlateCore! SWidget::SlatePrepass() + 163 bytes swidget.cpp:358
UE4Editor_SlateCore! SWidget::SlatePrepass() + 163 bytes swidget.cpp:358
UE4Editor_SlateCore! SWidget::SlatePrepass() + 163 bytes swidget.cpp:358
UE4Editor_SlateCore! SWidget::SlatePrepass() + 163 bytes swidget.cpp:358
UE4Editor_SlateCore! SWidget::SlatePrepass() + 163 bytes swidget.cpp:358
UE4Editor_SlateCore! SWidget::SlatePrepass() + 163 bytes swidget.cpp:358
UE4Editor_SlateCore! SWidget::SlatePrepass() + 163 bytes swidget.cpp:358
UE4Editor_Slate! DrawWindowPrepass() + 550 bytes slateapplication.cpp:956
UE4Editor_Slate! FSlateApplication::DrawPrepass() + 87 bytes slateapplication.cpp:973
UE4Editor_Slate! FSlateApplication::PrivateDrawWindows() + 471 bytes slateapplication.cpp:1023
UE4Editor_Slate! FSlateApplication::Tick() + 2946 bytes slateapplication.cpp:1263
UE4Editor_UnrealEd! TickSlate() + 204 bytes feedbackcontexteditor.cpp:312
UE4Editor_UnrealEd! FFeedbackContextEditor::ProgressReported() + 79 bytes feedbackcontexteditor.cpp:423
UE4Editor_Core! FFeedbackContext::UpdateUI() + 148 bytes feedbackcontext.cpp:27
UE4Editor_Core! FFeedbackContext::RequestUpdateUI() + 159 bytes feedbackcontext.cpp:19
UE4Editor_Core! FFeedbackContext::UpdateProgress() + 124 bytes feedbackcontext.cpp:47
UE4Editor_GameProjectGeneration! GameProjectUtils::DuplicateProjectForUpgrade() + 3186 bytes gameprojectutils.cpp:2048
UE4Editor_GameProjectGeneration! SProjectBrowser::OpenProject() + 1653 bytes sprojectbrowser.cpp:1006
UE4Editor_GameProjectGeneration! SProjectBrowser::HandleProjectItemDoubleClick() + 76 bytes sprojectbrowser.cpp:1132
UE4Editor_GameProjectGeneration! TBaseSPMethodDelegateInstance<0,SProjectBrowser const ,0,TTypeWrapper<void> __cdecl(TSharedPtr<FProjectItem,0>)>::Execute() + 97 bytes delegateinstancesimpl_variadics.inl:283
UE4Editor_GameProjectGeneration! TBaseSPMethodDelegateInstance<0,SProjectBrowser const ,0,void __cdecl(TSharedPtr<FProjectItem,0>)>::ExecuteIfSafe() + 90 bytes delegateinstancesimpl_variadics.inl:381
UE4Editor_GameProjectGeneration! TBaseDelegate<void,TSharedPtr<FProjectItem,0> >::ExecuteIfBound() + 86 bytes delegatesignatureimpl_variadics.inl:507
UE4Editor_GameProjectGeneration! SListView<TSharedPtr<FProjectItem,0> >::Private_OnItemDoubleClicked() + 63 bytes slistview.h:692
UE4Editor_GameProjectGeneration! STableRow<TSharedPtr<FProjectItem,0> >::OnMouseButtonDoubleClick() + 223 bytes stablerow.h:180
UE4Editor_Slate! <lambda_58ede244782f1e594383d45514e1d7c8>::operator()() + 30 bytes slateapplication.cpp:3790
UE4Editor_Slate! FEventRouter::Route<FReply,FEventRouter::FBubblePolicy,FPointerEvent,<lambda_58ede244782f1e594383d45514e1d7c8> >() + 189 bytes slateapplication.cpp:208
UE4Editor_Slate! FSlateApplication::ProcessMouseButtonDoubleClickEvent() + 473 bytes slateapplication.cpp:3791
UE4Editor_Slate! FSlateApplication::OnMouseDoubleClick() + 299 bytes slateapplication.cpp:3772
UE4Editor_Core! FWindowsApplication::ProcessDeferredMessage() + 3036 bytes windowsapplication.cpp:1303
UE4Editor_Core! FWindowsApplication::DeferMessage() + 299 bytes windowsapplication.cpp:1657
UE4Editor_Core! FWindowsApplication::ProcessMessage() + 3483 bytes windowsapplication.cpp:742
UE4Editor_Core! FWindowsApplication::AppWndProc() + 98 bytes windowsapplication.cpp:604
user32! UserCallWinProcCheckWow() + 429 bytes
user32! DispatchMessageWorker() + 949 bytes
UE4Editor_Core! FWindowsPlatformMisc::PumpMessages() + 118 bytes windowsplatformmisc.cpp:774
UE4Editor! FEngineLoop::Tick() + 3434 bytes launchengineloop.cpp:2193
UE4Editor! GuardedMain() + 479 bytes launch.cpp:131
UE4Editor! GuardedMainWrapper() + 26 bytes launchwindows.cpp:126
UE4Editor! WinMain() + 249 bytes launchwindows.cpp:202
UE4Editor! __tmainCRTStartup() + 329 bytes crtexe.c:618