我的应用程序正在使用 ARKit 和 Scenekit 为用户交互渲染一些动画,在某些时候,它与以下线程回溯一起挂起
无论如何要告诉什么阻塞了主线程?
(lldb) thread backtrace
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
frame #0: 0x00000001b1dd5204 libsystem_kernel.dylib`__psynch_mutexwait + 8
frame #1: 0x00000001cf935224 libsystem_pthread.dylib`_pthread_mutex_firstfit_lock_wait + 92
frame #2: 0x00000001cf935174 libsystem_pthread.dylib`_pthread_mutex_firstfit_lock_slow + 216
frame #3: 0x00000001b821e560 SceneKit`-[SCNRenderer _projectPoint:viewport:] + 220
* frame #4: 0x00000001b82c8438 SceneKit`-[SCNView projectPoint:] + 124
frame #5: 0x000000010477d970 app`static OffScreenIndicator.updateOffScreenOn(displayView=0x00000001071c2b30, sceneView=0x00000001071d5820, target=0x0000000281a3c700, image=0x0000000281411050, color=0x0000000283c3d4c0, frame=0x000000015683e340, self=app.OffScreenIndicator) at OffScreenIndicator.swift:26:37
frame #6: 0x000000010458d5d8 app`ARViewController.phoneIsFar(camPosition=SceneKit.SCNVector3 @ 0x000000016db94730, frame=0x000000015683e340, isTutorial=true, self=0x000000010883bc00) at ARViewController.swift:2434:48
frame #7: 0x000000010458a0b4 app`ARViewController.scanUpdate(frame=0x000000015683e340, showTutorial=true, scanAllDoneAction=0x000000010459300c app`partial apply forwarder for closure #1 () -> () in app.ARViewController.(stateUpdate_tutorial in _ED82BCD2A98A9516DA8B452F58022553)(frame: __C.ARFrame) -> () at <compiler-generated>, self=0x000000010883bc00) at ARViewController.swift:2371:13
frame #8: 0x0000000104560e14 app`ARViewController.stateUpdate_tutorial(frame=0x000000015683e340, self=0x000000010883bc00) at ARViewController.swift:2692:9
frame #9: 0x00000001045609f4 app`implicit closure #22 in implicit closure #21 in ARViewController.bindStateFunctions(frame=0x000000015683e340, self=0x000000010883bc00) at ARViewController.swift:1048:34
frame #10: 0x00000001045506fc app`ARViewController.updateState(frame=0x000000015683e340, self=0x000000010883bc00) at ARViewController.swift:1108:31
frame #11: 0x0000000104550274 app`ARScanViewController.session(session=0x00000001568cbdd0, frame=0x000000015683e340, self=0x000000010883bc00) at ARViewController.swift:696:9
frame #12: 0x0000000104550778 app`@objc ARViewController.session(_:didUpdate:) at <compiler-generated>:0
frame #13: 0x00000001afa25248 ARKitCore`__36-[ARSession _sessionDidUpdateFrame:]_block_invoke + 128
frame #14: 0x0000000106f37bcc libdispatch.dylib`_dispatch_call_block_and_release + 32
frame #15: 0x0000000106f396c0 libdispatch.dylib`_dispatch_client_callout + 20
frame #16: 0x0000000106f48f34 libdispatch.dylib`_dispatch_main_queue_callback_4CF + 1000
frame #17: 0x0000000183e0111c CoreFoundation`__CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 16
frame #18: 0x0000000183dfb120 CoreFoundation`__CFRunLoopRun + 2508
frame #19: 0x0000000183dfa21c CoreFoundation`CFRunLoopRunSpecific + 600
frame #20: 0x000000019b9c4784 GraphicsServices`GSEventRunModal + 164
frame #21: 0x000000018683aee8 UIKitCore`-[UIApplication _run] + 1072
frame #22: 0x000000018684075c UIKitCore`UIApplicationMain + 168
frame #23: 0x00000001022766b4 app`main at AppDelegate.swift:14:7
frame #24: 0x0000000183aba6b0 libdyld.dylib`start + 4
(lldb)
(lldb) thread list
Process 4264 stopped
* thread #1: tid = 0x131e7b, 0x00000001b1dd5204 libsystem_kernel.dylib`__psynch_mutexwait + 8, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
thread #6: tid = 0x131f75, 0x00000001b1db12d0 libsystem_kernel.dylib`mach_msg_trap + 8, name = 'com.apple.uikit.eventfetch-thread'
thread #9: tid = 0x131f7e, 0x00000001b1db12d0 libsystem_kernel.dylib`mach_msg_trap + 8, name = 'AVAudioSession Notify Thread'
thread #11: tid = 0x131ffc, 0x00000001b1db12d0 libsystem_kernel.dylib`mach_msg_trap + 8, name = 'com.apple.NSURLConnectionLoader'
thread #14: tid = 0x132099, 0x00000001b1db12d0 libsystem_kernel.dylib`mach_msg_trap + 8, name = 'com.apple.coreaudio.AQClient'
thread #21: tid = 0x1320d9, 0x00000001cf938764 libsystem_pthread.dylib`start_wqthread
thread #27: tid = 0x132153, 0x00000001b1db12d0 libsystem_kernel.dylib`mach_msg_trap + 8, name = 'com.apple.CoreMotion.MotionThread'
thread #28: tid = 0x132157, 0x00000001cf938764 libsystem_pthread.dylib`start_wqthread
thread #46: tid = 0x1321ff, 0x00000001cf938764 libsystem_pthread.dylib`start_wqthread
thread #49: tid = 0x132202, 0x00000001cf938764 libsystem_pthread.dylib`start_wqthread
thread #53: tid = 0x13228c, 0x00000001cf938764 libsystem_pthread.dylib`start_wqthread
thread #58: tid = 0x132397, 0x00000001b1db12d0 libsystem_kernel.dylib`mach_msg_trap + 8, name = 'com.apple.arkit.ardisplaylink.0x283d67a00'
thread #59: tid = 0x132398, 0x00000001b1dd5f5c libsystem_kernel.dylib`__ulock_wait + 8, name = 'com.apple.scenekit.scnview-renderer', queue = 'com.apple.scenekit.renderingQueue.ARSCNView0x1071d5820'
thread #60: tid = 0x1323a2, 0x00000001b1db12d0 libsystem_kernel.dylib`mach_msg_trap + 8, name = 'H11ANEServicesThread'
thread #61: tid = 0x1323b3, 0x00000001b1db12d0 libsystem_kernel.dylib`mach_msg_trap + 8, name = 'H11ANEServicesThread'
thread #62: tid = 0x13249f, 0x00000001b1db1324 libsystem_kernel.dylib`semaphore_timedwait_trap + 8
thread #65: tid = 0x1324a8, 0x00000001cf938764 libsystem_pthread.dylib`start_wqthread
thread #67: tid = 0x1324df, 0x00000001b1db1324 libsystem_kernel.dylib`semaphore_timedwait_trap + 8
thread #68: tid = 0x132505, 0x0000000198e9d150 libobjc.A.dylib`object_getClassName, queue = 'com.apple.libdispatch-manager'
thread #69: tid = 0x132507, 0x0000000198e9d150 libobjc.A.dylib`object_getClassName
thread #70: tid = 0x132537, 0x00000001cf938764 libsystem_pthread.dylib`start_wqthread
thread #71: tid = 0x132538, 0x00000001cf938764 libsystem_pthread.dylib`start_wqthread
(lldb)