[UE 5.4][Android] Assertion failed: FPlatformTLS::IsValidTlsSlot(ThisTlsSlot)

目前在引擎5.4版本,安卓develop版本,部分安卓机型出现的概率比较大,研究了下源码,感觉是pthread_key_create已经创建失败了,引擎本身使用了很多TThreadSingleton,加上我们接入的SDK也用了pthread_key,因此耗尽了,想问下有什么处理方式么?

贴一个堆栈

[2025.07.08-11.13.49:242][791]LogAndroid: Error: === Critical error: ===

[2025.07.08-11.13.49:242][791]LogAndroid: Error:

[2025.07.08-11.13.49:242][791]LogAndroid: Error: Assertion failed: FPlatformTLS::IsValidTlsSlot(ThisTlsSlot) [File:./Runtime/Core/Private/HAL/ThreadingBase.cpp] [Line: 1406]

[2025.07.08-11.13.49:242][791]LogAndroid: Error:

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x000000799C122B80 libUnreal.so(0x000000000CCE0B80)!FThreadSingletonInitializer::Get(TFunctionRef<FTlsAutoCleanup* ()>, unsigned int&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A181EB68 libUnreal.so(0x00000000123DCB68)!FAnimInstanceProxy::SlotEvaluatePose(FName const&, FAnimationPoseData const&, float, FAnimationPoseData&, float, float)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A0C22138 libUnreal.so(0x00000000117E0138)!FAnimNode_Slot::Evaluate_AnyThread(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1850FEC libUnreal.so(0x000000001240EFEC)!FPoseLink::Evaluate(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1872584 libUnreal.so(0x0000000012430584)!FAnimNode_SaveCachedPose::Evaluate_AnyThread(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1850FEC libUnreal.so(0x000000001240EFEC)!FPoseLink::Evaluate(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1850FEC libUnreal.so(0x000000001240EFEC)!FPoseLink::Evaluate(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A0C23484 libUnreal.so(0x00000000117E1484)!FAnimNode_TwoWayBlend::Evaluate_AnyThread(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1850FEC libUnreal.so(0x000000001240EFEC)!FPoseLink::Evaluate(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1872584 libUnreal.so(0x0000000012430584)!FAnimNode_SaveCachedPose::Evaluate_AnyThread(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1850FEC libUnreal.so(0x000000001240EFEC)!FPoseLink::Evaluate(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1850FEC libUnreal.so(0x000000001240EFEC)!FPoseLink::Evaluate(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A0C0102C libUnreal.so(0x00000000117BF02C)!FAnimNode_BlendListBase::Evaluate_AnyThread(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1850FEC libUnreal.so(0x000000001240EFEC)!FPoseLink::Evaluate(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A0C0102C libUnreal.so(0x00000000117BF02C)!FAnimNode_BlendListBase::Evaluate_AnyThread(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1850FEC libUnreal.so(0x000000001240EFEC)!FPoseLink::Evaluate(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A0C011CC libUnreal.so(0x00000000117BF1CC)!FAnimNode_BlendListBase::Evaluate_AnyThread(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1850FEC libUnreal.so(0x000000001240EFEC)!FPoseLink::Evaluate(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A0C0102C libUnreal.so(0x00000000117BF02C)!FAnimNode_BlendListBase::Evaluate_AnyThread(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1850FEC libUnreal.so(0x000000001240EFEC)!FPoseLink::Evaluate(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A0C22150 libUnreal.so(0x00000000117E0150)!FAnimNode_Slot::Evaluate_AnyThread(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1850FEC libUnreal.so(0x000000001240EFEC)!FPoseLink::Evaluate(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A186251C libUnreal.so(0x000000001242051C)!FAnimNode_Inertialization::Evaluate_AnyThread(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1850FEC libUnreal.so(0x000000001240EFEC)!FPoseLink::Evaluate(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A181E34C libUnreal.so(0x00000000123DC34C)!FAnimInstanceProxy::EvaluateAnimationNode_WithRoot(FPoseContext&, FAnimNode_Base*)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A181DCD0 libUnreal.so(0x00000000123DBCD0)!FAnimInstanceProxy::EvaluateAnimation_WithRoot(FPoseContext&, FAnimNode_Base*)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A186D1B8 libUnreal.so(0x000000001242B1B8)!FAnimNode_LinkedAnimGraph::Evaluate_AnyThread(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1850FEC libUnreal.so(0x000000001240EFEC)!FPoseLink::Evaluate(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1870898 libUnreal.so(0x000000001242E898)!FAnimNode_LinkedInputPose::Evaluate_AnyThread(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1850FEC libUnreal.so(0x000000001240EFEC)!FPoseLink::Evaluate(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1872584 libUnreal.so(0x0000000012430584)!FAnimNode_SaveCachedPose::Evaluate_AnyThread(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1850FEC libUnreal.so(0x000000001240EFEC)!FPoseLink::Evaluate(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1850FEC libUnreal.so(0x000000001240EFEC)!FPoseLink::Evaluate(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A0C0C768 libUnreal.so(0x00000000117CA768)!FAnimNode_LayeredBoneBlend::Evaluate_AnyThread(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1850FEC libUnreal.so(0x000000001240EFEC)!FPoseLink::Evaluate(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A0C23484 libUnreal.so(0x00000000117E1484)!FAnimNode_TwoWayBlend::Evaluate_AnyThread(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1850FEC libUnreal.so(0x000000001240EFEC)!FPoseLink::Evaluate(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1872584 libUnreal.so(0x0000000012430584)!FAnimNode_SaveCachedPose::Evaluate_AnyThread(FPoseContext&)

[2025.07.08-11.13.49:242][791]LogAndroid: Error: [Callstack] 0x00000079A1850FEC libUnreal.so(0x000

[2025.07.08-11.13.49:242][791]LogAndroid: Error:

[2025.07.08-11.13.49:242][791]LogAndroid: Error:

[2025.07.08-11.13.49:242][791]LogAndroid: Error:

[2025.07.08-11.13.49:250][791]LogExit: Executing StaticShutdownAfterError

[2025.07.08-11.13.49:253][791]LogAndroid: FAndroidMisc::RequestExit(1, FAndroidErrorOutputDevice::Serialize.!GIsGuarded)

Hi,

我们没有在Android平台遇到过,但是在window遇到过,针对windows我们做了一些限制,具体改动CL#27827939,我估计需要针对android平台做类似的改动。

感谢答复,我们观察到,之前CL#34031139 引擎已经做了一些针对tls的优化,但是后续又回滚了,是什么原因呢?看着改动的细节跟我们遇到的问题比较相符。

[Image Removed]

Hi,

我看了一下历史纪录,没有提示回滚的原因,我正在问开发的同事,如果后续有结果,我会再同步给你。但这个fix看起来是想修复类似的问题,这是平台不是针对android做的。

Hi,

同事反馈说 it was causing problem with static initializer / dyn tls initialization,具体情况可能记不清了,你可以合入试试,看看是否遇到什么具体问题。(可以考虑只让改动对Android平台起效)。

多谢解答 我们这边再试试看看