Core Image + Core Graphics + Mountain Lion = SIGSEGV

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Core Image + Core Graphics + Mountain Lion = SIGSEGV

    Ich wundere mich gerade über einen lästigen bis ekeligen Fehler:

    In bestimmten Situationen führt sowohl -drawImage:inRect: (CIContext) als auch CGContextDrawImage() zu einem SIGSEGV, beide irgendwo tief in Apples Rendercode. Der Stack führt immer durch FETreeNode::render_. Aufrufparameter sind alle ok. Davor wirft OSX noch einige OpenCL-Fehler auf die Konsole.

    Hintergrund: Ich mache in mehreren OperationQueues im Hintergrund diverse zeitraubende Bildoperationen per Core Image. Die Ergebnisse sind CIImages oder CGImageRefs, die in den Hauptthread zurückgegeben und dann normal über Views gezeichnet werden (Threading sollte nicht das Problem sein, das ist alles sauber). Der Code läuft unter 10.6 und 10.7 einwandfrei. Unter 10.8 (vielleicht auch erst seit 10.8.3) kommt es bei vielen (nicht allen) Aufrufen zu diesem Fehler.

    Eine weitere Eigenartigkeit ist, dass der Fehler nur auftritt, wenn die Core-Image-Operationen auf der CPU gerechnet werden (kCIContextUseSoftwareRenderer:YES). Auf der GPU läuft alles fein. Da die Bilder so groß sind, dass einige Chipsatz-GPUs damit Probleme bekommen können, würde ich das lieber auf der CPU rendern.

    Ich tippe mittlerweile auf einen Bug in Apples Rendercode. Der Workaround über GPU-Rendering scheint erstmal zu funktionieren, aber ich würde gerne das Problem besser verstehen, um das Problem so elegant und stabil wie möglich zu umschiffen.

    Die Frage: Kennt jemand von euch dieses Problem? Kennt jemand die Lösung, weitere Dokumentation oder sonstwas dazu? Herr Google nennt mir wenige ähnliche Problemberichte, allerdings habe ich keine Hinweise zu Ursachen und Lösungen gefunden.
    Multigrad - 360°-Produktfotografie für den Mac
  • Wo Du's sagst fällt mir auf, dass ich wirklich noch nie dieselbe Maschine unter zwei Systemen getestet habe, danke für den Hinweis! Bislang liefen nur alle Maschinen, bei denen es Probleme mit CPU-Rendering gab, unter 10.8.x. Sollte ich mal genauer testen.

    Dummerweise gab's anders herum mit alten Maschinen halt auch Probleme mit GPU-Rendering. Mist. Vielleicht muss ein Prefs-Schalter rein, aber das finde ich alles andere als schön. Das muss doch gehen, sonst wäre CI ja ziemlich unbrauchbar.
    Multigrad - 360°-Produktfotografie für den Mac