Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Occasionally iOS 6 MKMapView crashes in initWithFrame

I've an app on the apple store and after the iOS6 update I've got hundred of crash report within MKMapView. I cannot manage to reproduce the crash on my devices. It looks like a problem with EAGLContext. We don't use OpenGL in our app but we have more than one instances of MKMapView in different controller. I've found a similar issue here iOS 6 app crashes in EAGLContext when displaying maps but they use OpenGL.

Here there is the backtrace:

Exception Type:  SIGSEGV Exception Codes: SEGV_ACCERR at 0x1 Crashed Thread:  0  Thread 0 Crashed: 0   libGPUSupportMercury.dylib          0x00000e22 gpus_ReturnNotPermittedKillClient + 10 1   libGPUSupportMercury.dylib          0x3bccc5fb gldCreateContext + 190 2   GLEngine                            0x344c2b15 gliCreateContextWithShared + 676 3   OpenGLES                            0x0000491d -[EAGLContext initWithAPI:properties:] + 1433 4   OpenGLES                            0x000042d7 -[EAGLContext initWithAPI:sharedWithCompute:] + 143 5   VectorKit                           0x00011c81 -[VGLGPU init] + 105 6   VectorKit                           0x000d4659 __24+[VGLGPU sharedInstance]_block_invoke_0 + 49 7   libdispatch.dylib                   0x000014b7 _dispatch_client_callout + 23 8   libdispatch.dylib                   0x000073f7 dispatch_once_f$VARIANT$mp + 43 9   VectorKit                           0x00011c13 +[VGLGPU sharedInstance] + 39 10  VectorKit                           0x00001db1 -[VKMainLoop updateLinkState] + 485 11  VectorKit                           0x00001955 -[VKScreenCanvas _updateDisplayStatus:] + 109 12  UIKit                               0x0001c371 -[UIView initWithFrame:] + 129 13  VectorKit                           0x00010ca5 -[VGLScreenCanvas initWithFrame:context:] + 53 14  VectorKit                           0x00010a7d -[VKScreenCanvas initWithFrame:context:] + 57 15  VectorKit                           0x00010a3f -[VKScreenCanvas initWithFrame:] + 39 16  VectorKit                           0x000106bd -[VKMapCanvas initWithFrame:shouldRasterize:] + 65 17  VectorKit                           0x000104bb -[VKMapView initWithFrame:andGlobe:shouldRasterize:] + 647 18  MapKit                              0x0000dc95 -[MKMapView _commonInitAndEnableLoading:fromIB:] + 725 19  MapKit                              0x0000d811 -[MKMapView initWithFrame:] + 257 ..... 
like image 919
Breezeight Avatar asked Oct 03 '12 17:10

Breezeight


2 Answers

We were having a similar problem when user's background our app just as we're popping up a window that includes a map subview. The crash seemed to be happening due to the map using an openGL call while we're backgrounded. We had to wrap the map subview creation in a check like the following:

UIApplicationState appState = [[UIApplication sharedApplication] applicationState];     if( (appState != UIApplicationStateBackground) && (appState != UIApplicationStateInactive))     {         // Do map subview initialization...     }     else     {         self.attemptedToLoadMap = YES;     } 

We saved off the bool so that if the app comes back to the foreground we can add the subview in for display.

You have to do this anytime you're manipulating the map in a way that causes a re-draw operation (e.g., adding an annotation).

like image 169
stuckj Avatar answered Sep 23 '22 23:09

stuckj


http://developer.apple.com/library/ios/#qa/qa1766/_index.html

This Technical QA address this issue

like image 36
futbolpal Avatar answered Sep 23 '22 23:09

futbolpal