Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.0.2, 3.0.0 PDFBox
-
None
Description
Our build is failing from time to time throwing the following exception
java.awt.color.CMMException: Invalid profile data at sun.java2d.cmm.kcms.CMM.checkStatus(CMM.java:180) at sun.java2d.cmm.kcms.CMM.createTransform(CMM.java:134) at java.awt.color.ICC_ColorSpace.toRGB(ICC_ColorSpace.java:166) at org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB.init(PDDeviceRGB.java:69) at org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB.toRGB(PDDeviceRGB.java:103) at org.apache.pdfbox.rendering.PageDrawer.getPaint(PageDrawer.java:237) at org.apache.pdfbox.rendering.PageDrawer.getNonStrokingPaint(PageDrawer.java:529) at org.apache.pdfbox.rendering.PageDrawer.fillPath(PageDrawer.java:600) at org.apache.pdfbox.contentstream.operator.graphics.FillNonZeroRule.process(FillNonZeroRule.java:36) at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:815) at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:472) at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:446) at org.apache.pdfbox.contentstream.PDFStreamEngine.showForm(PDFStreamEngine.java:178) at org.apache.pdfbox.contentstream.operator.graphics.DrawObject.process(DrawObject.java:70) at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:815) at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:472) at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:446) at org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:149) at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:189) at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:145) at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:68) at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:55) at org.apache.pdfbox.rendering.TestRendering.render(TestRendering.java:79)
In PDDeviceRGB the non-static init method is synchronized using the instance of the class as lock object. So far so good. But as the class is used a singleton a static object has to be used as lock object.