iOS 9 GPU崩溃:gpus_ReturnGuiltyForHardwareRestart

时间:2016-08-26 19:05:39

标签: ios opengl-es

我定期与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

0 个答案:

没有答案