Fehler in Core Data unter Mac OS X 10.6 und 10.6.1
Für Entwickler ist CoreData eine große Erleichterung: Es vereinfacht die Art und Weise stark, wie Programme mit Datenbanken interagieren. Stark zusammengefasst ausgedrückt ist Core Data die Abstraktionsschicht, über die Programm und Datenbank kommunizieren. Datenbankelemente müssen nicht vollständig in den Arbeitsspeicher befördert werden, stattdessen arbeitet Core Data mit Verweisen auf Objekte, die zudem nur nach Bedarf geladen werden. Vor knapp zwei Jahren, Mac OS X 10.5 Leopard war gerade frisch auf dem Markt,
hatten wir einen schwerwiegenden Fehler in Core Data ausfindig gemacht, der auch zu Datenverlust führen konnte.
Anscheinend waren wir auch bei Snow Leopard die ersten, denen ein weiterer, schwererer Fehler in Core Data auffiel. Nachdem bei einem neuen Programm eine Woche Fehlersuche zu keinem Ergebnis führte und nur widersinnige Ergebnisse hervorbrachte, kamen wir schließlich einem Fehler in Core Data auf die Schliche. Über Apples Entwicklerzugang reichten wir ein Testprojekt ein, mit dem wir das Problem belegten und nachwiesen, unter welchen Umständen ein ärgerlicher Fehler auftritt.
Die Apple Developer Connection bestätigte unsere Vermutung: Es handelt sich tatsächlich um einen schwerwiegenden und bisher unentdeckten Fehler in Mac OS X 10.6 Snow Leopard, der auch in Mac OS X 10.6.1 noch vorhanden ist. Betroffen hiervon sind alle Anwendungen, die Core Data nutzen. Apple scheint im geschilderten Fall ein großes Problem beim Verteilen bestimmter Aufgabe auf mehrere Prozessorkerne zu haben. Lässt man ein Testprogramm auf zwei Kernen unter Snow Leopard laufen, erhält man beim Abruf von 100.000 Objekten 0 bis 2 falsche Angaben zu den Relations. Wird das selbe Programm auf dem selben Rechner mit 8 aktivierten Kernen ausgeführt, erhält man 5-10 falsche Angaben. In unserem Fall führte dies zu erst einmal nicht nachvollziehbaren Programmabstürzen, theoretisch wäre aber auch Datenverlust möglich.
Eine genauere Schilderung des Problem finden Sie über den angegeben Link. Keine Angaben wollte Apple machen, wann das Problem behoben wird.
Weiterführende Links: