Bloqueo con la versión NSManagedObject: "objc_msgSend () nombre del selector: _queueForDealloc"

He recibido un extraño bloqueo informado por muchos usuarios a través de HockeyApp con el siguiente seguimiento de pila. Parece tener algo que ver con el lanzamiento de NSManagedObject en una cola de despacho diferente ... pero no obtengo ninguna simbolización de dónde podría estar el problema. Parece un problema de administración de memoria, pero estoy usando ARC, así que no estoy seguro de cómo liberaría un NSManagedObject.

Este es el informe de bloqueo que obtengo (el hilo principal muestra diferentes rastros en diferentes momentos):

Code Type:       ARM-64
Parent Process:  launchd [1]

Date/Time:       2014-05-12T05:43:54Z
OS Version:      iPhone OS 7.0.6 (11B651)
Report Version:  104

Exception Type:  SIGSEGV
Exception Codes: SEGV_ACCERR at 0x1c3dbeb8
Crashed Thread:  2

Application Specific Information:
objc_msgSend() selector name: _queueForDealloc:

Thread 0:
0   CoreFoundation                       0x000000018e384618 CFNumberGetType + 0
1   CoreFoundation                       0x000000018e3333b8 _CFAppendXML0 + 2768
2   CoreFoundation                       0x000000018e333304 _CFAppendXML0 + 2588
3   CoreFoundation                       0x000000018e332268 _CFPropertyListCreateXMLData + 196
4   Foundation                           0x000000018ef152f4 -[NSDictionary(NSDictionary) writeToFile:atomically:] + 232
5   SimpleList                           0x00000001001ae48c __55-[SharedSettingController writeToContactsReferenceFile]_block_invoke (SharedSettingController.m:620)
6   libdispatch.dylib                    0x000000019a974420 _dispatch_call_block_and_release + 20
7   libdispatch.dylib                    0x000000019a9743e0 _dispatch_client_callout + 12
8   libdispatch.dylib                    0x000000019a97756c _dispatch_main_queue_callback_4CF + 340
9   CoreFoundation                       0x000000018e3e6d64 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 8
10  CoreFoundation                       0x000000018e3e50a4 __CFRunLoopRun + 1448
11  CoreFoundation                       0x000000018e325b38 CFRunLoopRunSpecific + 448
12  GraphicsServices                     0x0000000193d4b830 GSEventRunModal + 164
13  UIKit                                0x00000001913640e8 UIApplicationMain + 1152
14  SimpleList                           0x000000010006347c _mh_execute_header (main.m:18)
15  libdyld.dylib                        0x000000019a98faa0 start + 0

Thread 1:
0   libsystem_kernel.dylib               0x000000019aa71ac8 kevent64 + 8
1   libdispatch.dylib                    0x000000019a975d78 _dispatch_mgr_thread + 48

Thread 2 Crashed:
0   libobjc.A.dylib                      0x000000019a39f9d0 objc_msgSend + 16
1   CoreData                             0x000000018e13b284 -[NSManagedObject release] + 168
2   CoreData                             0x000000018e131154 -[_PFArray dealloc] + 96
3   libobjc.A.dylib                      0x000000019a3a13d4 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 520
4   libdispatch.dylib                    0x000000019a97b428 _dispatch_root_queue_drain + 440
5   libdispatch.dylib                    0x000000019a97b638 _dispatch_worker_thread2 + 72
6   libsystem_pthread.dylib              0x000000019ab09918 _pthread_wqthread + 352
7   libsystem_pthread.dylib              0x000000019ab097a8 start_wqthread + 0

Thread 3:
0   libsystem_kernel.dylib               0x000000019aa71cc0 mach_msg_trap + 8
1   CoreFoundation                       0x000000018e3e6cac __CFRunLoopServiceMachPort + 180
2   CoreFoundation                       0x000000018e3e4e3c __CFRunLoopRun + 832
3   CoreFoundation                       0x000000018e325b38 CFRunLoopRunSpecific + 448
4   Foundation                           0x000000018ef127fc +[NSURLConnection(Loader) _resourceLoadLoop:] + 344
5   Foundation                           0x000000018efa0770 __NSThread__main__ + 996
6   libsystem_pthread.dylib              0x000000019ab0c1b0 _pthread_body + 164
7   libsystem_pthread.dylib              0x000000019ab0c108 _pthread_start + 136
8   libsystem_pthread.dylib              0x000000019ab097b0 thread_start + 0

Thread 4:
0   libsystem_kernel.dylib               0x000000019aa8a76c __select + 8
1   libsystem_pthread.dylib              0x000000019ab0c1b0 _pthread_body + 164
2   libsystem_pthread.dylib              0x000000019ab0c108 _pthread_start + 136
3   libsystem_pthread.dylib              0x000000019ab097b0 thread_start + 0

Thread 5:
0   libsystem_kernel.dylib               0x000000019aa8ae74 __workq_kernreturn + 8
1   libsystem_pthread.dylib              0x000000019ab097a8 start_wqthread + 0

Thread 6:
0   libsystem_kernel.dylib               0x000000019aa8ae74 __workq_kernreturn + 8
1   libsystem_pthread.dylib              0x000000019ab097a8 start_wqthread + 0

Thread 7:
0   libsystem_kernel.dylib               0x000000019aa8ae74 __workq_kernreturn + 8
1   libsystem_pthread.dylib              0x000000019ab097a8 start_wqthread + 0

Thread 2 crashed with ARM-64 Thread State:
    pc: 0x000000019a39f9d0     fp: 0x0000000102b479c0     sp: 0x0000000102b479a0     x0: 0x00000001782451f0 
    x1: 0x000000018e2eeb56     x2: 0x00000001705336a0     x3: 0x000000019aac3d18     x4: 0x0000000000000001 
    x5: 0x0000000000000010     x6: 0x000000017013f900     x7: 0x0000000000000000     x8: 0x000000019ad5bdb8 
    x9: 0x000000001c3dbea8    x10: 0x0000000000000000    x11: 0x000000230000003f    x12: 0x000000014f073410 
   x13: 0xbadd5bcc1c3dbead    x14: 0xffffffffffffffff    x15: 0x0000000000000001    x16: 0x000000019a39f9c0 
   x17: 0x000000018e13b1d8    x18: 0x0000000000000000    x19: 0x00000001705336a0    x20: 0x000000019ad7b000 
   x21: 0x000000019adc9200    x22: 0x000000019ad7b000    x23: 0x0000000000000715    x24: 0x0000000000000010 
   x25: 0x0000000102a64038    x26: 0xa3a3a3a3a3a3a3a3    x27: 0x0000000000000001    x28: 0x0000000000000000 
    lr: 0x000000018e13b284   cpsr: 0x0000000020000000 

En el lanzamiento, inicio un par de colas de despacho para hacer un trabajo en segundo plano (usan un MOC separado para cargar objetos administrados y procesarlos), por lo que podrían ser responsables, pero las colas están etiquetadas en mi aplicación y el seguimiento de la pila no parece mostrar qué cola es responsable (si son mis propias colas). Ejecuté la aplicación con NSZombies habilitado, pero eso no ayuda. También he ejecutado la herramienta de análisis estático, y eso no muestra nada.

¿Alguna idea de qué podría estar causando este problema y qué puedo hacer para depurarlo?

EDITAR:

Estoy bastante seguro de que puedo aislar el área del problema en un código que se llama después de iniciar la aplicación:

SLAppDelegate *delegate = (SLAppDelegate *) [[UIApplication sharedApplication] delegate];
dispatch_async(delegate.coreDataController.filterMainQueue, ^{

   NSManagedObjectContext *backgroundContextImage = [[NSManagedObjectContext alloc] init];
   [backgroundContextImage setPersistentStoreCoordinator: delegate.coreDataController.persistentStoreCoordinator];
   NSArray *items = [Person getAllPersonsWithContext: backgroundContextImage];
   // possibly update some of the items
   dispatch_async(dispatch_get_main_queue(), ^{

      // writes the file inside another dispatch_asyn(dispatch_get_main_queue) 
      [[SharedSettingController sharedSettings] writeToContactsReferenceFile];
   };
});

Simplemente no estoy seguro de qué hay de malo en esto. Funciona bien el 99% del tiempo. Pero ese 1% está causando algunos bloqueos que me encantaría resolver.

Respuestas a la pregunta(1)

Su respuesta a la pregunta