私たちのアプリはpsynch_mutexwaitで半ランダムにハングしているようです。 これは、CoreDataに格納されたデータの束を更新するバックグラウンドプロセスに関連しているようですが、デッドロックを引き起こす原因を誰がロックしているかを完全に知ることはできませんでした。__psynch_mutexwaitでアプリケーションがハングする
以下は、lldbが私に与える完全なスタックトレースです。これは明らかに不完全であり、スレッド1の最後のフレームは偽です。私はその方法の中で数行前にブレークポイントを持っていましたが、決して打撃を受けませんでした。
どのロックが待機されているか把握する方法はありますか? (あるいは正しいスタックトレースを得ることさえできますか?)もちろん、たくさんのコードが含まれています。これは、ランダムなNSLogステートメントを大規模な作業にします。
(lldb) bt all
* thread #1: tid = 0x2503, 0x39da20fc libsystem_kernel.dylib`__psynch_mutexwait + 24, stop reason = signal SIGSTOP
frame #0: 0x39da20fc libsystem_kernel.dylib`__psynch_mutexwait + 24
frame #1: 0x39ceb128 libsystem_c.dylib`pthread_mutex_lock + 392
frame #2: 0x00022068 OnDeck`-[AttendanceWorkoutsController buildTable](self=0x00000003, _cmd=0x00000000) + 508 at AttendanceWorkoutsController.m:100
thread #2: tid = 0x2803, 0x39d92648 libsystem_kernel.dylib`kevent64 + 24
frame #0: 0x39d92648 libsystem_kernel.dylib`kevent64 + 24
frame #1: 0x39ccb4f0 libdispatch.dylib`_dispatch_mgr_invoke + 796
thread #5: tid = 0x2b03, 0x39d91eb4 libsystem_kernel.dylib`mach_msg_trap + 20
frame #0: 0x39d91eb4 libsystem_kernel.dylib`mach_msg_trap + 20
frame #1: 0x39d9204c libsystem_kernel.dylib`mach_msg + 40
thread #6: tid = 0x242f, 0x39d91eb4 libsystem_kernel.dylib`mach_msg_trap + 20
frame #0: 0x39d91eb4 libsystem_kernel.dylib`mach_msg_trap + 20
frame #1: 0x39d9204c libsystem_kernel.dylib`mach_msg + 40
thread #7: tid = 0x2c03, 0x39da2594 libsystem_kernel.dylib`select$DARWIN_EXTSN + 20
frame #0: 0x39da2594 libsystem_kernel.dylib`select$DARWIN_EXTSN + 20
frame #1: 0x31bff1f6 CoreFoundation`__CFSocketManager + 678
thread #8: tid = 0x2d03, 0x39da2d98 libsystem_kernel.dylib`__workq_kernreturn + 8
frame #0: 0x39da2d98 libsystem_kernel.dylib`__workq_kernreturn + 8
frame #1: 0x39cf0cfa libsystem_c.dylib`_pthread_workq_return + 18
(lldb)
してみてください。このような状況のために導入されました。 – Mazyod