Editor crashes with some Speedtree assets

I have a few different Speedtree trees which crash the editor in 4.14 when a map containing them is opened, or when the static mesh is opened, right clicked on or dragged into a map. Most of them are unedited from the speedtree store, with the exception of turning on the Two Sided Foliage shading model and tweaking the material to incorporate it (i.e. editing opacity and adding a Subsurface color).

I could upload an asset which crashes but since this is a bought speedtree asset that’s probably not a good idea…

Edited to add: Attempting to delete the asset also crashes the editor. The ‘EuropeanLinden_Mobile’ tree which was in a previous Free UE4 pack from Speedtree is one which fails for me, could be a valid testcase.

Seems to be some sort of LOD crash? Here is my crash dump:

Assertion failed: FMath::IsFinite( Q ) [File:d:\build\++ue4+release-4.14+compile\sync\engine\source\developer\meshsimplifier\private\Quadric.h] [Line: 614] 



UE4Editor_Core!FDebug::AssertFailed() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\private\misc\assertionmacros.cpp:332]
UE4Editor_QuadricMeshReduction!TQuadricAttr<29>::Evaluate() [d:\build\++ue4+release-4.14+compile\sync\engine\source\developer\meshsimplifier\private\quadric.h:616]
UE4Editor_QuadricMeshReduction!TMeshSimplifier<TVertSimp<8>,29>::ComputeNewVerts() [d:\build\++ue4+release-4.14+compile\sync\engine\source\developer\meshsimplifier\private\meshsimplify.h:892]
UE4Editor_QuadricMeshReduction!TMeshSimplifier<TVertSimp<8>,29>::ComputeEdgeCollapseCost() [d:\build\++ue4+release-4.14+compile\sync\engine\source\developer\meshsimplifier\private\meshsimplify.h:910]
UE4Editor_QuadricMeshReduction!TMeshSimplifier<TVertSimp<8>,29>::InitCosts() [d:\build\++ue4+release-4.14+compile\sync\engine\source\developer\meshsimplifier\private\meshsimplify.h:398]
UE4Editor_QuadricMeshReduction!FQuadricSimplifierMeshReduction::Reduce() [d:\build\++ue4+release-4.14+compile\sync\engine\source\developer\meshsimplifier\private\quadricmeshreduction.cpp:339]
UE4Editor_MeshUtilities!FStaticMeshUtilityBuilder::ReduceLODs() [d:\build\++ue4+release-4.14+compile\sync\engine\source\developer\meshutilities\private\meshutilities.cpp:3737]
UE4Editor_MeshUtilities!FMeshUtilities::BuildStaticMesh() [d:\build\++ue4+release-4.14+compile\sync\engine\source\developer\meshutilities\private\meshutilities.cpp:4031]
UE4Editor_Engine!FStaticMeshRenderData::Cache() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\staticmesh.cpp:1367]
UE4Editor_Engine!UStaticMesh::CacheDerivedData() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\staticmesh.cpp:2221]
UE4Editor_Engine!UStaticMesh::PostLoad() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\staticmesh.cpp:2511]
UE4Editor_CoreUObject!UObject::ConditionalPostLoad() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\obj.cpp:832]
UE4Editor_Engine!UBodySetup::PostLoad() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\physicsengine\bodysetup.cpp:856]
UE4Editor_CoreUObject!UObject::ConditionalPostLoad() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\obj.cpp:832]
UE4Editor_CoreUObject!EndLoad() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1590]
UE4Editor_CoreUObject!LoadPackageInternalInner() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1281]
UE4Editor_CoreUObject!LoadPackage() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1437]
UE4Editor_CoreUObject!ResolveName() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:722]
UE4Editor_CoreUObject!StaticLoadObjectInternal() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:809]
UE4Editor_CoreUObject!StaticLoadObject() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:869]
UE4Editor_ContentBrowser!FAssetData::GetAsset() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\assetregistry\public\assetdata.h:223]
UE4Editor_ContentBrowser!SContentBrowser::OnAssetsActivated() [d:\build\++ue4+release-4.14+compile\sync\engine\source\editor\contentbrowser\private\scontentbrowser.cpp:1802]
UE4Editor_ContentBrowser!TBaseSPMethodDelegateInstance<0,SContentBrowser,0,TTypeWrapper<void> __cdecl(TArray<FAssetData,FDefaultAllocator> const & __ptr64,enum EAssetTypeActivationMethod::Type)>::Execute() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:318]
UE4Editor_ContentBrowser!TBaseSPMethodDelegateInstance<0,SContentBrowser,0,void __cdecl(TArray<FAssetData,FDefaultAllocator> const & __ptr64,enum EAssetTypeActivationMethod::Type)>::ExecuteIfSafe() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:425]
UE4Editor_ContentBrowser!TBaseDelegate<void,TArray<FAssetData,FDefaultAllocator> const & __ptr64,enum EAssetTypeActivationMethod::Type>::ExecuteIfBound() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:609]
UE4Editor_ContentBrowser!SAssetView::OnListMouseButtonDoubleClick() [d:\build\++ue4+release-4.14+compile\sync\engine\source\editor\contentbrowser\private\sassetview.cpp:3657]
UE4Editor_ContentBrowser!TBaseSPMethodDelegateInstance<0,SAssetView,0,TTypeWrapper<void> __cdecl(TSharedPtr<FAssetViewItem,0>)>::Execute() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:318]
UE4Editor_ContentBrowser!TBaseSPMethodDelegateInstance<0,SAssetView,0,void __cdecl(TSharedPtr<FAssetViewItem,0>)>::ExecuteIfSafe() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:425]
UE4Editor_ContentBrowser!TBaseDelegate<void,TSharedPtr<FAssetViewItem,0> >::ExecuteIfBound() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:609]
UE4Editor_ContentBrowser!SListView<TSharedPtr<FAssetViewItem,0> >::Private_OnItemDoubleClicked() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\slate\public\widgets\views\slistview.h:718]
UE4Editor_ContentBrowser!STableRow<TSharedPtr<FAssetViewItem,0> >::OnMouseButtonDoubleClick() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\slate\public\widgets\views\stablerow.h:264]
UE4Editor_Slate!<lambda_eeb33fd1b480e3cad58a1531d90d2e14>::operator()() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5404]
UE4Editor_Slate!FEventRouter::Route<FReply,FEventRouter::FBubblePolicy,FPointerEvent,<lambda_eeb33fd1b480e3cad58a1531d90d2e14> >() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:215]
UE4Editor_Slate!FSlateApplication::RoutePointerDoubleClickEvent() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5402]
UE4Editor_Slate!FSlateApplication::ProcessMouseButtonDoubleClickEvent() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5387]
UE4Editor_Slate!FSlateApplication::OnMouseDoubleClick() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5365]
UE4Editor_Core!FWindowsApplication::ProcessDeferredMessage() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\private\windows\windowsapplication.cpp:1656]
UE4Editor_Core!FWindowsApplication::DeferMessage() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\private\windows\windowsapplication.cpp:2071]
UE4Editor_Core!FWindowsApplication::ProcessMessage() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\private\windows\windowsapplication.cpp:814]
UE4Editor_Core!FWindowsApplication::AppWndProc() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\private\windows\windowsapplication.cpp:678]
user32
user32
UE4Editor_Core!FWindowsPlatformMisc::PumpMessages() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\private\windows\windowsplatformmisc.cpp:951]
UE4Editor!FEngineLoop::Tick() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\launch\private\launchengineloop.cpp:2811]
UE4Editor!GuardedMain() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\launch\private\launch.cpp:152]
UE4Editor!GuardedMainWrapper() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:126]
UE4Editor!WinMain() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:202]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:264]
kernel32ntdll

Hey Rob,

So I tested a few of the free sample speed tree assets and did not get any sort of error message or crash. From looking at the callstack you have provided, it looks like it could be an error with our new mesh reduction feature that uses quadratic mesh reduction to evaluate the vertices and edges of your meshes to optimize and reduce the number of triangles.

Could you provide to me your dxdiag as well as your crash logs generated from this crash attached in your response?

If you are worried about the security of the assets you have purchased, you can send me a test project via a Private Message on the Forums where the crash occurs, using the assets in question. We never share these projects or assets externally.

Let me know if you have further questions or need additional assistance.

Thanks,

Hi Andrew,

I did some more experimenting and have discovered that all Speedtree assets crash the editor for me if I select a new LOD Group (e.g. ‘Large Prop’) in the static mesh editor.

I sent you a test .uasset (which I think already has ‘Large Prop’ applied) but you could try a different free sample asset and try setting the LOD Group on those instead, and see if you hit the same mesh reduction crash?

Thanks,

Rob

Thanks for the clear and precise repro steps. I was able to confirm what you are reporting and have gone ahead and entered a bug report for the issue. You can track the report following the link below on our public issues tracker.

UE-38967

Once the issue has been addressed by our engineers either myself or another staff member will return with an update.

Let me know if you have further questions or need additional assistance.

Cheers,

Thanks Andrew,

If anyone else has this problem, my workaround (because you can’t delete, edit or change the LOD group on affected speedtrees without the editor crashing) was to reimport affected speedtrees into a blank 4.14 project, using the same folder structure, then to copy the resulting new .uasset files over the ones in your affected project.

Is there any update on this topic? Because the error occures for me too

I now set up my Speedtree LODs manually (by that I mean choosing not to auto compute LOD distances, and setting the Screen Size for each LOD - I set up the LODs themselves in the Speedtree Editor). If you have a corrupted speedtree asset (i.e. Unreal crashes when you open it) then my workaround above still works.

I know Speedtree is moving to version 8 in 4.19 whenever it gets released, which might fix this bug anyway…