-
Notifications
You must be signed in to change notification settings - Fork 517
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
iOS 播放特效偶现卡死 #204
Comments
重新编辑一下,麻烦大佬空了帮忙看下 |
能否将 UIView + VAP.m里hwd_renderVideoRun方法的 dispatch_sync(dispatch_get_main_queue() 换成 async的方式?我看堆栈报错是前面sync住线程1, 后面[commandBuffer commit]后,又往thread1 提交一个同步任务到thread-1 导致卡死。 dispatch_sync(dispatch_get_main_queue(), ^{ |
不可以,这里需要同步的方式拿到nextFrame,后面要使用该对象的值。另外这里堆栈的线程thread1是系统线程,和同步的这个线程不是同一个。这里应该不是死锁问题,具体是啥原因,目前不太清楚。 |
self.vap_renderQueue 是个串行队列,只是保证任务是串行执行的,但是调度的线程是任意线程。如果调度到了主线程,然后sync操作先把主线程锁住,后续commit后再sync 主线程,就SIGSTOP了。 |
我自己模拟了死锁。 self.lock = [NSLock new]; 这个是会触发SIGSTOP 的。 |
有没有完整的日志文件,有的话可以贴一下 |
(lldb) bt all
|
卡死后,点暂停再bt all的堆栈。 |
大佬,有联系方式吗?红包奉上。看了好久没找到根因,头大 |
这个堆栈没有看到主线程的情况,你可以参考https://zhuanlan.zhihu.com/p/347468346 这里看一下'com.qgame.vap.render'这个线程unlock_wait是等的哪一个对象,另外可以分析一下主线程又是什么情况。 |
你这里是很好复现么?是使用vap demo也可以复现?如果是的话,可以提供一下素材等,我这边调试看一下。 |
你可以加一下vap的qq讨论群,719738292 |
https://video.hellobixin.com/video/d6fd8ff7c84f43d78cdda3d968b9e441.mp4 不是vap的demo,在工程里面。不易复现,线上又个用户反馈了一次,我自己试了很多遍才触发一次。 好的我加下群,谢谢。 |
你这边出现的卡死,确定是主线程卡死了么?还是说vap特效画面停留在最后一帧。加群后可@斌儿 |
好的,已加群并at相关大神。谢谢哈。我看堆栈就是主线程卡住了。 |
@Monkey-Sun @wubiner 可有最新进展? |
当时提供的信息不能表明是vap导致的主线程卡死,所以没有结论。如果你有类似的crash,可贴附件信息。 |
Thread 0 name: com.qgame.vap.decode (cpu_usage: 0.00%) 最近监控到卡顿问题频发,@Monkey-Sun @wubiner 看看这个日志是否能确定呢 |
@Monkey-Sun 请问你有解决这个问题吗?我这边也遇到了相同的问题。 |
com.qgame.vap.render |
frame ---0: 0x00000001d3d67d30 libsystem_kernel.dylib
__semwait_signal + 8 frame ---1: 0x00000001b0f3d7bc libsystem_c.dylib
nanosleep + 216frame ---2: 0x00000001b0f3d68c libsystem_c.dylib
usleep + 68 frame ---3: 0x0000000110c2eb70 libMTLCapture.dylib
___lldb_unnamed_symbol2227$$libMTLCapture.dylib + 44frame ---4: 0x0000000110c2c97c libMTLCapture.dylib
___lldb_unnamed_symbol2180$$libMTLCapture.dylib + 276 frame ---5: 0x0000000110c2ce3c libMTLCapture.dylib
___lldb_unnamed_symbol2182$$libMTLCapture.dylib + 428frame ---6: 0x0000000110c2af18 libMTLCapture.dylib
___lldb_unnamed_symbol2127$$libMTLCapture.dylib + 104 frame ---7: 0x0000000121dbd5f0 libdispatch.dylib
_dispatch_client_callout + 20frame ---8: 0x0000000121dcdd50 libdispatch.dylib
_dispatch_sync_invoke_and_complete_recurse + 184 frame ---9: 0x0000000110c2ada0 libMTLCapture.dylib
___lldb_unnamed_symbol2124$$libMTLCapture.dylib + 608frame ---10: 0x0000000110c2d9b4 libMTLCapture.dylib
___lldb_unnamed_symbol2206$$libMTLCapture.dylib + 236 frame ---11: 0x0000000110bf90ac libMTLCapture.dylib
___lldb_unnamed_symbol992$$libMTLCapture.dylib + 1056frame ---12: 0x0000000110c0f3b4 libMTLCapture.dylib
___lldb_unnamed_symbol1417$$libMTLCapture.dylib + 116 frame ---13: 0x0000000110bdf6a4 libMTLCapture.dylib
___lldb_unnamed_symbol676$$libMTLCapture.dylib + 260frame ---14: 0x0000000110bdf584 libMTLCapture.dylib`___lldb_unnamed_symbol675$$libMTLCapture.dylib + 168
-[QGHWDMetalRenderer renderPixelBuffer:metalLayer:](self=0x0000000281a5d880, _cmd="renderPixelBuffer:metalLayer:", pixelBuffer=0x00000002807a8fa0, layer=0x0000000283233c80) at QGHWDMetalRenderer.m:285:5 frame ---16: 0x00000001050cf84c MyApp
-[QGHWDMetalView display:](self=0x000000015b1ff550, _cmd="display:", pixelBuffer=0x00000002807a8fa0) at QGHWDMetalView.m:113:5frame ---17: 0x00000001050f4604 MyApp
-[UIView(self=0x0000000122a6ad60, _cmd="hwd_displayNext") hwd_displayNext] at UIView+VAP.m:439:9 frame ---18: 0x00000001050f422c MyApp
__33-[UIView(.block_descriptor=0x000000016dfee808) hwd_renderVideoRun]_block_invoke.282 at UIView+VAP.m:393:33frame ---19: 0x0000000121dbd5f0 libdispatch.dylib
_dispatch_client_callout + 20 frame ---20: 0x0000000121dcd99c libdispatch.dylib
_dispatch_async_and_wait_invoke + 220frame ---21: 0x0000000121dbd5f0 libdispatch.dylib
_dispatch_client_callout + 20 frame ---22: 0x0000000121dcc890 libdispatch.dylib
_dispatch_main_queue_callback_4CF + 1000frame ---23: 0x00000001a7dbb1e4 CoreFoundation
__CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 16 frame ---24: 0x00000001a7db53b4 CoreFoundation
__CFRunLoopRun + 2508frame ---25: 0x00000001a7db44bc CoreFoundation
CFRunLoopRunSpecific + 600 frame ---26: 0x00000001be839820 GraphicsServices
GSEventRunModal + 164frame ---27: 0x00000001aa758734 UIKitCore
-[UIApplication _run] + 1072 frame ---28: 0x00000001aa75de10 UIKitCore
UIApplicationMain + 168frame ---29: 0x00000001027723f4 MyApp
main(argc=1, argv=0x000000016d84b7e0) at main.m:15:16 frame ---30: 0x00000001a7a7be60 libdyld.dylib
start + 4The text was updated successfully, but these errors were encountered: