It seems that you just found out a race condition in
ProfileDeferralMgr. (A quick view on any decompiler show that a race
condition can occur when :
- Thread A enters registerDeferral, deferring is still true, thread A
checks !deffering ->OK
- Thread B enters activateProfiles, set deferring to false, calls
vector.iterator()
- Thread A adds new ProfileActivator in the vector
- Thread B calls iterator.next() -> CME

It seems that a similar issue was encountered an fixed in Fop 0.95:
http://www.mail-archive.com/[email protected]/msg11808.html

Maybe we should check where ICC_Profile.getInstance is used on FOP
codebase and synchronize this method (sync on ICC_Profile.class ?)

You could try to submit a bug to sun bug database, since there is no
indication that ICC_Profile.getInstance is not thread-safe (at least
it could be documented) :-)

HTH,
Julien

2011/1/31 Alexios Giotis <[email protected]>:
> Hi,
>
> I occasionally get the exception below using java version "1.6.0_21", 64-Bit 
> Server VM and FOP 1.0 to transform FOP intermediate format to Postscript with 
> more than one threads. Of course, each thread uses a new instance of 
> org.apache.fop.render.intermediate.util.IFConcatenator. Any ideas why calling 
> java.awt.color.ICC_Profile.getInstance() throws 
> java.util.ConcurrentModificationException ?
>
>
> Caused by: java.util.ConcurrentModificationException
> at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
> at java.util.AbstractList$Itr.next(Unknown Source)
> at sun.awt.color.ProfileDeferralMgr.activateProfiles(Unknown Source)
> at java.awt.color.ICC_Profile.getInstance(Unknown Source)
> at 
> org.apache.xmlgraphics.image.loader.impl.ImageLoaderRawJPEG.buildICCProfile(ImageLoaderRawJPEG.java:236)
> at 
> org.apache.xmlgraphics.image.loader.impl.ImageLoaderRawJPEG.loadImage(ImageLoaderRawJPEG.java:198)
> at 
> org.apache.xmlgraphics.image.loader.pipeline.ImageProviderPipeline.execute(ImageProviderPipeline.java:154)
> at 
> org.apache.xmlgraphics.image.loader.pipeline.ImageProviderPipeline.execute(ImageProviderPipeline.java:99)
> at 
> org.apache.xmlgraphics.image.loader.ImageManager.getImage(ImageManager.java:268)
> at 
> org.apache.fop.render.intermediate.AbstractIFPainter.drawImageUsingImageHandler(AbstractIFPainter.java:143)
> at 
> org.apache.fop.render.ps.PSPainter.drawImageUsingImageHandler(PSPainter.java:167)
> at 
> org.apache.fop.render.intermediate.AbstractIFPainter.drawImageUsingURI(AbstractIFPainter.java:270)
> at org.apache.fop.render.ps.PSPainter.drawImage(PSPainter.java:185)
> at 
> org.apache.fop.render.intermediate.IFParser$Handler$ImageHandler.endElement(IFParser.java:676)
> at 
> org.apache.fop.render.intermediate.IFParser$Handler.endElement(IFParser.java:352)
> at 
> org.apache.xalan.transformer.TransformerIdentityImpl.endElement(TransformerIdentityImpl.java:1102)
> at org.xml.sax.helpers.XMLFilterImpl.endElement(Unknown Source)
> at 
> com.idocs.export2.placeholder.PlaceholderFilter.endElement(PlaceholderFilter.java:61)
> at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
> at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown 
> Source)
> at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown 
> Source)
> at 
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
>  Source)
> at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown 
> Source)
> at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
> at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
> at org.xml.sax.helpers.XMLFilterImpl.parse(Unknown Source)
> at 
> org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:485)
> at org.apache.fop.render.intermediate.IFParser.parse(IFParser.java:104)
> at 
> org.apache.fop.render.intermediate.util.IFConcatenator.appendDocument(IFConcatenator.java:102)
>
>
>
> Thanks,
> Alexis Giotis
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to