Re: JDK 1.7.0_25 breaks BATIK

Laurent Redor <[email protected]> Mon, 30 Sep 2013 12:47:57 +0200
Newsgroups gmane.text.xml.batik.user
Message-ID <[email protected]>
Hello,

I analyzed a little more our problem. It concerns only one SVG file. And 
that is a filter that causes problem:

    <filter
             inkscape: collect = "always"
             id = "filter3834">
            <feGaussianBlur
               inkscape: collect = "always"
               stdDeviation = "2.2770497"
               id = "feGaussianBlur3836" />
    </ filter>

If I replace it by

    <filter
             inkscape: collect = "always"
             id = "filter3834">
    </ filter>

there is no more problem. I do not know if this information is 
sufficient to reopen the issue 
https://bugs.openjdk.java.net/browse/JDK-8019201 on JDK side. But 
anyway, I do not have the rights to do so.

I join the complete SVG file for information and the error stack.

Regards,

Laurent

Le 25/09/2013 19:11, Laurent Redor a écrit :
> Hello,
>
> The bughttps://bugs.openjdk.java.net/browse/JDK-8019201  is fixed. And effectively, if I run the test includes in the commithttp://hg.openjdk.java.net/jdk8/2d/jdk/rev/833f05116f7b  :
>
>   * It is OK with 1.7.0_21-b11.
>   * It is KO with 1.7.0_25-b15.
>   * It is OK with 1.7.0_40-b43.
>
> However, I have always similar problem with JDK 1.7.0_40-b43 and the 
> AffineTransformOp JDK class.
> I do not know enough about the Batik library and even less ConvolveOp 
> and AffineTransformOp JDK classes to adapt the test to reveal the 
> problem with AffineTransformOp.
>
> Does someone who knows enough these classes could adapt the test?
>
>
> Best regards,
>
> Laurent
>
> >> Hi everyone,
> >>
> >> the latest security update of Oracle's JDK/JRE 1.7.0_25 breaks many if
> >> not all BufferedImageOp.filter implementations.
> >>
> >> BATIK 1.7 uses these operations in several places
> >>    sources/org/apache/batik/ext/awt/g2d/AbstractGraphics2D.java
> >>
> >> sources/org/apache/batik/ext/awt/image/renderable/ConvolveMatrixRable8Bit.java
> >>
> >> sources/org/apache/batik/ext/awt/image/renderable/MorphologyRable8Bit.java
> >>    sources/org/apache/batik/ext/awt/image/rendered/AffineRed.java
> >>    sources/org/apache/batik/ext/awt/image/rendered/Any2LsRGBRed.java
> >>    sources/org/apache/batik/ext/awt/image/rendered/Any2LumRed.java
> >>    sources/org/apache/batik/ext/awt/image/rendered/Any2sRGBRed.java
> >>    sources/org/apache/batik/ext/awt/image/rendered/ProfileRed.java
> >>    sources/org/apache/batik/svggen/SVGGraphics2D.java
> >> and consequently BATIK may break down with unexpected
> >> "java.awt.image.ImagingOpException: Unable to transform src image"
> >> exceptions.
> >>
> >> The only workaround I have been able to find so far is patching BATIK
> >> sources to no longer call BufferedImageOp.filter directly on the source
> >> and destination image, but to filter two ARGB BufferedImage copies.
> >>
> >> A corresponding bug report
> >>http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8019201  has been
> >> filed with Oracle. However, the report does not mention the full extend
> >> of this problem - since filing the report, I have found Linux JDKs and
> >> additional BufferedImageOp implementations such as AffineTransformOp
> >> suffering from this problem, too.
> >
> >A project of mine has had two reports of this very probelm from users
> >using 1.7.0_25 on Windows, and I can reliably reproduce it myself with
> >OpenJDK 1.7.0_25 on Linux.
> >
> >Is there any way we can poke Oracle to fix the regression faster?
> >
> >--
> >J.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
stackTrace.txt (text/plain, 2.3 KB)
Thread [main] (Suspended (exception ImagingOpException))	
	owns: IntegerInterleavedRaster  (id=12517)	
	AffineTransformOp.filter(BufferedImage, BufferedImage) line: 284	
	AffineRed.genRect(WritableRaster) line: not available	
	AffineRed.copyData(WritableRaster) line: not available	
	Any2sRGBRed.copyData(WritableRaster) line: not available	
	Any2sRGBRed(AbstractRed).getData(Rectangle) line: not available	
	GraphicsUtil.drawImage(Graphics2D, CachableRed) line: not available	
	GraphicsUtil.drawImage(Graphics2D, RenderableImage) line: not available	
	PadRable8Bit.paintRable(Graphics2D) line: not available	
	GraphicsUtil.drawImage(Graphics2D, RenderableImage) line: not available	
	PadRable8Bit.paintRable(Graphics2D) line: not available	
	GraphicsUtil.drawImage(Graphics2D, RenderableImage) line: not available	
	FilterChainRable8Bit.paintRable(Graphics2D) line: not available	
	GraphicsUtil.drawImage(Graphics2D, RenderableImage) line: not available	
	ShapeNode(AbstractGraphicsNode).paint(Graphics2D) line: not available	
	ShapeNode.paint(Graphics2D) line: not available	
	CompositeGraphicsNode.primitivePaint(Graphics2D) line: not available	
	CompositeGraphicsNode(AbstractGraphicsNode).paint(Graphics2D) line: not available	
	CanvasGraphicsNode(CompositeGraphicsNode).primitivePaint(Graphics2D) line: not available	
	CanvasGraphicsNode.primitivePaint(Graphics2D) line: not available	
	CanvasGraphicsNode(AbstractGraphicsNode).paint(Graphics2D) line: not available	
	RootGraphicsNode(CompositeGraphicsNode).primitivePaint(Graphics2D) line: not available	
	GraphicsNodeRed8Bit.genRect(WritableRaster) line: not available	
	GraphicsNodeRed8Bit.copyData(WritableRaster) line: not available	
	TileCacheRed.genRect(WritableRaster) line: not available	
	TileCacheRed(AbstractTiledRed).drawBlockInPlace(TileBlock[], WritableRaster) line: not available	
	TileCacheRed(AbstractTiledRed).drawBlock(TileBlock, WritableRaster) line: not available	
	TileCacheRed(AbstractTiledRed).copyToRasterByBlocks(WritableRaster) line: not available	
	TileCacheRed(AbstractTiledRed).copyData(WritableRaster) line: not available	
	TranslateRed.copyData(WritableRaster) line: not available	
	PadRed.copyData(WritableRaster) line: not available	
	StaticRenderer.repaint(RectListManager) line: not available	
	StaticRenderer.repaint(Shape) line: not available	
...
triangle.svg (image/svg+xml, 7.2 KB) - not displayed