Как решить KERN_PROTECTION_FAILURE и KERN_INVALID_ADDRESS? - PullRequest
14 голосов
/ 09 июня 2011

Как вы можете решить KERN_PROTECTION_FAILURE и KERN_INVALID АДРЕС?Кажется, что и то и другое происходит в одном и том же месте, когда я запускаю свое приложение.

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x6d783f44
Crashed Thread:  2

Thread 2 Crashed:
0   libobjc.A.dylib                 0x34a80464 objc_msgSend + 16
1   Foundation                      0x31171dda __+[__NSOperationInternal _observeValueForKeyPath:ofObject:changeKind:oldValue:newValue:indexes:context:]_block_invoke_7 + 10
2   libSystem.B.dylib               0x30dd9678 _dispatch_call_block_and_release + 12
3   libSystem.B.dylib               0x30dd9b98 _dispatch_worker_thread2 + 120
4   libSystem.B.dylib               0x30d7e24a _pthread_wqthread + 258
5   libSystem.B.dylib               0x30d76970 start_wqthread + 0

И:

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000011
Crashed Thread:  7

Thread 7 Crashed:
0   libobjc.A.dylib                 0x34a80464 objc_msgSend + 16
1   Foundation                      0x31171dfc -[NSOperation completionBlock] + 16
2   Foundation                      0x31171dda __+[__NSOperationInternal _observeValueForKeyPath:ofObject:changeKind:oldValue:newValue:indexes:context:]_block_invoke_7 + 10
3   libSystem.B.dylib               0x30dd9678 _dispatch_call_block_and_release + 12
4   libSystem.B.dylib               0x30dd9b98 _dispatch_worker_thread2 + 120
5   libSystem.B.dylib               0x30d7e24a _pthread_wqthread + 258
6   libSystem.B.dylib               0x30d76970 start_wqthread + 0

Странно то, что он падает на iPad 1 (iOS 4.2.1)) но не на iPad 2 (iOS 4.3.2).Может ли это быть проблемой с самим iPad или с памятью?Или это действительно ошибка в моем коде?Если так, то почему я не могу воспроизвести его на iPad 2?

1 Ответ

11 голосов
/ 09 июня 2011

EXC_BAD_ACCESS ошибки обычно возникают при попытке отправить сообщение объекту, который был освобожден.В этом случае, кажется, что-то в вашем NSOperation уже выпущено.Это почти наверняка ошибка в вашем коде.Что касается того, почему это происходит на одном iPad, а не на другом, то может случиться так, что на одном устройстве память, которая раньше содержала ваш объект, была повторно использована, но на другом все еще есть зомби вашего объекта.

Гораздо более полное объяснение здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...