Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Lots of crashes at gpus_ReturnNotPermittedKillClient

Tags:

ios

mkmapview

I'm getting a lot of crash reports on iOS 8 with this stack trace:

Thread : Crashed: com.apple.mapdisplay.dispatch.tiledecodequeue
0  libGPUSupportMercury.dylib     0x2ce478fe gpus_ReturnNotPermittedKillClient + 9
1  libGPUSupportMercury.dylib     0x2ce483cb gpusSubmitDataBuffers + 110
2  libGPUSupportMercury.dylib     0x2ce48249 gldCreateContext + 208
3  GLEngine                       0x28a4e93b gliCreateContextWithShared + 602
4  OpenGLES                       0x28b2aab3 -[EAGLContext initWithAPI:properties:] + 406
5  OpenGLES                       0x28b2a8ff -[EAGLContext initWithAPI:sharegroup:] + 114
6  VectorKit                      0x30fb3e65 ggl::OESContext::OESContext(ggl::GLDevice*, std::__1::shared_ptr<ggl::OESSharegroup>) + 492
7  VectorKit                      0x30fad45d ggl::GLDevice::vendLoader() + 204
8  VectorKit                      0x30f885c5 -[VKRoadTile buildGglMeshesWithDevice:] + 2032
9  VectorKit                      0x30f870c9 -[VKRoadTile initWithKey:modelTile:styleManager:sharedResources:contentScale:device:] + 84
10 VectorKit                      0x30c3a893 -[VKRoadTileSource tileForData:downloadKey:sourceKey:] + 154
11 VectorKit                      0x30c34bc5 __49-[VKTileSource decodeData:downloadKey:sourceKey:]_block_invoke + 84
12 libdispatch.dylib              0x33e917bb _dispatch_call_block_and_release + 10
13 libdispatch.dylib              0x33e98577 _dispatch_async_redirect_invoke + 550
14 libdispatch.dylib              0x33e9adab _dispatch_root_queue_drain + 866
15 libdispatch.dylib              0x33e9a9a9 _dispatch_worker_thread + 72
16 libsystem_pthread.dylib        0x33ff4e93 _pthread_body + 138
17 libsystem_pthread.dylib        0x33ff4e07 _pthread_start + 118

Most of them happen on iOS 8.2.0 while app running in background.

I'm sure no action performs to mapview except for setCenterCoordinate and setRegion when in background.

According to Apple Q&A I know that I shouldn't make MKMapView redraw in background. But I tried change mapview's centerCoordinate and region in background programetically but it didn't crash.

Is this a bug of iOS 8.2.0 ? Is there any way to fix or avoid this? Thanks!

like image 875
debuggenius Avatar asked Mar 27 '15 03:03

debuggenius


1 Answers

You need to stop rendering to any OpenGL ES Surface as soon as you enter the background.

As Apple suggests in the linked article, use the AppDelegate methods combined with NSNotificationCenter...

Look at this answer for reference...

like image 184
jesses.co.tt Avatar answered Oct 13 '22 14:10

jesses.co.tt