[
https://issues.apache.org/jira/browse/FOP-2745?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16633689#comment-16633689
]
Pontus edited comment on FOP-2745 at 10/1/18 8:04 AM:
------------------------------------------------------
This is, as said earlier, because of an initialization error in AWT
([https://bugs.openjdk.java.net/browse/JDK-8058973])
The code that I have been using is something along the lines of:
{code:java}
private final Object icc_colors_lock = new Object();
private boolean icc_colors_initialized = false;
private Fop getFop() {
synchronized (this.icc_colors_lock) {
if (this.icc_colors_initialized == false) {
// We need to do this in a synchronized block before any real call.
// This is because of:
https://bugs.openjdk.java.net/browse/JDK-8058973
// It will only happen if the ICC color profiles have not been
cached before.
// This is very rare, but might occur in test cases,
// or if no other image processing has been done yet since startup.
// Should be rare, but this might solidify the safety of using the
FopFactory.
Fop unused = fopFactory.newFop(MimeConstants.MIME_PDF, userAgent,
new ByteArrayOutputStream());
this.icc_colors_initialized = true;
}
}
return fopFactory.newFop(MimeConstants.MIME_PDF, userAgent, out);
}{code}
was (Author: eliason):
This is because of an initialization error in AWT. You can read more about it
here: [https://bugs.openjdk.java.net/browse/JDK-8058973]
The code that I have been using is something along the lines of:
{code:java}
private final Object icc_colors_lock = new Object();
private boolean icc_colors_initialized = false;
private Fop getFop() {
synchronized (this.icc_colors_lock) {
if (this.icc_colors_initialized == false) {
// We need to do this in a synchronized block before any real call.
// This is because of:
https://bugs.openjdk.java.net/browse/JDK-8058973
// It will only happen if the ICC color profiles have not been
cached before.
// This is very rare, but might occur in test cases,
// or if no other image processing has been done yet since startup.
// Should be rare, but this might solidify the safety of using the
FopFactory.
Fop unused = fopFactory.newFop(MimeConstants.MIME_PDF, userAgent,
new ByteArrayOutputStream());
this.icc_colors_initialized = true;
}
}
return fopFactory.newFop(MimeConstants.MIME_PDF, userAgent, out);
}{code}
> Multi-threaded initialization fails
> -----------------------------------
>
> Key: FOP-2745
> URL: https://issues.apache.org/jira/browse/FOP-2745
> Project: FOP
> Issue Type: Bug
> Affects Versions: 2.2
> Reporter: Jochen Kemnade
> Priority: Major
>
> When multiple thread initialize FOP, some of them are likely to throw a
> {{NullPointerException}} or {{ConcurrentModificationException}}.
> {noformat}
> java.lang.NullPointerException: null
> at java.awt.color.ICC_Profile.intFromBigEndian(ICC_Profile.java:1782)
> at java.awt.color.ICC_Profile.getNumComponents(ICC_Profile.java:1474)
> at
> org.apache.fop.pdf.PDFICCBasedColorSpace.<init>(PDFICCBasedColorSpace.java:49)
> at
> org.apache.fop.pdf.PDFFactory.makeICCBasedColorSpace(PDFFactory.java:1453)
> at
> org.apache.fop.pdf.PDFICCBasedColorSpace.setupsRGBAsDefaultRGBColorSpace(PDFICCBasedColorSpace.java:116)
> at
> org.apache.fop.render.pdf.PDFRenderingUtil.addsRGBColorSpace(PDFRenderingUtil.java:187)
> at
> org.apache.fop.render.pdf.PDFRenderingUtil.setupPDFDocument(PDFRenderingUtil.java:604)
> at
> org.apache.fop.render.pdf.PDFDocumentHandler.startDocument(PDFDocumentHandler.java:159)
> at
> org.apache.fop.render.intermediate.util.IFDocumentHandlerProxy.startDocument(IFDocumentHandlerProxy.java:105)
> at
> org.apache.fop.render.intermediate.IFRenderer.startRenderer(IFRenderer.java:263)
> at org.apache.fop.area.RenderPagesModel.<init>(RenderPagesModel.java:81)
> at
> org.apache.fop.area.AreaTreeHandler.setupModel(AreaTreeHandler.java:135)
> at org.apache.fop.area.AreaTreeHandler.<init>(AreaTreeHandler.java:105)
> at
> org.apache.fop.render.RendererFactory.createFOEventHandler(RendererFactory.java:363)
> at org.apache.fop.fo.FOTreeBuilder.<init>(FOTreeBuilder.java:107)
> at org.apache.fop.apps.Fop.createDefaultHandler(Fop.java:104)
> at org.apache.fop.apps.Fop.<init>(Fop.java:78)
> at org.apache.fop.apps.FOUserAgent.newFop(FOUserAgent.java:182)
> {noformat}
> or
> {noformat}
> java.util.ConcurrentModificationException: null
> at java.util.Vector$Itr.checkForComodification(Vector.java:1184)
> at java.util.Vector$Itr.next(Vector.java:1137)
> at
> sun.java2d.cmm.ProfileDeferralMgr.activateProfiles(ProfileDeferralMgr.java:93)
> at java.awt.color.ICC_Profile.getData(ICC_Profile.java:1359)
> at
> org.apache.xmlgraphics.java2d.color.profile.ColorProfileUtil.getICCProfileDescription(ColorProfileUtil.java:46)
> at org.apache.fop.pdf.PDFResources.addColorSpace(PDFResources.java:160)
> at
> org.apache.fop.pdf.PDFFactory.makeICCBasedColorSpace(PDFFactory.java:1460)
> at
> org.apache.fop.pdf.PDFICCBasedColorSpace.setupsRGBAsDefaultRGBColorSpace(PDFICCBasedColorSpace.java:116)
> at
> org.apache.fop.render.pdf.PDFRenderingUtil.addsRGBColorSpace(PDFRenderingUtil.java:187)
> at
> org.apache.fop.render.pdf.PDFRenderingUtil.setupPDFDocument(PDFRenderingUtil.java:604)
> at
> org.apache.fop.render.pdf.PDFDocumentHandler.startDocument(PDFDocumentHandler.java:159)
> at
> org.apache.fop.render.intermediate.util.IFDocumentHandlerProxy.startDocument(IFDocumentHandlerProxy.java:105)
> at
> org.apache.fop.render.intermediate.IFRenderer.startRenderer(IFRenderer.java:263)
> at org.apache.fop.area.RenderPagesModel.<init>(RenderPagesModel.java:81)
> at
> org.apache.fop.area.AreaTreeHandler.setupModel(AreaTreeHandler.java:135)
> at org.apache.fop.area.AreaTreeHandler.<init>(AreaTreeHandler.java:105)
> at
> org.apache.fop.render.RendererFactory.createFOEventHandler(RendererFactory.java:363)
> at org.apache.fop.fo.FOTreeBuilder.<init>(FOTreeBuilder.java:107)
> at org.apache.fop.apps.Fop.createDefaultHandler(Fop.java:104)
> at org.apache.fop.apps.Fop.<init>(Fop.java:78)
> at org.apache.fop.apps.FOUserAgent.newFop(FOUserAgent.java:182)
> {noformat}
> The underlying is https://bugs.openjdk.java.net/browse/JDK-8058973.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)