Uploaded image for project: 'PDFBox'
  1. PDFBox
  2. PDFBOX-3375

Use a static lock for a singleton

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.0.2, 3.0.0 PDFBox
    • 2.0.4, 3.0.0 PDFBox
    • PDModel
    • 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.

      Attachments

        1. pdfbox3375.patch
          1 kB
          Philip Helger

        Activity

          People

            lehmi Andreas Lehmkühler
            lehmi Andreas Lehmkühler
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: