Dziennik awarii systemu iOS, brak śledzenia wstecznego

streszczenie

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.

Detale

Wedł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
[...]
Aktualizacja

Wideo 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 Apple

Wysł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 ...

questionAnswers(1)

yourAnswerToTheQuestion