странный сбой в сборщике мусора в программе Core Data - PullRequest
0 голосов
/ 07 ноября 2010

У меня есть приложение CoreData для сбора мусора, которым пользуются несколько моих друзей.Это довольно стандартное приложение, в котором записи основных данных отображаются в табличных представлениях.

Некоторые из них сообщают о следующих таинственных отчетах о сбоях, вызванных изменением критериев сортировки табличного представления.

Application Specific Information:
objc_msgSend() selector name: objCType
objc[1415]: garbage collection is ON

Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
0   libobjc.A.dylib                 0x00007fff885bf10a objc_msgSend + 22
1   com.apple.Foundation            0x00007fff82a80f91 -[NSNumber compare:] + 102
2   com.apple.Foundation            0x00007fff82aa9c9a _NSCompareObject + 75
3   com.apple.Foundation            0x00007fff82ae1ab9 _NSSortFunctionMany + 626
4   com.apple.CoreFoundation        0x00007fff87f24419 __CFSimpleMergeSort + 409
5   com.apple.CoreFoundation        0x00007fff87f242d8 __CFSimpleMergeSort + 88
....
15  com.apple.CoreFoundation        0x00007fff87f242d8 __CFSimpleMergeSort + 88
16  com.apple.CoreFoundation        0x00007fff87f240cd CFSortIndexes + 317
17  com.apple.CoreFoundation        0x00007fff87f56a23 CFMergeSortArray + 147
18  com.apple.Foundation            0x00007fff82aa99f3 _sortedObjectsUsingDescriptors + 572
19  com.apple.Foundation            0x00007fff82ae162a -[NSMutableArray(NSKeyValueSorting) sortUsingDescriptors:] + 440
20  com.apple.AppKit                0x00007fff84f06ad8 -[NSArrayController _sortObjects:] + 337
21  com.yujitach.spires             0x00000001000225e0 -[IncrementalArrayController arrangeObjects:] + 194

Здесь IncrementalArrayController является подклассом NSArrayController,Я не понимаю, почему arrangeObjects: массива Objective-C, возвращенного из CoreData, приводит к сбою.

Это связано с многопоточностью моей программы?Я следую тому, что говорится в документах: MOC для каждого потока, и я не передаю управляемые объекты между потоками, а только идентификаторы управляемых объектов.

Буду признателен, если кто-нибудь подскажет, как его отладить.например, я хотел бы увидеть, какой объект вызывает сбой на objc_msgSend.Как я могу отследить это?

Если вам нужен исходный код, он доступен через bzr:

$ bzr branch http://www.sns.ias.edu/~yujitach/spires/code/

1 Ответ

0 голосов
/ 07 ноября 2010

В ранних версиях 10.6 была ошибка, связанная с сортировкой очень больших массивов в приложениях с сборкой мусора.Исправление в обновлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...