Сбой при запуске утечки - PullRequest
0 голосов
/ 09 июля 2010

Недавно установив 4.0 SDK, я перекомпилировал клиентский проект, чтобы проверить, как он будет работать под новой ОС. (Ранее тестирование с 3.1.3 не имело сбоев и только одну утечку памяти, должным образом сообщено Apple, которая не смогла воспроизвести на 4.0 beta 3, и поэтому закрыта.)

Все шло очень гладко (без сбоев во время тестирования), пока я не решил запустить его с утечками, что приводит к сбою моего приложения при каждом запуске.

Все журналы аварий выглядят так:

Thread 0 Crashed:
0   libobjc.A.dylib                 0x00002866 objc_msgSend + 10
1   MyApp                           0x000040b0 0x1000 + 12464
2   MyApp                           0x000040b0 0x1000 + 12464
3   MyApp                           0x000040b0 0x1000 + 12464
...
511 MyApp                           0x000040b0 0x1000 + 12464

У меня также есть утечки повсюду, но ответственная библиотека всегда принадлежит Apple, и мое приложение никогда не появляется в стеке. По крайней мере, для утечек, имеющих следы стека ... некоторые из них являются утечками общего блока без следа стека вообще.

Есть идеи?

Обновление: вышеописанное относится к моему iPhone 3GS под управлением iOS 4. Когда я запускаю сборку на своем iPod Touch 1st gen с версией 3.1.3, я даже не могу запустить Leaks, не говоря уже о том, чтобы он завис. Я могу нормально собирать и отлаживать это старое устройство.

(я устанавливаю свой базовый SDK на 4.0 и цель развертывания на 3.1.2)

Ответы [ 2 ]

0 голосов
/ 10 июля 2010

Клаус Брош правильно, это вызвано рекурсией. Если это отладочная сборка, это может быть сам отладчик, вызывающий проблемы.

Существует больше, чем обычно болтовня о проблемах отладчика от людей, которые обновились до Xcode 3.2.3. У меня была проблема с отладчиком, который зависал наугад в очевидной рекурсии, которая не имела никакого отношения к конкретному коду. Я решил это только путем полного удаления моего каталога /Developer и переустановки 4.0SDK.

Я обычно не люблю обвинять инструменты, но в этом случае это может быть оправдано.

0 голосов
/ 09 июля 2010

Похоже, у вас есть метод рекурсивного вызова самого себя, что приводит к переполнению стека.

Попробуйте скомпилировать приложение с включенными символами отладки, чтобы метод был раскрыт (надеюсь).

...