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]
