我定期与gpus_ReturnGuiltyForHardwareRestart
发生崩溃。
崩溃是零星的,发生在一个复杂的多线程应用程序中。下面的示例堆栈跟踪。
当UI和相关处理程序受到压力时,似乎会发生(这种情况很少见)(想想过度活跃的用户会像应用程序和系统那样快速地制作大量手势),并且会产生大量调用后的调用场景和前期渲染。
研究gpus_ReturnGuiltyForHardwareRestart
表明这可能是由于缓冲问题造成的,例如由于存在绑定或无法解除绑定而导致缓冲区溢出。
gpus_ReturnGuiltyForHardwareRestart crash
(不相关,但我确实看过:gpus_ReturnGuiltyForHardwareRestart)
我的理解是缓冲区以某种方式被破坏,并且在访问损坏的缓冲区后的某个时间发生崩溃。
我已经完成了代码,并确保每个绑定的缓冲区和纹理随后都是未绑定的,以防止以后的代码进行不必要的/无意的更改;仍然在崩溃。
我刚碰到过这些,暗示操作系统中存在错误的可能性:
iOS 9 Beta 4 crash: gpus_ReturnGuiltyForHardwareRestart(原始海报显示在9 beta 5中确定)
Re: OpenGLES driver crash in iOS9 Beta2/3
但是,我目前正在测试9.3.4,所以它似乎已经修复。我已经尝试确保所有缓冲区在使用后都正确解除绑定,并尝试定期使用glFlush()
,两者都没有成功。
是否有人有过这方面的经验,有关潜在来源的知识,追踪原因的方法或修复方法?
堆栈追踪:
Date/Time: 2016-08-11T20:20:40Z
Launch Time: 2016-08-11T20:15:22Z
OS Version: iPhone OS 9.3.4 (13G35)
Report Version: 104
Exception Type: SIGSEGV
Exception Codes: SEGV_ACCERR at 0x1
Crashed Thread: 0
Thread 0 Crashed:
0 libGPUSupportMercury.dylib 0x0000000191bd9f28 gpus_ReturnGuiltyForHardwareRestart + 12
1 libGPUSupportMercury.dylib 0x0000000191bdaec4 gpusSubmitDataBuffers + 168
2 GLEngine 0x0000000195e9f1e4 gliPresentViewES_Exec + 172
3 GLEngine 0x0000000195e9f0fc gliPresentViewES + 80
4 OpenGLES 0x000000018576bc44 -[EAGLContext presentRenderbuffer:] + 68
5 NWFPApp 0x00000001001ef8fc -[NWFPIOSGLView renderNormalBuffers] (NWFPIOSGLView.mm:543)
6 NWFPApp 0x00000001001ef814 -[NWFPIOSGLView renderAll] (NWFPIOSGLView.mm:516)
7 NWFPApp 0x00000001001ee780 -[NWFPIOSGLView doInContext:] (NWFPIOSGLView.mm:135)
8 NWFPApp 0x00000001001ef770 -[NWFPIOSGLView drawView] (NWFPIOSGLView.mm:494)
9 NWFPApp 0x0000000100203cc8 -[NWFPGLChoreographer displayLinkEvent:] (NWFPGLChoreographer.m:128)
10 QuartzCore 0x000000018614022c CA::Display::DisplayLinkItem::dispatch() + 36
11 QuartzCore 0x00000001861400e0 CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 420
12 IOKit 0x0000000183885e54 IODispatchCalloutFromCFMessage + 368
13 CoreFoundation 0x00000001835ad030 __CFMachPortPerform + 176
14 CoreFoundation 0x00000001835c57d4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
15 CoreFoundation 0x00000001835c4f0c __CFRunLoopDoSource1 + 432
16 CoreFoundation 0x00000001835c2c64 __CFRunLoopRun + 1796
17 CoreFoundation 0x00000001834ecc50 CFRunLoopRunSpecific + 380
18 GraphicsServices 0x0000000184dd4088 GSEventRunModal + 176
19 UIKit 0x00000001887ce088 UIApplicationMain + 200
20 NWFPApp 0x00000001002af1a0 main (main.m:30)
21 ??? 0x000000018308a8b8 0x0 + 0