понимание журнала сбоев — KERN_PROTECTION_FAILURE

#iphone #objective-c #ipad #crash

#iPhone #objective-c #iPad #сбой

Вопрос:

Я пытаюсь устранить сбой, который время от времени происходит непредсказуемо и в разные моменты времени во время использования моего приложения. Я был бы очень признателен за любую помощь, поскольку я не понимаю, что это может быть, я преобразовал в ARC и использовал @AutoReleasePool там, где это необходимо, все еще я получаю это время от времени…

Дата / время: 2011-11-09 11:30:40,661 0100 Версия ОС: iPhone OS 5.0 (9A334) Версия отчета: 104

 Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_PROTECTION_FAILURE at 0x2fd74da8
Crashed Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   CoreFoundation                  0x36e1e786 -[NSArray isEqualToArray:]   14
1   CoreFoundation                  0x36e271cc -[NSArray isEqual:]   64
2   CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
3   CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
4   CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
5   CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
6   CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
7   CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
8   CoreFoundation                  0x36e1e876 -[NSArray isEqualToArray:]   254
9   CoreFoundation                  0x36e271cc -[NSArray isEqual:]   64
10  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
11  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
12  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
13  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
14  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
15  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
16  CoreFoundation                  0x36e1e876 -[NSArray isEqualToArray:]   254
17  CoreFoundation                  0x36e271cc -[NSArray isEqual:]   64
18  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
19  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
20  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
21  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
22  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
23  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
24  CoreFoundation                  0x36e1e876 -[NSArray isEqualToArray:]   254
25  CoreFoundation                  0x36e271cc -[NSArray isEqual:]   64
26  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
27  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
28  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
29  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
30  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
31  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
32  CoreFoundation                  0x36e1e876 -[NSArray isEqualToArray:]   254
33  CoreFoundation                  0x36e271cc -[NSArray isEqual:]   64
34  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
35  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
36  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
37  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
38  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
39  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
40  CoreFoundation                  0x36e1e876 -[NSArray isEqualToArray:]   254
41  CoreFoundation                  0x36e271cc -[NSArray isEqual:]   64
42  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
43  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
44  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
45  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
46  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
47  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
48  CoreFoundation                  0x36e1e876 -[NSArray isEqualToArray:]   254
49  CoreFoundation                  0x36e271cc -[NSArray isEqual:]   64
50  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
51  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
52  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
53  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
54  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
55  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
56  CoreFoundation                  0x36e1e876 -[NSArray isEqualToArray:]   254
57  CoreFoundation                  0x36e271cc -[NSArray isEqual:]   64
58  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
59  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
60  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
61  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
62  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
63  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
64  CoreFoundation                  0x36e1e876 -[NSArray isEqualToArray:]   254
65  CoreFoundation                  0x36e271cc -[NSArray isEqual:]   64
66  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
67  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
68  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
69  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
70  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
71  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
72  CoreFoundation                  0x36e1e876 -[NSArray isEqualToArray:]   254
73  CoreFoundation                  0x36e271cc -[NSArray isEqual:]   64
74  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
75  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
76  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
77  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
78  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
79  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
80  CoreFoundation                  0x36e1e876 -[NSArray isEqualToArray:]   254
81  CoreFoundation                  0x36e271cc -[NSArray isEqual:]   64
82  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
83  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
84  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
85  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
86  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
87  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
88  CoreFoundation                  0x36e1e876 -[NSArray isEqualToArray:]   254
89  CoreFoundation                  0x36e271cc -[NSArray isEqual:]   64
90  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
91  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
92  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
93  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
94  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
95  CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
96  CoreFoundation                  0x36e1e876 -[NSArray isEqualToArray:]   254
97  CoreFoundation                  0x36e271cc -[NSArray isEqual:]   64
98  CoreFoundation                  0x36e1ef7e -[NSDictionary isEqualToDictionary:]   310
99  CoreFoundation                  0x36e27d9c -[NSDictionary isEqual:]   64
100 CoreFoundation                  0x36e27d40 -[__NSCFDictionary isEqual:]   48
  

этот поток продолжает работать с тем же синтаксисом примерно в 300 строках…

Комментарии:

1. похоже на переполнение стека — есть какая-либо рекурсия в вашем приложении — любые массивы или словари, вложенные внутри самих себя и т.д.

Ответ №1:

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

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

Опубликуйте некоторый код.

Комментарии:

1. Я бы с удовольствием, хотя мое приложение довольно объемное с точки зрения кода, не могли бы вы указать мне, какая часть кода может иметь отношение?

2. Попробуйте приостановить работу в Xcode, чтобы получить представление о коде. Поместите NSLogs и / или точки останова в свой код, чтобы локализовать проблемную область. Ищите области, в которых NSDictionary или NSArray происходит перечисление или обработка.

3. 1 для «Возможно, в NSDictionary или NSArray есть запись, которая ссылается обратно на саму себя». Я уверен, что именно это здесь и происходит.