Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

App crashes with NSRangeException _PFBatchFaultingArray using NSFetchedResultsController

I receive a lot of crash reports about one specify crash but have no idea where to start to fix it, as I'm not able to reproduce it by myself and crash reports were sent anonymously.

As you'll see it has something to do with the NSFetchedResultsController I am using.

Here is an excerpt from that crash report. The only difference between the reports is the range of the indexes [...]index (someLargeIndex) beyond bounds (1)[...]. The rest stays the same in every single report.

Application Specific Information:
*** Terminating app due to uncaught exception \\\'NSRangeException\\\', reason: \\\'*** -[_PFBatchFaultingArray objectAtIndex:]: index (262144) beyond bounds (1)\\\'

Thread 0 Crashed:
0   libsystem_kernel.dylib              0x31d1e00c __kill + 8
1   libsystem_c.dylib                   0x32ac4f95 raise + 17
2   AppName                             0x0003d961 uncaught_exception_handler (PLCrashReporter.m:137)
3   CoreFoundation                      0x349b57d3 __handleUncaughtException + 239
4   libobjc.A.dylib                     0x33f9506b _objc_terminate + 103
5   libstdc++.6.dylib                   0x3338ae3d __cxxabiv1::__terminate(void (*)()) + 53
6   libstdc++.6.dylib                   0x3338ae91 std::terminate() + 17
7   libstdc++.6.dylib                   0x3338af61 __cxa_throw + 85
8   libobjc.A.dylib                     0x33f93c8b objc_exception_throw + 71
9   CoreFoundation                      0x349b5491 +[NSException raise:format:arguments:] + 69
10  CoreFoundation                      0x349b54cb +[NSException raise:format:] + 35
11  CoreData                            0x34820fc5 -[_PFBatchFaultingArray objectAtIndex:] + 133
12  CoreData                            0x3485e5fb -[_PFMutableProxyArray objectAtIndex:] + 55
13  CoreData                            0x348e00f7 +[NSFetchedResultsController(PrivateMethods) _insertIndexForObject:inArray:lowIdx:highIdx:sortDescriptors:] + 99
14  CoreData                            0x348e0605 -[NSFetchedResultsController(PrivateMethods) _postprocessInsertedObjects:] + 353
15  CoreData                            0x348e0ecf -[NSFetchedResultsController(PrivateMethods) _postprocessUpdatedObjects:] + 507
16  CoreData                            0x348e29c7 -[NSFetchedResultsController(PrivateMethods) _managedObjectContextDidChange:] + 1239
17  Foundation                          0x35f46183 _nsnote_callback + 143
18  CoreFoundation                      0x3498420f __CFXNotificationPost_old + 403
19  CoreFoundation                      0x3491eeeb _CFXNotificationPostNotification + 119
20  Foundation                          0x35f435d3 -[NSNotificationCenter postNotificationName:object:userInfo:] + 71
21  CoreData                            0x34884c07 -[NSManagedObjectContext(_NSInternalNotificationHandling) _postObjectsDidChangeNotificationWithUserInfo:] + 55
22  CoreData                            0x34884fcd -[NSManagedObjectContext(_NSInternalChangeProcessing) _createAndPostChangeNotification:withDeletions:withUpdates:withRefreshes:] + 141
23  CoreData                            0x34845251 -[NSManagedObjectContext(_NSInternalChangeProcessing) _postRefreshedObjectsNotificationAndClearList] + 77
24  CoreData                            0x34844f7f -[NSManagedObjectContext(_NSInternalChangeProcessing) _processRecentChanges:] + 1815
25  CoreData                            0x348863a5 -[NSManagedObjectContext processPendingChanges] + 17
26  CoreData                            0x3482027f _performRunLoopAction + 127
27  CoreFoundation                      0x3498ca35 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 17
28  CoreFoundation                      0x3498e465 __CFRunLoopDoObservers + 413
29  CoreFoundation                      0x3498f75b __CFRunLoopRun + 855
30  CoreFoundation                      0x3491fec3 CFRunLoopRunSpecific + 231
31  CoreFoundation                      0x3491fdcb CFRunLoopRunInMode + 59
32  GraphicsServices                    0x3354641f GSEventRunModal + 115
33  GraphicsServices                    0x335464cb GSEventRun + 63
34  UIKit                               0x3357dd69 -[UIApplication _run] + 405
35  UIKit                               0x3357b807 UIApplicationMain + 671
36  AppName                             0x00002b69 main (main.m:15)

I'm sorry, that I'm not able to provide more information. Any suggestions how to start?

like image 610
Florian Mielke Avatar asked Sep 21 '11 13:09

Florian Mielke


2 Answers

This is probably a caching issue with the NSFetchedResultsController. See this question for a little bit more: _PFBatchFaultingArray objectAtIndex:

like image 183
Ian Terrell Avatar answered Oct 31 '22 19:10

Ian Terrell


try looking in you cellForRowAtIndexPath: or wherever you use the results from the NSFetchedResultsController. There, use the following code to see how many results are available to you:

NSArray *sections = fetchController.sections;
int someSection = 0;
id <NSFetchedResultsSectionInfo> sectionInfo = [sections objectAtIndex:someSection];
numberOfObjects = [sectionInfo numberOfObjects];

and then go to the place where you try to get the information, probably where you call:

[fetchedResultsController objectAtIndexPath:indexPath];

and see what you pass over:

NSLog(@"row to be retrieved: %d", indexPath.row);
[fetchedResultsController objectAtIndexPath:indexPath]; //here comes the crash

Eventually, you could check

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

to see how many rows are being returned.

like image 26
cvursache Avatar answered Oct 31 '22 18:10

cvursache