问题描述
我偶尔会遇到iOS 6 MapKit崩溃。无法真正重现它。导致这种情况的原因是什么?
I'm getting occasionally crash with iOS 6 MapKit. Can't really reproduce it. What can cause this?
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000044
Crashed Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 IMGSGX543GLDriver 0x38f231b4 sgxTextureGetImageRowBytes(GLDTextureRec*, unsigned int, unsigned int) + 8
1 IMGSGX543GLDriver 0x38f23160 CalculateChunkPlaneSizes(GLDTextureRec*, int, unsigned int*, unsigned int*, unsigned int*, unsigned int*) + 104
2 IMGSGX543GLDriver 0x38f25906 sgxConfigureTexturePrivate(GLDTextureRec*) + 82
3 IMGSGX543GLDriver 0x38f24584 glrUpdateTexture + 616
4 libGPUSupportMercury.dylib 0x342c76b6 gldLoadFramebuffer + 102
5 GLEngine 0x31b50e52 gleUpdateDrawFramebufferState + 178
6 GLEngine 0x31b52556 gleDoDrawDispatchCoreES2 + 126
7 GLEngine 0x31aedbc0 gleDrawArraysOrElements_Entries_Body + 140
8 GLEngine 0x31aea5ec glDrawArrays_ES2Exec + 160
9 VectorKit 0x3780dcd6 -[VKSkyModel drawScene:withContext:] + 326
10 VectorKit 0x377e76d6 -[VKModelObject recursiveDrawScene:whenReadyWithContext:] + 118
11 VectorKit 0x377621ea -[VKMapModel recursiveDrawScene:withContext:] + 278
12 VectorKit 0x37762096 -[VKModelObject recursiveDrawScene:withContext:] + 186
13 VectorKit 0x3775d4da -[VKScreenCanvas onTimerFired:] + 1014
14 VectorKit 0x3775b548 -[VKMapCanvas onTimerFired:] + 500
15 VectorKit 0x3775a3d2 -[VKMainLoop displayTimerFired:] + 610
16 QuartzCore 0x3095b06c CA::Display::DisplayLink::dispatch(unsigned long long, unsigned long long) + 156
17 QuartzCore 0x3095afc4 CA::Display::IOMFBDisplayLink::callback(__IOMobileFramebuffer*, unsigned long long, unsigned long long, unsigned long long, void*) + 60
18 IOMobileFramebuffer 0x331e4fd4 IOMobileFramebufferVsyncNotifyFunc + 152
19 IOKit 0x36fc4446 IODispatchCalloutFromCFMessage + 190
20 CoreFoundation 0x382a95d8 __CFMachPortPerform + 116
21 CoreFoundation 0x382b4170 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 32
22 CoreFoundation 0x382b4112 __CFRunLoopDoSource1 + 134
23 CoreFoundation 0x382b2f94 __CFRunLoopRun + 1380
24 CoreFoundation 0x38225eb8 CFRunLoopRunSpecific + 352
25 CoreFoundation 0x38225d44 CFRunLoopRunInMode + 100
26 GraphicsServices 0x3415f2e6 GSEventRunModal + 70
27 UIKit 0x351b72fc UIApplicationMain + 1116
28 MyApp 0x0005d78a main (main.m:14)
29 MyApp 0x0005d744 start + 36
推荐答案
我发现了这个。它可以帮助您解决问题。
I found this. It may help you fix your problem.
问题:在调用presentRenderBuffer之后,基于OpenGL ES的应用程序显示闪烁或陈旧帧。
当OpenGL ES应用程序在没有先绘制任何内容的情况下调用EAGL presentRenderbuffer方法时,可能会出现此症状。屏幕上显示的内容可能包含未初始化的像素或先前渲染的帧。要解决此问题,在调用presentRenderbuffer之前,应始终向帧缓冲区绘制内容。 。另请注意,除非您在CAEAGLLayer上设置RetainedBackbuffer属性以启用保留后备缓冲模式,否则在调用presentRenderbuffer后,无法保证renderbuffer的内容保持有效。
"Issue: An OpenGL ES-based application displays "flashing" or "stale" frames after a call to presentRenderBuffer.This symptom can occur when an OpenGL ES application calls the EAGL presentRenderbuffer method without first drawing anything. What is seen on screen may contain uninitialized pixels or previously rendered frames. To correct this issue, you should always draw something to your framebuffer before calling presentRenderbuffer. Also note that unless you set the RetainedBackbuffer property on your CAEAGLLayer to enable retained backbuffer mode, the contents of your renderbuffer are not guaranteed to remain valid after a call to presentRenderbuffer".
-Lewis
这篇关于iOS 6地图偶尔会崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!