Vraag Hoe KERN_PROTECTION_FAILURE en KERN_INVALID_ADDRESS op te lossen?


Hoe kun je een KERN_PROTECTION_FAILURE en een KERN_INVALID ADRES oplossen? Beide lijken op exact dezelfde plek te gebeuren als ik mijn app gebruik.

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

En:

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

Raar ding is, het crasht op een iPad 1 (iOS 4.2.1) maar niet op een iPad 2 (iOS 4.3.2). Zou dit een probleem kunnen zijn met de iPad zelf of misschien met het geheugen? Of is het echt een fout in mijn code? Zo ja, waarom kan ik het niet reproduceren op de iPad 2?


13
2018-06-09 12:38


oorsprong


antwoorden:


EXC_BAD_ACCESS fouten zijn meestal van het proberen om een ​​bericht te verzenden naar een object dat is deallocated. In dit geval lijkt het iets in je te zijn NSOperation dat is al vrijgegeven. Dit is bijna zeker een bug in uw code. Wat betreft waarom het op de ene iPad gebeurt en niet in de andere, kan het zijn dat op één apparaat het geheugen dat je object bevatte, opnieuw is gebruikt maar aan de andere kant nog steeds een zombie van je object heeft.

Een veel grondiger uitleg is hier.


10
2018-06-09 12:56