ios - __CFTSDFinalize 崩溃

标签 ios objective-c crash grand-central-dispatch nsthread

我们有一个严重的崩溃错误,我们绝对无法控制。问题是它恰好在后台异步发生,显然是在调度系统清理工作线程时发生的。以下是两个示例堆栈跟踪:

Thread 7 Crashed:
0   libobjc.A.dylib                     0x3b23b5b0 objc_msgSend + 15
1   Foundation                          0x33c03581 -[NSNotificationCenter postNotificationName:object:userInfo:] + 49
2   Foundation                          0x33cb3367 __NSFinalizeThreadData + 255
3   CoreFoundation                      0x3336cf81 __CFTSDFinalize + 65
4   libsystem_c.dylib                   0x3b68a12b _pthread_tsd_cleanup + 174
5   libsystem_c.dylib                   0x3b689e03 _pthread_exit + 119
6   libsystem_c.dylib                   0x3b68cd02 _pthread_workq_return + 26
7   libsystem_c.dylib                   0x3b68ca16 _pthread_wqthread + 366

和:

Thread 8 Crashed:
0   Foundation                          0x31bfd2e2 __NSFinalizeThreadData + 122
1   CoreFoundation                      0x312b6f81 __CFTSDFinalize + 65
2   libsystem_c.dylib                   0x395d412b _pthread_tsd_cleanup + 174
3   libsystem_c.dylib                   0x395d3e03 _pthread_exit + 119
4   libsystem_c.dylib                   0x395d6d02 _pthread_workq_return + 26
5   libsystem_c.dylib                   0x395d6a16 _pthread_wqthread + 366

所有这些崩溃报告似乎都有相同的原因:

Exception Type:  SIGSEGV
Exception Codes: SEGV_ACCERR at 0x9209ea83

我得到了这样的结果:似乎有一个 NSThreadWillExitNotification 被发布了。崩溃日志在没有 NSNotificationCenter 框架的情况下更频繁地出现(第二个示例)。常规调用只需传递 @"NSThreadWillExitNotification"NSThread 对象、nil userInfo。

我现在能想到的所有问题都是 NSThread 对象以某种方式过度释放。我刚刚检查过,我们对 NSThread 的所有使用都是与主线程的简单等价检查。像这样:

if (NSThread.currentThread == NSThread.mainThread) ...

有什么见解吗?只是另一个奇怪的 ARC 问题?

谢谢大家,
最大

最佳答案

虽然神秘,但自 iOS 7 以来,该问题似乎已消失。自从使用 Xcode 4.6.3 编译后,它也消失了。因此,其中一个(或两个)似乎已经修复了错误。

关于ios - __CFTSDFinalize 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15976099/

相关文章:

android 模拟器在 Retrofit CallBack 中崩溃

sql-server - Visual Studio 2008 集成开发环境崩溃

ios - UIScreen 上的 snapshotViewAfterScreenUpdates 在设备上提供空白快照

ios - 在应用程序状态保存期间解决 SKAction 代码块编码限制的好方法是什么?

c++ - 当您将 NSMutable* 对象传递给接受 NS* 对象的方法时会发生什么?

objective-c - 运行应用程序时出错

selenium-webdriver - Selenium IEDriverServer.exe 在虚拟机上崩溃

android - 自动完成库 - 跨浏览器/移动兼容

ios - 适用于 iOS 版本 3 的 Google 地方信息

objective-c - IOS 中的 XML 解析在标签中显示 NULL 值?