Description

As of 4.20, ENABLE_NAN_DIAGNOSTIC is now enabled in all Debug configurations. However, this does not work well with the TransformNonVectorized that is used on platforms like android. If this combination is enabled, every time you use FTransform(ENoInit) it will ensure.

TransformNonVectorized should be fixed to poke values directly instead of calling the FVector initializer that does the NaN check.

Steps to Reproduce
  1. Build and stage any project on Android with the Debug configuration
  2. Try to launch the game on device, it will ensure during an FTransform contructor
Callstack

libUE4.so!FGenericPlatformStackWalk::StackWalkAndDumpEx(char*, unsigned long long, int, unsigned int, void*) []
libUE4.so!FDebug::EnsureFailed(char const*, char const*, int, char16_t const*) []
libUE4.so!FDebug::OptionallyLogFormattedEnsureMessageReturningFalseImpl(bool, char const*, char const*, int, char16_t const*, ...) []
libUE4.so!ZN6FDebug49OptionallyLogFormattedEnsureMessageReturningFalseIA25_DsJPKDsEEEN9TEnableIfIXsr19TIsArrayOrRefOfTypeIT_DsEE5ValueEbE4TypeEbPKcS9_iRKS5_DpT0() []
libUE4.so!FVector::DiagnosticCheckNaN() const []
libUE4.so!FVector::FVector(float, float, float) []
libUE4.so!FTransform::FTransform(ENoInit) []
libUE4.so!USceneComponent::UpdateComponentToWorldWithParent(USceneComponent*, FName, EUpdateTransformFlags, FQuat const&, ETeleportType) []
libUE4.so!USceneComponent::UpdateComponentToWorld(EUpdateTransformFlags, ETeleportType) []
libUE4.so!USceneComponent::UpdateComponentToWorldWithParent(USceneComponent*, FName, EUpdateTransformFlags, FQuat const&, ETeleportType) []
libUE4.so!USceneComponent::UpdateComponentToWorld(EUpdateTransformFlags, ETeleportType) []
libUE4.so!USceneComponent::SetRelativeScale3D(FVector) []
libUE4.so!ADefaultPawn::ADefaultPawn(FObjectInitializer const&) []
libUE4.so!ADefaultPawn::__DefaultConstructor(FObjectInitializer const&) []
libUE4.so!void InternalConstructor<ADefaultPawn>(FObjectInitializer const&) []
libUE4.so!UClass::CreateDefaultObject() []
libUE4.so!UClass::GetDefaultObject(bool) []
libUE4.so![Unknown]() []
libUE4.so!ProcessNewlyLoadedUObjects() []
libUE4.so!FEngineLoop::PreInit(char16_t const*) []
libUE4.so!FEngineLoop::PreInit(int, char16_t*, char16_t const) []
libUE4.so!AndroidMain(android_app*) []
libUE4.so!android_main() []

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-64466 in the post.

0
Login to Vote

Fixed
ComponentUE - Foundation - Core
Affects Versions4.204.21
Target Fix4.21
Fix Commit4438236
Main Commit4450599
Release Commit4438236
CreatedSep 25, 2018
ResolvedOct 8, 2018
UpdatedSep 16, 2019