Сбой приложения iOS при загрузке ресурса из интернета - PullRequest
0 голосов
/ 18 ноября 2011


Я пытаюсь отладить приложение, которое загружает много ресурсов из Интернета. Проблема в том, что иногда при загрузке приложения происходит сбой (не в том же месте или для того же ресурса).
Память кажется нормальной, нет предупреждений памяти, нет утечек, нет зомби, грязный размер остается около 10M§B + o- 2MB резидент 50MB.
Другая странная вещь заключается в том, что на симуляторе все еще никогда не возникала ошибка на устройстве.
Журнал сбоев идентифицирует сбои в другом потоке (num3) с EXC_BAD_ACCES (что-то пропало) в библиотеке Apple. Я не могу понять, ошибка приложения или ошибка API.

Идентификатор инцидента: 9138742F-0160-4220-8E62-000001650CF4 Ключ CrashReporter: 6f0ba5a6bbc182f6798918f01ccd6bac4f8e4713 Аппаратное обеспечение Модель: iPad1,1 Процесс: XXX-Upgraded [949] Путь:
/var/mobile/Applications/C98657F3-B7E6-4542-B0DA-70D8239E5210/XXX-Upgraded.app/XXX-Upgraded Идентификатор: Обновленная версия XXX: ??? (???) Тип кода:
ARM (собственный) родительский процесс: launchd 1

Дата / Время: 2011-11-18 11: 13: 25.994 +0100 Версия ОС: iPhone OS 5.0.1 (9A405) Версия отчета: 104

Тип исключения: EXC_BAD_ACCESS (SIGSEGV) Коды исключения: KERN_INVALID_ADDRESS at 0xf006191c Сбой потока: 3

Имя потока 0: Очередь отправки: поток com.apple.main Поток 0: 0
libsystem_kernel.dylib 0x360ad010 0x360ac000 + 4112 1
libsystem_kernel.dylib 0x360ad206 0x360ac000 + 4614 2
CoreFoundation 0x33ac441c 0x33a37000 + 578588 3
CoreFoundation 0x33ac311a 0x33a37000 + 573722 4
CoreFoundation 0x33a464d6 0x33a37000 + 62678 5
CoreFoundation 0x33a4639e 0x33a37000 + 62366 6
GraphicsServices 0x35686fc6 0x35683000 + 16326 7 UIKit 0x34b8b73c 0x34b5a000 + 202556 8 XXX-Upgrade
0x000028a8 main (main.m: 15) 9 XXX-Upgrade
0x00002860 старт + 32

Имя потока 1: Очередь отправки: поток com.apple.libdispatch-manager 1: 0 libsystem_kernel.dylib 0x360ad3b4 0x360ac000 + 5044 1
libdispatch.dylib 0x36dd3e78 0x36dc7000 + 52856 2
libdispatch.dylib 0x36dd3b96 0x36dc7000 + 52118

Имя темы 2: Тема 2: 0 libsystem_kernel.dylib
0x360ad010 0x360ac000 + 4112 1 libsystem_kernel.dylib
0x360ad206 0x360ac000 + 4614 2 CoreFoundation
0x33ac441c 0x33a37000 + 578588 3 CoreFoundation
0x33ac3154 0x33a37000 + 573780 4 CoreFoundation
0x33a464d6 0x33a37000 + 62678 5 CoreFoundation
0x33a4639e 0x33a37000 + 62366 6 WebCore
0x33f02128 0x33e5a000 + 688424 7 libsystem_c.dylib
0x3492bc16 0x3491c000 + 64534 8 libsystem_c.dylib
0x3492bad0 0x3491c000 + 64208

Тема 3: com.apple.NSURLConnectionLoader Тема 3 Сбой: 0
libobjc.A.dylib 0x35206fbc 0x35203000 + 16316 1
CoreFoundation 0x33a73d16 0x33a37000 + 249110 2
CoreFoundation 0x33a395bc 0x33a37000 + 9660 3
CFNetwork 0x32e56fd8 0x32dc7000 + 589784 4
CFNetwork 0x32e57cee 0x32dc7000 + 593134 5
CFNetwork 0x32e56940 0x32dc7000 + 588096 6
CoreFoundation 0x33a8555c 0x33a37000 + 320860 7
CoreFoundation 0x33a857a4 0x33a37000 + 321444 8
CoreFoundation 0x33ac4afc 0x33a37000 + 580348 9
CoreFoundation 0x33ac42c8 0x33a37000 + 578248 10 CoreFoundation 0x33ac306e 0x33a37000 + 573550 11 CoreFoundation 0x33a464d6 0x33a37000 + 62678 12CoreFoundation 0x33a4639e 0x33a37000 + 62366 13 Фонд 0x3152abc2 0x3151a000 + 68546 14 Тональный крем 0x3152aa8a 0x3151a000 + 68234 15 Фонд 0x315be59a 0x3151a000 + 673178 16 libsystem_c.dylib 0x3492bc16 0x3491c000 + 64534 17 libsystem_c.dylib 0x3492bad0 0x3491c000 + 64208

Имя потока 4: com.apple.CFSocket.private Поток 4: 0
libsystem_kernel.dylib 0x360bd570 0x360ac000 + 71024 1
CoreFoundation 0x33ac866a 0x33a37000 + 595562 2
libsystem_c.dylib 0x3492bc16 0x3491c000 + 64534 3
libsystem_c.dylib 0x3492bad0 0x3491c000 + 64208

Тема 5: 0 libsystem_kernel.dylib 0x360bdcd4 0x360ac000 + 72916 1 libsystem_c.dylib 0x3492630a 0x3491c000 + 41738 2 libsystem_c.dylib 0x3492609c 0x3491c000 + 41116

Тема 6: 0 libsystem_kernel.dylib 0x360bdcd4 0x360ac000 + 72916 1 libsystem_c.dylib 0x3492630a 0x3491c000 + 41738 2 libsystem_c.dylib 0x3492609c 0x3491c000 + 41116

Тема 7: 0 libsystem_kernel.dylib 0x360bdcd4 0x360ac000 + 72916 1 libsystem_c.dylib 0x3492630a 0x3491c000 + 41738 2 libsystem_c.dylib 0x3492609c 0x3491c000 + 41116

Поток 3 аварийно завершился с состоянием потока ARM: r0: 0x006eaf90 r1: 0x328c119e r2: 0xf0061914 r3: 0x3eeb09a8 r4: 0xf0061914 r5: 0x006eaf94 r6: 0x020014c0 r7: 0x0343b2b0 r8: 0x3eecc690 r9: 0x0ca30467 r10: 0x00000014 r11: 0x00000080 ip: 0x3eea6814 sp: 0x0343b2a0 lr: 0x33a73d1d pc: 0x35206fbc cpsr: 0x20000030

[Update]
В конце концов я был кабель, чтобы поймать ошибку. Кажется, что это переизданный кусок данных прямо в конце соединения: didReceiveData :. На самом деле, чтобы упростить отладку, я просто оставил одну строку кода, которая добавляет данные, используя поток вывода. Я не могу понять, где я переиздаю.
Инструменты показывают довольно странные вещи:
Во-первых, кажется, что зомби создается внутри какого-то Apple API, вызывающего
-в-вторых, если вы посмотрите на изображение трассировки стека, вы увидите, что существует CFRetain, который не увеличивает счетчик ссылок объекта, таким образом разбалансируя другие операции
SS from instruments

Может кто-нибудь мне помочь?
Спасибо,
Andrea

1 Ответ

0 голосов
/ 04 января 2012

OK,
после большого количества тестов a (запрос DST никогда не принимался во внимание Apple, НЕ ИСТИННО БОЛЬШЕ), головной боли, истерии и т. Д. Это оказывается своего рода ложным срабатыванием. Если я тестирую с использованием утечек, выделения, зомби, происходит обычный консольный отладчик. Если я запускаю приложение в одиночку только на устройстве (без его подключения), кажется, все работает нормально.

DTS помог мне найти ошибку, проблема, вероятно, связана с двумя ошибками, одна в инструментах, а другая CF. Самое главное, что эти ошибки влияют на приложение только при использовании журналов распределения, поэтому приложение может работать безопасно, как я обнаружил во время сеанса тестирования.

...