In my case the app would freeze before 'executeFetchRequest' without any warning. The solution was to wrap all db operations in @synchronized(persistentStore).
Eg:
NSArray *objects;
@synchronized([self persistentStoreCoordinator]) {
objects = [moc executeFetchRequest:request error:&error];
}