Подтвердить что ты не робот

Таинственный крах на iOS 8

Я получаю много отчетов о сбоях на iOS 8 с этой трассировкой стека:

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

Любые подсказки к тому, что может быть неправильным, будут высоко оценены. Здесь линия 216

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

Получение его в основном на iPhone 5 и iPad 3-го поколения (не уверен, что он ограничен этими устройствами).

Дополнительная информация Еще один крах, который случается бит менее часто, имеет аналогичную трассировку стека и вызывает этот код:

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

Так что я сильно подозреваю, или мой пользовательский UINavigationController или Apple меняются. Учитывая, что я не единственный, кто переживает этот крах - я склонен больше обвинять Apple: -)

Спасибо.

4b9b3361

Ответ 1

У меня недостаточно репутации, чтобы комментировать и спрашивать подробности, однако я испытываю ту же проблему, в основном на iPhone 5, а также 5c, 4s, iPad 3 и iPod 5G, и я считаю, что то, что я собираюсь сказать, будет полезно, даже если он не ответит на вопрос.

Прежде всего, это крах, который случается, когда вы пытаетесь что-то нарисовать с помощью OpenGL или изменяете размер или перемещаете MKMapView в фоновом режиме. Это может быть не очевидно в ваших журналах сбоев, но каждый из отчетов о сбоях, которые я получил, - это когда приложение запускалось в фоновом режиме. Кажется, что это то же самое для вас, учитывая, что UIViewController называется InitialSlidingViewController. Это было с "Значительным обновлением местоположения" в большинстве случаев в моем случае, однако это может быть обновление "Background Fetch" ​​или "Visits" или "Silent Remote Notification" в вашем случае.

Одна вещь, которую я заметил в своем приложении, заключалась в том, что она настраивала панель навигации, когда она разбилась, а более конкретно пыталась сделать изображение, у меня были тонированные изображения в моей навигационной панели. Для вас это что-то другое, но что-то, что требует OpenGL, возможно, эффект движения, такой как параллакс, я вижу _UIAccessibilityReduceMotion в трассировке стека?

Независимо от того, что вы или я делаю, тот факт, что это происходит на некоторых устройствах, и никогда на некоторых устройствах не означает, что это скорее всего ошибка iOS. Я также вижу "CI:: can_use_gpu()" в моей трассе стека, он сбой, потому что он использует gpu, проверяя, может ли он использовать gpu.

Итак, как мы можем предотвратить его сбой?

Вы можете попробовать отключить функцию, которую вы используете, для меня я заменю изображение правильно окрашенным, вместо того, чтобы использовать цвет оттенка.
Или вы можете попробовать загрузить другой контроллер представления, может быть, просто пустой контроллер представления, когда приложение запустится в фоновом режиме, а затем, когда он появится на переднем плане, замените контроллер вида на тот, который вы используете прямо сейчас.

Ответ 2

На форумах разработчиков Apple обсуждается это поведение, когда сотрудник Apple признает это ошибкой:

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

iOS 8.3 был выпущен всего несколько дней назад, и если наш контроль сбоев является точным, есть очень хороший шанс, что 8.3 устранил эту проблему. Я обновлю этот ответ, как только у нас появятся данные за несколько дней в наших поясах.

Изменить: после недели отчетов о сбоях от Fabric/Crashlytics, похоже, что 8.3 разрешило два источника этого сбоя: один из MapKit, где он пытается отображать плитки векторной карты и/или накладывать наложения растровых фрагментов карты с помощью OpenGL ES в фоновом режиме и еще один из UIKit, где он пытается отобразить вкладки UITabBar в фоновом режиме (опять же, используя OpenGL ES в фоновом режиме). Хотелось бы услышать от других, что вы видите на производстве.

Ответ 3

Я вижу это в приложении, которое включает представление mapKit на одной из вкладок. Сообщается, что ошибка связана с обновлениями, которые выполняются на карте во время фонового рисунка приложения, и я понял, что единственное, что может быть обновлено, - это местоположение пользователя "моргая" синей точкой. Поэтому я добавил код для установки

   self.mapview.showsUserLocation = NO; 

всякий раз, когда приложение получает фоновые сообщения и устанавливает его в YES, когда оно становится активным. Кажется, это остановило ошибку в моем альфа-тестировании. Я обновлю это, как только вернусь к результатам бета-тестирования.