Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mysterious crash on iOS 8

Tags:

ios

ios8

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

Date/Time:       2014-09-17T20:26:15Z
OS Version:      iPhone OS 8.0 (12A365)
Report Version:  104

Exception Type:  SIGSEGV
Exception Codes: SEGV_ACCERR at 0x1
Crashed Thread:  0

Thread 0 Crashed:
0   libGPUSupportMercury.dylib           0x2a4f88fe gldGetBufferAllocationIdentifiers + 194
1   libGPUSupportMercury.dylib           0x2a4f93cb gpusSubmitDataBuffers + 108
2   libGPUSupportMercury.dylib           0x2a4f9249 gldCreateContext + 206
3   GLEngine                             0x2613c93b gliCreateContextWithShared + 600
4   OpenGLES                             0x26218ab3 glGetFramebufferParameteriAPPLE + 776
5   CoreImage                            0x23e88b8b 0x23dea000 + 650123
6   libdispatch.dylib                    0x314558b7 0x31454000 + 6327
7   libdispatch.dylib                    0x314564fb dispatch_once_f + 60
8   CoreImage                            0x23e88afb 0x23dea000 + 649979
9   CoreImage                            0x23e06c79 0x23dea000 + 117881
10  CoreUI                               0x29478837 CUIEqualRenditionKeysIgnoringAttribute + 71800
11  libsystem_pthread.dylib              0x315b9dcf sched_get_priority_min + 64
12  libsystem_platform.dylib             0x315b2867 _os_once + 40
13  libsystem_pthread.dylib              0x315b7f8b pthread_once + 48
14  CoreUI                               0x294787d9 CUIEqualRenditionKeysIgnoringAttribute + 71706
15  CoreUI                               0x2947faf7 CUIEqualRenditionKeysIgnoringAttribute + 101176
16  UIKit                                0x26f649db _UIGraphicsEndLetterpressWithStyle + 20792
17  UIKit                                0x26cf2875 UIGraphicsEndImageContext + 7838
18  UIKit                                0x26cf1fb5 UIGraphicsEndImageContext + 5598
19  UIKit                                0x26fe3db9 _UINavigationButtonUpdateAccessibilityBackgroundsForBlendMode + 287838
20  UIKit                                0x26cf19c7 UIGraphicsEndImageContext + 4080
21  UIKit                                0x26d8c1b1 UICeilToViewScale + 55778
22  UIKit                                0x26d70143 _UIBarHairlineShadowColorForBarStyle + 10164
23  UIKit                                0x26ce2b37 0x26cd6000 + 52023
24  QuartzCore                           0x2670accd CABackingStoreGetTypeID + 894
25  QuartzCore                           0x267066b5 CARenderServerGetServerPort + 5366
26  UIKit                                0x26cf5183 UIGraphicsGetImageFromCurrentImageContext + 2068
27  UIKit                                0x26cf1fb5 UIGraphicsEndImageContext + 5598
28  UIKit                                0x26d6efc5 _UIBarHairlineShadowColorForBarStyle + 5686
29  UIKit                                0x26d6ec63 _UIBarHairlineShadowColorForBarStyle + 4820
30  UIKit                                0x26d6e3cd _UIBarHairlineShadowColorForBarStyle + 2622
31  UIKit                                0x26fd5a6f _UINavigationButtonUpdateAccessibilityBackgroundsForBlendMode + 229652
32  UIKit                                0x26d6b837 _UIAccessibilityReduceMotion + 16948
33  UIKit                                0x26ce53d9 _UIApplicationLinkedOnOrAfter + 2526
34  UIKit                                0x26ce535d _UIApplicationLinkedOnOrAfter + 2402
35  UIKit                                0x26d6b24d _UIAccessibilityReduceMotion + 15434
36  UIKit                                0x26fd7ef9 _UINavigationButtonUpdateAccessibilityBackgroundsForBlendMode + 239006
37  UIKit                                0x26d6b0b3 _UIAccessibilityReduceMotion + 15024
38  UIKit                                0x26dc516f UIRectIntegralWithScale + 1040
39  Pogoplug                             0x001bccc9 __41-[InitialSlidingViewController didSignIn]_block_invoke (InitialSlidingViewController.m:216)
40  libdispatch.dylib                    0x314558cb 0x31454000 + 6347
41  libdispatch.dylib                    0x314558b7 0x31454000 + 6327
42  libdispatch.dylib                    0x314590bf _dispatch_main_queue_callback_4CF + 720
43  CoreFoundation                       0x2380dbe9 CFRunLoopTimerSetTolerance + 3370
44  CoreFoundation                       0x2380c2e9 _CFRunLoopGet2b + 2926
45  CoreFoundation                       0x2375a621 CFRunLoopRunSpecific + 474
46  CoreFoundation                       0x2375a433 CFRunLoopRunInMode + 104
47  GraphicsServices                     0x2ab080a9 GSEventRunModal + 134
48  UIKit                                0x26d44809 UIApplicationMain + 1438
49  Pogoplug                             0x0012c4bf main (main.m:11)
50  libdyld.dylib                        0x31475aaf _tlv_atexit + 8

Any clues to what can be wrong will be much appreciated. Here the line 216

MenuViewController *menuVC = [[MenuViewController alloc] initWithNibName:nil bundle:nil];
NavControllerPortrait *navController = [[NavControllerPortrait alloc] initWithRootViewController:menuVC];

Getting it mostly on iPhone 5 and iPad 3rd gen (not sure its limited to those devices).

More info Another crash that happens bit less frequently has similar stack trace and cause by this code:

CELoginViewController *loginVC = [[CELoginViewController alloc] initWithNibName:nil bundle:nil];
NavControllerPortrait *nav = [[NavControllerPortrait alloc] initWithRootViewController:loginVC];

So i strongly suspect or my custom UINavigationController or Apple's changes to it. Given that I'm not the only one experiencing this crash - i tend more to blame Apple :-)

Thanks.

like image 799
Cherpak Evgeny Avatar asked Sep 18 '14 18:09

Cherpak Evgeny


3 Answers

I don't have enough reputation to comment and ask for details, however I am experiencing the same issue, mostly on iPhone 5 but also 5c, 4s, iPad 3 and iPod 5G, and I believe that what I'm going to say will be helpful even if it doesn't answer the question.

First of all, this is the crash that happens when you try to draw something with OpenGL or resize or move a MKMapView in the background. It might not be obvious in your crash logs, but every single one of the crash reports I got was when the application started in the background. It seems like it's the same for you, considering the UIViewController is called InitialSlidingViewController. It was with "Significant Location Update" most of the time in my case, however it could be "Background Fetch" or "Visits" update or "Silent Remote Notification" in your case.

One thing I noticed in my app was that it was setting up the navigation bar when it crashed, more specifically trying to render an image, I have tinted images in my navigation bar. For you it's something else but something that requires OpenGL, maybe a motion effect like parallax, I see _UIAccessibilityReduceMotion in the stack trace?

Regardless of what you are, or I am, doing, the fact that it happens more on some devices and never on some devices means that it's most probably an iOS bug. I also see "CI::can_use_gpu()" in my stack trace, it crashes because it uses gpu while checking if it can use gpu.

So how do we prevent it from crashing?

You can try disabling the feature you are using, for me I'll replace the image with the correctly colored one, instead of using a tint color.
Or you can try loading another view controller, maybe just an empty view controller, when the app starts in the background, then when it comes foreground swap the view controller with the one you are using right now.

like image 198
kbtombul Avatar answered Nov 18 '22 21:11

kbtombul


There is a discussion on the Apple developer forums about this very behavior, where an Apple employee acknowledges this to be a bug:

https://devforums.apple.com/thread/246744?start=0&tstart=0

iOS 8.3 was released just a few days ago, and if our crash monitoring is accurate, there's a very good chance that 8.3 has fixed this issue. I will update this answer once we have more than a few days' worth of data under our belts.

Edit: after a week's worth of crash reports from Fabric/Crashlytics, it looks like 8.3 has resolved two sources of this crash: one from MapKit where it tries to render vector map tiles and/or map overlay raster tiles with OpenGL ES in the background, and another one from UIKit where it tries to render a UITabBar's tab images in the background (again, using OpenGL ES in the background). Would love to hear from others what you're seeing in production.

like image 37
Richard Shin Avatar answered Nov 18 '22 20:11

Richard Shin


I am seeing this on an app which includes a mapKit view on one of the tabs. The error is reportedly tied to updates being performed on the map while the app is backgrounded, and I realized that the only thing that could be getting updated was the user location "blinky" blue dot. So I added code to set

   self.mapview.showsUserLocation = NO; 

whenever the app gets backgrounded, and sets it to YES when it becomes active. This seems to have stopped the error in my alpha testing. I will update this once I get back results from beta testing.

like image 1
software evolved Avatar answered Nov 18 '22 22:11

software evolved