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.
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