Подтвердить что ты не робот

Как решить KERN_PROTECTION_FAILURE и KERN_INVALID_ADDRESS?

Как вы можете решить KERN_PROTECTION_FAILURE и KERN_INVALID ADDRESS? Оба, кажется, происходят точно в том же месте, когда я запускаю свое приложение.

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?

4b9b3361

Ответ 1

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

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