Dziennik awarii systemu iOS, brak śledzenia wstecznego
Od czasu wydania ostatniej aktualizacji naszej aplikacji wielu użytkowników zaczęło narzekać na to, że aplikacja już się nie uruchamia. Otrzymaliśmy dziennik awarii i dziennik konsoli od 2 różnych użytkowników, a także wideo z awarii.
Nasza aplikacja nie zawiesza się na każdym urządzeniu, ale gdy to robi, ulega awarii za każdym razem w ciągu sekundy od dotknięcia ikony (film pokazuje to, jak również telefon znajomego).
Dziennik awarii jest bardzo dziwny, ponieważ nie zawiera śledzenia wstecznego, a wskaźnik ramki (R7) wynosi 0x00000000. Nie zmieniliśmy wiele dla tej aktualizacji i nic, co zmieniliśmy, nie mogło uszkodzić stosu w ten sposób. Ponadto ponowna instalacja aplikacji rozwiązuje problem. To prowadzi nas do przekonania, że błędu nie ma w naszym kodzie, ale w pliku binarnym, który mógł gdzieś zostać uszkodzony.
DetaleWedług niektórych użytkowników nasza aplikacja ulega awarii podczas uruchamiania od ostatniej aktualizacji. Nie możemy odtworzyć tego problemu, ale otrzymaliśmy dzienniki awarii od jednego z użytkowników. Dziennik pochodzi z dysku twardego użytkownika (~ / Library / Logs / CrashReporter / MobileDevice /). Widziałem to samo bezpośrednio z telefonu znajomego, który doświadcza tego samego problemu.
Ta awaria pojawia się, gdy tylko nasza aplikacja przejmie kontrolę z iOS (patrz aktualizacja). Dzienniki awarii nie zawierają jednak śledzenia wstecznego i stwierdza, że wystąpił błąd w nieznanym wątku. Próbowałem symbolizować dziennik, ale oczywiście nie ma nic symbolicznego.
Wydaje się, że jest to jakiś błąd nullpointer, ale dlaczego nie ma śladu wstecznego? Co może spowodować ten rodzaj błędu i co mogę zrobić, aby go odtworzyć / rozwiązać?
Incident Identifier: 984C8208-F4B4-4325-90B3-C9BE371E1A12
CrashReporter Key: c512972e5cd00e75d8d7a6ddb59ff9a08946fd7b
Hardware Model: iPad3,3
Process: MyApp [3224]
Path: /var/mobile/Applications/A0AEAA1D-7E5D-4BDC-8C9F-EA5FF4595059/MyApp.app/MyApp
Identifier: MyApp
Version: ??? (???)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2012-10-18 09:27:06.158 +0200
OS Version: iOS 6.0 (10A403)
Report Version: 104
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000
Highlighted Thread: 0
Backtrace not available
Unknown thread crashed with ARM Thread State (32-bit):
r0: 0x000e64e0 r1: 0x7f8940c0 r2: 0x00000000 r3: 0x3c56cb88
r4: 0x2fd1bd34 r5: 0x00000000 r6: 0x00000000 r7: 0x00000000
r8: 0x2fd1bd3c r9: 0x3c5688a8 r10: 0x00000000 r11: 0x00000000
ip: 0x80000028 sp: 0x2fd1bd40 lr: 0x2fe9a8d7 pc: 0x000e64e0
cpsr: 0x60000010
Binary Images:
0xe5000 - 0x170fff +MyApp armv7 <15fd2c3131d03790bcd321411a241390> /var/mobile/Applications/A0AEAA1D-7E5D-4BDC-8C9F-EA5FF4595059/MyApp.app/MyApp
0x2fe96000 - 0x2feb6fff dyld armv7 <75594988728831d98e1f7c4c7b7ca29d> /usr/lib/dyld
[...]
AktualizacjaWideo wysłane do mnie przez tego samego użytkownika wskazuje, że aplikacja się zawieszaprzed rozpoczyna się animacja wstępu. Zanim aplikacja się uruchomi (lub jedna z pierwszych linii kodu naszej aplikacji).
W architekturze ARMv6 / 7 rejestr R7 zawiera wskaźnik ramki. Powinien wskazywać na poprzednią ramkę stosu, ale w naszym przypadku jest to 0x00000000. Wiele rejestrów jest faktycznie pustych. Co mogłoby to spowodować?
Również awarie są bardzo spójne; rozbija siękażdego razu w ciągu sekundy od dotknięcia ikony. Przynajmniej dla tego konkretnego użytkownika. Otrzymaliśmy więcej, ale mniej szczegółowych raportów o aplikacji „nie uruchamiającej się”. Ponowna instalacja aplikacji rozwiązuje wszelkie problemy użytkownika.
Dziennik konsoli też nie pokazuje zbyt wiele, tylko to:
To zaczyna brzmieć bardzo podobnie, jak aktualizacja przez App Store psuje plik binarny, ale tylko przy aktualizacji:
http://www.pcworld.com/article/258827/updated_apps_crashing_heres_what_you_need_to_know.html
http://www.marco.org/2012/07/04/app-store-corrupt-binaries
Wysłałem prośbę do serwisu technicznego Apple o pomoc w tej sprawie. Zgłoszę się tutaj.
Aktualizacja usługi technicznej AppleWysłałem raport o błędzie, poprosili o dziennik konsoli czasu awarii. Dostarczyłem im jeden, który moim zdaniem nie zawiera zbyt wielu zastosowań. Z wyjątkiem:
2012-10-23 09:14:18 +0000 backboardd Application 'UIKitApplication:com.company.myapp[0xdd31]' exited abnormally with signal 11: Segmentation fault: 11
Dział techniczny również nie wie, co zrobić z tym problemem, ale radził nam, aby NIE przesyłać nowego pliku binarnego bez żadnych zmian kodu. Nie ma możliwości przetestowania, czy problemy znikną (wtf), a jeśli nie zadziała, to jeszcze bardziej zakłóci działanie użytkowników.
Wciąż czekam na odpowiedź na mój raport o błędzie ...