目前在引擎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平台起效)。
多谢解答 我们这边再试试看看