Concurrencia de datos principales `performBlockAndWait:` NSManagedObjectContext zombie

Tengo un siguiente informe de bloqueo de mi aplicación lanzada:

synchronizeMyWords El método recupera las entidades de la base de datos, crea un contexto de cola privado con el contexto principal principal y finalmente guarda los resultados. Todas las operaciones están en el hilo de fondo. Este método se llama cada vez que la aplicación entrabackground yforeground. Aquí hay un método simplificado:

- (AWSTask *)synchronizeMyWords {
  __weak typeof(self) weakSelf = self;

  AWSContinuationBlock block = ^id _Nullable(AWSTask * _Nonnull task) {
    if ([task.result isKindOfClass:[NSArray class]]) {
      NSArray * records = (NSArray *)task.result;
      NSManagedObjectContext * context = [NSManagedObjectContext MR_contextWithParent:[NSManagedObjectContext MR_defaultContext]];
      [context performBlockAndWait:^{
        for (NSDictionary * info in records) {
            [RDRWord MR_createEntityInContext:context];
        }

        [context save:nil];
      }];
      return [AWSTask taskWithResult:@YES];
    }
    return [AWSTask taskWithError:[NSError errorWithDomain:@"" code:404 userInfo:nil]];
  };

  AWSExecutor * executor = [AWSExecutor defaultExecutor];


  return [[self loadLocalWords] continueWithExecutor:executor withBlock:block];
}

Como veis estoy usandoRegistro mágico Biblioteca de terceros para administrar la pila de Core Data. Aquí hay un método para crear contexto de cola privada:

+ (NSManagedObjectContext *) MR_contextWithParent:(NSManagedObjectContext *)parentContext
{
    NSManagedObjectContext *context = [self MR_newPrivateQueueContext];
    [context setParentContext:parentContext];
    [context MR_obtainPermanentIDsBeforeSaving];
    return context;
}

Puedes consultar todoNSManagedObjectContext+MagicalRecord categoría en githubaquí.

¿Cómo está disponible quecontext objeto dentroperformBlockAndWait: lanzado antes de que se escape del alcance? Personalmente no puedo reproducir el bloqueo, pero muchos de mis usuarios (dispositivos iOS 8.1 - 10) se ven afectados por este problema.

ACTUALIZACIÓN 1:

Aquí está, por ejemplo, el mismo informe sobreBlog

Respuestas a la pregunta(2)

Su respuesta a la pregunta