gpt4 book ai didi

ios - 如何在 iOS 8.3 中调试 syscall_thread_switch?

转载 作者:技术小花猫 更新时间:2023-10-29 10:38:53 25 4
gpt4 key购买 nike

自从迁移到 iOS 8.3 后,我遇到了主线程将卡在该调用中的错误。其他一些线程也卡在该调用中。在导致此调用的任何线程中都没有我的代码,所以我很困惑为什么会这样。它随机发生,有时在点击按钮栏项目时,有时在重绘图表(使用 ShinobiCharts)等时发生。

这是来自 Xcode 的堆栈跟踪:

enter image description here

有人知道为什么会发生这种情况以及如何解决它吗?这很烦人,因为当我卡在那里时,我必须重新启动应用程序。请注意,到目前为止,这是在模拟器中发生的。我正处于开发此应用程序的早期阶段,大部分时间都花在模拟器上。我还没有在真实设备上看到错误发生,但同样,我没有经常在设备上运行该应用程序。

最佳答案

敲木头,但我想我明白了(至少在我的例子中)。

导致解决方案的原因是搜索 syscall_thread_switch,这使我在这里找到了这个答案: https://stackoverflow.com/a/30333203/978509

其中,如果您查看我链接的回溯(https://gist.github.com/Shalmezad/65ff89d20aa7e0a9d094),每个 syscall_thread_switch 前面都有 OSSpinLockLockSlow,答案说明看起来像 Livelock,但由于 CPU 使用率低,是更明显的僵局。

通过我的代码,我发现对于每个后台任务,我每次都创建一个新的 dispatch_queue_t。从那以后,我重新修改了它的工作原理以使用相同的队列,这似乎解决了这个问题。

没有来自 nemesis 的更多信息(主要是一些显示他如何设置后台任务的代码片段),我无法回答他们的具体问题,但这应该为人们指明解决问题的正确方向。

关于ios - 如何在 iOS 8.3 中调试 syscall_thread_switch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30082371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com