2014-09-18 18 views
12

Ich habe viel von Crash-Berichte auf iOS 8 mit diesem Stack-Trace erhalten:Mysterious Absturz auf 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 + 65
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 

Irgendwelche Hinweise auf das, was falsch sein kann, wird sehr geschätzt werden. Hier ist die Linie 216

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

es meist auf dem iPhone 5 bekommen und iPad 3. Generation (nicht sicher, auf diese Geräte ihre begrenzt).

Mehr Infos Ein weiterer Absturz, den Bit häufig ähnlichen Stack-Trace und Ursache von diesem Code hat weniger passiert:

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

So i UINavigationController oder Apples Änderungen es stark oder meine Gewohnheit vermuten. Da ich nicht der einzige bin, der diesen Absturz erlebt, tendiere ich dazu, Apple die Schuld zu geben :-)

Danke.

+0

Sie haben uns nicht viel gegeben, um weiterzugehen. Ich sehe nichts falsch mit dem Code. Funktioniert es im Simulator mit iOS 8? Wenn dies der Fall ist, dann ist Ihre einzige Hoffnung, das iPhone 5 mit iOS 8 zu finden und darauf zu testen. –

+0

Ich habe es auf meinem iPhone 5s/iPad Air mit iOS 8 versucht und es funktioniert auch gut, Simulator. –

+0

@CherpakEvgeny Leider hat das Ändern des getönten Bildes dieses Problem für mich nicht gelöst. Konnten Sie Ihr Problem beheben? – kbtombul

Antwort

23

Ich habe nicht genug Ruf, um zu kommentieren und nach Details zu fragen, aber ich habe das gleiche Problem, vor allem auf iPhone 5, aber auch 5c, 4s, iPad 3 und iPod 5G, und ich glaube, was ich bin zu sagen, wird hilfreich sein, auch wenn es die Frage nicht beantwortet.

Zuerst ist dies der Absturz, der auftritt, wenn Sie versuchen, etwas mit OpenGL zu zeichnen oder die Größe zu ändern oder ein MKMapView im Hintergrund verschieben. Es ist vielleicht nicht in Ihren Absturzprotokollen offensichtlich, aber jeder einzelne der Absturzberichte, die ich erhielt, war, wenn die Anwendung im Hintergrund gestartet wurde. Es scheint, dass es für Sie das gleiche ist, wenn man bedenkt, dass der UIViewController InitialSlidingViewController heißt. Es war die meiste Zeit in meinem Fall mit "Significant Location Update", aber in Ihrem Fall könnte es sich um "Background Fetch" oder "Visits" Update oder "Silent Remote Notification" handeln.

Eine Sache, die ich in meiner App bemerkte, war, dass es die Navigationsleiste eingerichtet hat, als es abgestürzt ist, genauer gesagt versucht, ein Bild zu rendern, habe ich Bilder in meiner Navigationsleiste getönt. Für Sie ist es etwas anderes als etwas, das OpenGL benötigt, vielleicht einen Bewegungseffekt wie Parallax, ich sehe _UIAccessibilityReduceMotion im Stack-Trace?

Egal, was Sie sind, oder ich tue, die Tatsache, dass es mehr auf einigen Geräten passiert und nie auf einigen Geräten bedeutet, dass es wahrscheinlich ein iOS-Fehler ist. Ich sehe auch "CI :: can_use_gpu()" in meinem Stack-Trace, es stürzt ab, weil es GPU verwendet, während es prüft, ob es GPU verwenden kann.

Also, wie verhindern wir, dass es abstürzt?

Sie können versuchen, die Funktion zu deaktivieren, die Sie verwenden, für mich werde ich das Bild durch die richtige Farbe ersetzen, anstatt eine Tönungsfarbe zu verwenden.
Oder Sie können versuchen, einen anderen View-Controller zu laden, vielleicht nur einen leeren View-Controller, wenn die App im Hintergrund startet. Wenn es dann im Vordergrund ist, tauschen Sie den View-Controller mit dem, den Sie gerade verwenden.

+2

Ich habe tatsächlich so viel verdächtigt - aus den gleichen Gründen, und es gibt ein Sprichwort "Große Köpfe denken, wie ein" - so denke ich, das ist der Fall –

+0

Ich vermute nicht, dass dies ein ist iOS-Fehler: https://developer.apple.com/library/ios/qa/qa1766/_index.html –

+3

Dank @Sjoerd für die Bezugnahme auf die Dokumente, ich hätte diesen Link in meiner Antwort enthalten, werde ich entsprechend aktualisieren. Das Problem ist, dass iOS OpenGL intern für einige grundlegende Aufgaben verwendet und diesen Absturz verursacht. Ich habe einen View-Controller, der ein UIBarButtonItem mit einem getönten Bild hat. Ich habe diese Schaltfläche in ViewDidLoad eingerichtet und ich mache diese Ansicht Controller rootViewController in ApplicationDidFinishLaunch. Ich denke, das ist ein ziemlich einfaches Setup, um diese Art von Problem zu haben. – kbtombul

1

Ich sehe das auf einer App, die eine mapKit-Ansicht auf einer der Registerkarten enthält. Der Fehler ist Berichten zufolge an Aktualisierungen gebunden, die auf der Karte durchgeführt wurden, während die App im Hintergrund lief. Ich erkannte, dass das einzige, was aktualisiert werden konnte, der Benutzerstandort "blinky" blue dot war. So habe ich Code

self.mapview.showsUserLocation = NO; 

zu setzen, wenn die App backgrounded wird, und setzt es auf JA, wenn es aktiv wird.Dies scheint den Fehler in meinem Alpha-Test gestoppt zu haben. Ich werde dies aktualisieren, sobald ich Ergebnisse aus dem Beta-Test zurückbekomme.

+1

Immer noch diesen Absturz von Benutzern zu sehen, also wieder hinein graben. Der Stapel-Trace enthält einen Aufruf an eine Methode "VKPolygonTileSource TileForData: downloadKey: sourceKey", also frage ich mich, ob die Map-Kacheln heruntergeladen oder aktualisiert werden, während die App im Hintergrund läuft. Ein mögliches Szenario - schlechte Konnektivität so eine langsame Verbindung, Karte beginnt zu laden, Benutzer Hintergründe es über Home-Taste, eine Karte Kachel beendet Laden, versucht zu aktualisieren, Absturz. –

+0

Immer noch diesen Absturz, aber auf einer viel niedrigeren Frequenz (einmal pro Woche). Dies ist eine unternehmenskritische Enterprise-App, aber auch das ist problematisch. :-( –

2

Es gibt eine Diskussion über die Apple-Entwickler-Foren über dieses sehr Verhalten, wo ein Apple-Mitarbeiter dabei um einen Fehler zu sein erkennt:

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

iOS 8.3 noch vor wenigen Tagen veröffentlicht wurde, und wenn Unsere Crash-Überwachung ist genau, es gibt eine sehr gute Chance, dass 8.3 dieses Problem behoben hat. Ich werde diese Antwort aktualisieren, sobald wir über mehr als ein paar Tage Daten verfügen.

Edit: nach einer Woche Absturzberichte von Fabric/Crashlytics, sieht es aus wie 8.3 zwei Ursachen dieses Absturzes gelöst: eine von MapKit, wo es versucht, Vektor-Map-Kacheln und/oder Karten-Overlay-Raster-Kacheln mit OpenGL zu rendern ES im Hintergrund und ein weiterer von UIKit, wo versucht wird, die Tab-Bilder einer UITabBar im Hintergrund darzustellen (wiederum mit OpenGL ES im Hintergrund). Würde gerne von anderen hören, was Sie in der Produktion sehen.

+0

Cool, thx. Inzwischen habe ich Code um dieses Problem zu umgehen, um es für alle zu beheben, und nicht nur für Benutzer, die auf 8.3 aktualisiert –

+0

ich sehe diesen Absturz in 8.3 noch ... –