gpt4 book ai didi

xcode - 查看导致 pthread_mutex_lock 死锁的原因

转载 作者:行者123 更新时间:2023-12-03 13:00:30 25 4
gpt4 key购买 nike

我有一个在后台进程中使用私有(private)队列并发的 Core Data iOS 应用程序。我遇到了一个死锁,导致 UI 不时卡住(老实说,相当经常) - 但我从调试器 (LLDB) 获得的所有信息都是它卡在 pthread_mutex_lock 上。堆栈跟踪不长,这使得调试几乎不可能:

thread #1: tid = 0x2503, 0x3b5060fc libsystem_kernel.dylib`__psynch_mutexwait + 24, stop reason = signal SIGSTOP
frame #0: 0x3b5060fc libsystem_kernel.dylib`__psynch_mutexwait + 24
frame #1: 0x3b44f128 libsystem_c.dylib`pthread_mutex_lock + 392

XCode 进程 Pane 同样只显示堆栈上的这两个条目。

我对这种多线程的东西很陌生,所以完全不知道从哪里开始解决这个问题。关于如何进行调试的任何建议?

最佳答案

您的堆栈显然比两帧长,您无法使用 pthread_mutex_lock 启动线程。所以堆栈帧的截断很明显只是 lldb unwinder 中的一个错误。如果您有 ADC 帐户,请在 bugreporter.apple.com 上提交有关此问题的错误。此外,如果您没有使用最新版本的 lldb,您可以动手尝试一下,也许它修复了您看到的任何错误。您可以并排安装多个 Xcode,这样您就不必删除当前正在使用的 Xcode 来尝试更新的 Xcode。

当您的应用程序进入此状态时,您还可以尝试使用其他工具来为您提供回溯(例如 Instruments 时间分析器),因为它使用了不同的展开器。这至少会让你看到完整的回溯是什么。

关于xcode - 查看导致 pthread_mutex_lock 死锁的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17501130/

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