我在生產應用程序中發現了一些奇怪的coredata錯誤,並且我能夠獲得崩潰報告。Coredata在提取時崩潰
及其在倍以下消息崩潰
***誤差對象0x17e400000:釋放未分配指針
***誤差對象0x17fd03730:被重新分配指針沒有被分配
這裏是堆棧跟蹤
Crashed: SQLQueue 0x13ff15250 for datastore.sqlite
SIGABRT ABORT 0x0000000183986014
0 libsystem_kernel.dylib __pthread_kill + 8
1 libsystem_pthread.dylib pthread_kill + 112
2 libsystem_c.dylib abort + 140
3 libsystem_malloc.dylib _nano_vet_and_size_of_live + 330
4 libsystem_malloc.dylib nano_free + 220
5 libsqlite3.dylib sqlite3_finalize + 244
6 CoreData -[NSSQLiteConnection _finalizeStatement] + 100
7 CoreData -[NSSQLiteConnection releaseSQLStatement] + 52
8 CoreData newFetchedRowsForFetchPlan_MT + 2420
9 CoreData _executeFetchRequest + 72
10 CoreData -[NSSQLFetchRequestContext executeRequestUsingConnection:] + 60
11 CoreData __52-[NSSQLDefaultConnectionManager handleStoreRequest:]_block_invoke + 260
12 libdispatch.dylib _dispatch_client_callout + 16
13 libdispatch.dylib _dispatch_barrier_sync_f_invoke + 84
14 CoreData -[NSSQLDefaultConnectionManager handleStoreRequest:] + 208
15 CoreData -[NSSQLCoreDispatchManager routeStoreRequest:] + 288
16 CoreData -[NSSQLCore dispatchRequest:withRetries:] + 200
17 CoreData -[NSSQLCore processFetchRequest:inContext:] + 108
18 CoreData -[NSSQLCore executeRequest:withContext:error:] + 504
19 CoreData __65-[NSPersistentStoreCoordinator executeRequest:withContext:error:]_block_invoke + 4512
20 CoreData -[NSPersistentStoreCoordinator _routeHeavyweightBlock:] + 276
21 CoreData -[NSPersistentStoreCoordinator executeRequest:withContext:error:] + 408
22 CoreData -[NSManagedObjectContext executeFetchRequest:error:] + 572
23 CoreData -[NSManagedObjectContext(_NestedContextSupport) _parentObjectsForFetchRequest:inContext:error:] + 456
24 CoreData __82-[NSManagedObjectContext(_NestedContextSupport) executeRequest:withContext:error:]_block_invoke + 584
25 CoreData internalBlockToNSManagedObjectContextPerform + 92
26 libdispatch.dylib _dispatch_client_callout + 16
27 libdispatch.dylib _dispatch_barrier_sync_f_invoke + 84
28 CoreData _perform + 232
29 CoreData -[NSManagedObjectContext(_NestedContextSupport) executeRequest:withContext:error:] + 188
30 CoreData -[NSManagedObjectContext executeFetchRequest:error:] + 572
31 *MY_APP* NSManagedObject+MagicalRecord.m line 50__67+[NSManagedObject(MagicalRecord) MR_executeFetchRequest:inContext:]_block_invoke
它確實發生在主線程上,我對如何調試這個問題感到困惑。看起來像一個內存問題,但。同時使用樂器時,它會在應用程序中顯示NSPrivateQueueConcurrencyType
的某些泄漏。
尋找一些啓示它的見解。
應用程序廣泛使用MagicalRecord,這裏是導致上述崩潰的應用程序中的代碼塊。它只是從主線正常獲取。最有趣的是它隨機崩潰,即它不總是崩潰,但有時在執行Fetch時崩潰。
NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"code == %@ and pid == %@", aCode,pid]; Permission *aPermission = [Permission MR_findFirstWithPredicate:filterPredicate];
也粘貼一些代碼。 – kb920
@Sj這可能幫助 - :http://stackoverflow.com/questions/15253966/getting-the-error-pointer-being-freed-was-not-allocated-set-a-breakpoint-in –
如果你可以共享一些'fetchRequest'和'object updates'相關的代碼 – ystack