Registro de falhas do iOS, backtrace não disponível

Resumo

Desde que a última atualização do nosso aplicativo foi lançada, muitos usuários começaram a reclamar sobre o aplicativo não iniciar mais. Recebemos um registro de falhas e um registro do console de dois usuários diferentes, além de um vídeo do acidente.

Nosso aplicativo não trava em todos os dispositivos, mas, quando ocorre, trava sempre a cada segundo de um toque no ícone (o vídeo mostra isso, assim como o telefone de um amigo).

O log de falha é muito estranho, pois não contém um backtrace e o ponteiro de quadro (R7) é 0 x 00000000. Nós não mudamos muito para esta atualização e nada que mudamos poderia corromper a pilha assim. Além disso, a reinstalação do aplicativo corrige o problema. Isso nos leva a acreditar que o erro não está em nosso código, mas no binário que pode ter sido corrompido em algum lugar.

Detalhes

De acordo com alguns usuários, nosso aplicativo falha na inicialização desde a última atualização. Não conseguimos reproduzir esse problema, mas recebemos registros de falhas de um dos usuários. O log vem do disco rígido do usuário (~ / Library / Logs / CrashReporter / MobileDevice /). Eu vi a mesma coisa diretamente do telefone de um amigo que experimenta o mesmo problema.

Essa falha parece ocorrer assim que nosso aplicativo recebe o controle do iOS (consulte a atualização). No entanto, os logs de falha não contêm backtrace e afirma que ocorreu um erro em um thread desconhecido. Eu tentei simbolizar o log, mas obviamente não há nada para simbolizar.

Parece ser algum tipo de erro de nullpointer, mas por que não há backtrace? O que poderia causar esse tipo de erro e o que posso fazer para reproduzi-lo / resolvê-lo?

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
[...]
Atualizar

Um vídeo enviado para mim pelo mesmo usuário indica que o aplicativo falha mesmoantes a animação de introdução é iniciada. Portanto, antes que o aplicativo esteja realmente em execução (ou uma das primeiras linhas de código que nosso aplicativo executa).

Na arquitetura ARMv6 / 7, o registrador R7 mantém o ponteiro do quadro. Ele deve apontar para o quadro de pilha anterior, mas é 0x00000000 no nosso caso. Muitos registradores são nulos, na verdade. O que poderia causar isso?

Além disso, a falha é muito consistente; travatoda vez dentro de um segundo de tocar no ícone. Pelo menos para esse usuário em particular. Tivemos mais, mas menos específicos, relatórios do aplicativo "não iniciando". Reinstalar o aplicativo corrige qualquer problema que o usuário tenha.

O log do console também não mostra muito, apenas isto:

Está começando a soar muito como atualizar através da App Store corrompe o binário, mas apenas na atualização:

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

Enviei um pedido ao serviço técnico da Apple para ajudar nisso. Vou relatar de volta aqui.

Atualização do serviço técnico da Apple

Eu publiquei um relatório de bug, eles pediram um log do console do tempo de falha. Eu forneci-lhes um, que para mim não contém muito uso. Exceto:

2012-10-23 09:14:18 +0000 backboardd Application 'UIKitApplication:com.company.myapp[0xdd31]' exited abnormally with signal 11: Segmentation fault: 11

O departamento técnico também não sabe o que fazer com esse problema, mas nos avisou para NÃO fazer o upload de um novo binário sem nenhuma alteração no código. Não há como testar se os problemas desaparecem (wtf) e, se isso não funcionar, isso incomodará ainda mais os usuários.

Ainda esperando a resposta para o meu relatório de bug ...

questionAnswers(1)

yourAnswerToTheQuestion