2013-05-01 6 views
0

Я получил журнал аварий, который я не могу объяснить. Я искал вокруг, и кажется, что SIGSEGV имеет какое-то отношение к памяти. Но в моем случае нет ничего моего собственного кода, кроме main.m в stacktrace. Также он не символизирует ни одну из системных библиотек.Что может вызвать эту ошибку SIGSEGV?

Ошибка пока что произошла только на одном iPhone. На других телефонах я не смог воспроизвести его. Прямо сейчас я полностью застрял и не знаю, где продолжать, поэтому, если кто-нибудь видел что-то подобное, прежде чем было бы хорошо услышать их проблему и разрешение.

Журнал аварии:

Incident Identifier: TODO 
CrashReporter Key: TODO 
Hardware Model:  iPhone4,1 
OS Version:  iPhone OS 6.1.3 (10B329) 
Report Version: 104 
Exception Type: SIGSEGV 
Exception Codes: SEGV_ACCERR at 0x41fd5903 
Crashed Thread: 0 

Thread 0 Crashed: 
0 libobjc.A.dylib      0x3b0b9564 0x3b0b6000 + 13668 
1 libobjc.A.dylib      0x3b0bb1d7 0x3b0b6000 + 20951 
2 CoreFoundation      0x33396605 0x332d4000 + 796165 
3 CoreFoundation      0x3339635d 0x332d4000 + 795485 
4 libobjc.A.dylib      0x3b0bea65 0x3b0b6000 + 35429 
5 libc++abi.dylib      0x3ab0b07b 0x3ab0a000 + 4219 
6 libc++abi.dylib      0x3ab0b114 0x3ab0a000 + 4372 
7 libc++abi.dylib      0x3ab0c599 0x3ab0a000 + 9625 
8 libobjc.A.dylib      0x3b0be9d1 0x3b0b6000 + 35281 
9 CoreFoundation      0x332dcf21 0x332d4000 + 36641 
10 CoreFoundation      0x332dcd49 0x332d4000 + 36169 
11 GraphicsServices     0x36eb52eb 0x36eb0000 + 21227 
12 UIKit        0x351f2301 0x3519b000 + 357121 
13 Stylbar        0x0007109f main (main.m:21) 

Редактировать 3th мая:

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

Кажется, что это произошло примерно 15 раз подряд для одного и того же пользователя при открытии определенного контроллера вида. Контроллер представления выполняет несколько вызовов на сервер для загрузки сообщений, комментариев и изображений и изображений профиля. Весь код, который выполняется при открытии этого контроллера представления, вероятно, содержит более 2000 строк кода (исключая библиотеки RestKit и SBWebImage, которые используются в этом коде). Публикация этого кода здесь никому не поможет.

+0

Это происходит при запуске? При нажатии на определенную кнопку? При вызове метода? Предоставьте дополнительную информацию, желательно с кодом. –

ответ

0

Самый простой и полезный способ провести время, чтобы найти причину сбоя, - это посмотреть на свой код и сосредоточиться на местах, где UIKit имеет делегат, который указывает на ваш код. Например, я обнаружил, что наиболее распространенное место, которое могло бы проявиться, было в UITableView. Причина, по которой эти проблемы так трудно выявить, заключается в том, что они могут произойти только в ситуации с низкой памятью или в некоторых необычных условиях пользовательского интерфейса, которые очень трудно воспроизвести. Лучше всего сделать обзор кода и убедиться, что делегат, который настроен на то, чтобы указывать на ваши классы, возвращается к нулю в ваших собственных деструкторах объектов. Если у вас много разработчиков, часто лучше работать с абстракциями более высокого уровня, такими как общий стол и класс ячеек, которые используются во всем проекте, чем для того, чтобы каждый разработчик кодировал UITableView и делал ошибки, такие как забывание, чтобы исключить делегата, который очень трудно найти.

0

Проблема SIGSEGV возникает, когда ваше приложение пытается получить доступ к адресу памяти, который не существует, или к некоторому адресу, где уже зарезервирован для другой программы. У меня такая же проблема с приложением прямо сейчас, но я должен пересмотреть свой код, чтобы понять его лучше. Один ключ для такого рода проблемы может быть что-то эквивалент этого (в википедии):

#include <stdlib.h> 

INT основной (аннулируются)
{
символ р = NULL;/ p - указатель на символ, который инициализирует poiting в «никуда» */
* p = 'x';/* Пытается сохранить символ 'x' in 'no address' */
return 0;

Надеюсь, это может помочь кому-то.

Смежные вопросы