This is a Sun JVM bug and not specific to Batik (Batik doesn't contain any
native code).

You should report it to Sun's bug database: http://bugs.sun.com/

Including clear & precise instructions on how to reproduce the bug will help
them track it down.

-Archie

On Jan 30, 2008 12:04 PM, Fabian Unfried <[EMAIL PROTECTED]> wrote:

> Hi,
>
> I'm having a problem in using batik on Linux (no matter what distri). The
> Problem CAN (it's not happening always only sometimes) happen when the svg
> is
> rendered the first time or when it's already loaded and you're doing a
> scroll
> or a resize action on the svg.
>
> This is the output of the JavaVM:
>
> *** glibc detected *** java: munmap_chunk(): invalid pointer: 0x8fc41840
> ***
> ======= Backtrace: =========
> /lib/i686/libc.so.6(cfree+0x1bb)[0xb7e6113b]
> /usr/java/jdk1.6.0_03/jre/lib/i386/libdcpr.so[0x8ef89282]
> /usr/java/jdk1.6.0_03/jre/lib/i386/libdcpr.so[0x8ef8979c]
> /usr/java/jdk1.6.0_03/jre/lib/i386/libdcpr.so[0x8ef8ad1f]
> /usr/java/jdk1.6.0_03/jre/lib/i386/libdcpr.so[0x8ef8fcb7]
>
> /usr/java/jdk1.6.0_03/jre/lib/i386/libdcpr.so(Java_sun_dc_pr_PathFiller_dispose+0x5c)
> [0x8ef8c4dc]
> [0xb4d1bb7b]
> [0xb4d143e9]
> [0xb4d143e9]
> [0xb4d143e9]
> [0xb4d11243]
> /usr/java/jdk1.6.0_03/jre/lib/i386/server/libjvm.so[0x62c5ecd]
> /usr/java/jdk1.6.0_03/jre/lib/i386/server/libjvm.so[0x64523b8]
> /usr/java/jdk1.6.0_03/jre/lib/i386/server/libjvm.so[0x62c57e0]
> /usr/java/jdk1.6.0_03/jre/lib/i386/server/libjvm.so[0x62c586d]
> /usr/java/jdk1.6.0_03/jre/lib/i386/server/libjvm.so[0x6335aa5]
> /usr/java/jdk1.6.0_03/jre/lib/i386/server/libjvm.so[0x65038c0]
> /usr/java/jdk1.6.0_03/jre/lib/i386/server/libjvm.so[0x64532a9]
> /lib/i686/libpthread.so.0[0xb7f48462]
> /lib/i686/libc.so.6(clone+0x5e)[0xb7ec582e]
> ======= Memory map: ========
> 06000000-065a0000 r-xp 00000000 08:06
> 4620302    /usr/java/jdk1.6.0_03/jre/lib/i386/server/libjvm.so
> 065a0000-065db000 rwxp 005a0000 08:06
> 4620302    /usr/java/jdk1.6.0_03/jre/lib/i386/server/libjvm.so
> 065db000-069fc000 rwxp 065db000 00:00 0
> 08048000-08052000 r-xp 00000000 08:06
> 4313227    /usr/java/jdk1.6.0_03/bin/java
> 08052000-08053000 rwxp 00009000 08:06
> 4313227    /usr/java/jdk1.6.0_03/bin/java
> 08053000-08a24000 rwxp 08053000 00:00 0          [heap]
> 8dd1f000-8e100000 rwxs 00000000 00:08 62816272   /SYSV00000000 (deleted)
> 8e100000-8e1fa000 rwxp 8e100000 00:00 0
> 8e1fa000-8e200000 ---p 8e1fa000 00:00 0
> 8e200000-8e2ff000 rwxp 8e200000 00:00 0
> 8e2ff000-8e300000 ---p 8e2ff000 00:00 0
> 8e300000-8e3ff000 rwxp 8e300000 00:00 0
> 8e3ff000-8e400000 ---p 8e3ff000 00:00 0
> 8e400000-8e500000 rwxp 8e400000 00:00 0
> 8e500000-8e5fe000 rwxp 8e500000 00:00 0
> 8e5fe000-8e600000 ---p 8e5fe000 00:00 0
> 8e600000-8e6f4000 rwxp 8e600000 00:00 0
> 8e6f4000-8e700000 ---p 8e6f4000 00:00 0
> 8e700000-8e7a8000 rwxp 8e700000 00:00 0
> 8e7a8000-8e800000 ---p 8e7a8000 00:00 0
> 8e800000-8e8ff000 rwxp 8e800000 00:00 0
> 8e8ff000-8e900000 ---p 8e8ff000 00:00 0
> 8e900000-8ea00000 rwxp 8e900000 00:00 0
> 8ea00000-8ec00000 rwxp 8ea00000 00:00 0
> 8ec00000-8ee00000 rwxp 8ec00000 00:00 0
> 8ee00000-8eeff000 rwxp 8ee00000 00:00 0
> 8eeff000-8ef00000 ---p 8eeff000 00:00 0
> 8ef87000-8ef9c000 r-xp 00000000 08:06
> 4606612    /usr/java/jdk1.6.0_03/jre/lib/i386/libdcpr.so
> 8ef9c000-8efaf000 rwxp 00014000 08:06
> 4606612    /usr/java/jdk1.6.0_03/jre/lib/i386/libdcpr.so
> 8efaf000-8efb2000 rwxp 8efaf000 00:00 0
> 8efb2000-8f0fc000 rwxp 8efb2000 00:00 0
> 8f0fc000-8f100000 ---p 8f0fc000 00:00 0
> 8f100000-8f1fb000 rwxp 8f100000 00:00 0
> 8f1fb000-8f200000 ---p 8f1fb000 00:00 0
> 8f200000-8f300000 rwxp 8f200000 00:00 0
> 8f30d000-8f310000 ---p 8f30d000 00:00 0
> 8f310000-8f35e000 rwxp 8f310000 00:00 0
> 8f35e000-8f361000 ---p 8f35e000 00:00 0
> 8f361000-8f3af000 rwxp 8f361000 00:00 0
> 8f3af000-8f3b2000 rwxp 8f3af000 00:00 0
> 8f3b2000-8f4d4000 rwxp 8f3b2000 00:00 0
> 8f4d4000-8f500000 ---p 8f4d4000 00:00 0
> 8f500000-8f5d9000 rwxp 8f500000 00:00 0
> 8f5d9000-8f600000 ---p 8f5d9000 00:00 0
> 8f600000-8f6ff000 rwxp 8f600000 00:00 0
> 8f6ff000-8f700000 ---p 8f6ff000 00:00 0
> 8f700000-8f7fe000 rwxp 8f700000 00:00 0
> 8f7fe000-8f800000 ---p 8f7fe000 00:00 0
> 8f800000-8f8fe000 rwxp 8f800000 00:00 0
> 8f8fe000-8f900000 ---p 8f8fe000 00:00 0
> 8f905000-8f908000 ---p 8f905000 00:00 0
> 8f908000-8f956000 rwxp 8f908000 00:00 0
> 8f965000-8f9b9000 r-xp 00000000 08:06
> 4606586    /usr/java/jdk1.6.0_03/jre/lib/i386/libcmm.so
> 8f9b9000-8f9bc000 rwxp 00054000 08:06
> 4606586    /usr/java/jdk1.6.0_03/jre/lib/i386/libcmm.so
> 8f9bc000-8f9bf000 ---p 8f9bc000 00:00 0
> 8f9bf000-8fa0d000 rwxp 8f9bf000 00:00 0
> 8fa0d000-8fa10000 ---p 8fa0d000 00:00 0
> 8fa10000-8fa5e000 rwxp 8fa10000 00:00 0
> 8fa5e000-8fa61000 ---p 8fa5e000 00:00 0
> 8fa61000-8faaf000 rwxp 8fa61000 00:00 0
> 8faaf000-8fab2000 ---p 8faaf000 00:00 0
> 8fab2000-8fb00000 rwxp 8fab2000 00:00 0
> 8fb03000-8fb0e000 r-xp 00000000 08:06 5390390    /lib/libgcc_s-4.2.2.so.1
> 8fb0e000-8fb0f000 rwxp 0000a000 08:06 5390390    /lib/libgcc_s-4.2.2.so.1
> 8fb26000-8fb2c000 r-xs 00000000 08:15
> 260629     /var/cache/fontconfig/20b58f14c9b581391d79ea335a81488a-
> x86.cache-2
> 8fb2c000-8fb2e000 r-xs 00000000 08:15
> 260628     /var/cache/fontconfig/87f5e051180a7a75f16eb6fe7dbd3749-
> x86.cache-2
> 8fb2e000-8fb34000 r-xs 00000000 08:15
> 260668     /var/cache/fontconfig/b79f3aaa7d385a141ab53ec885cc22a8-
> x86.cache-2
> 8fb34000-8fb37000 r-xs 00000000 08:15
> 260625     /var/cache/fontconfig/5d999c1bbe32f61af008974facb58b71-
> x86.cache-2
> 8fb37000-8fb3d000 r-xs 00000000 08:15
> 260624     /var/cache/fontconfig/79aeb4e90a401e55ec91db207072ba77-
> x86.cache-2
> 8fb3d000-8fb43000 r-xs 00000000 08:15
> 260629     /var/cache/fontconfig/20b58f14c9b581391d79ea335a81488a-
> x86.cache-2
> 8fb43000-8fb51000 r-xs 00000000 08:15
> 260673     /var/cache/fontconfig/8d4af663993b81a124ee82e610bb31f9-
> x86.cache-2
> 8fb51000-8fb58000 r-xs 00106000 08:06
> 4508028    /usr/java/jdk1.6.0_03/jre/lib/resources.jar
> 8fb58000-8fb5e000 r-xs 00091000 08:06
> 4508032    /usr/java/jdk1.6.0_03/jre/lib/jsse.jar
> 8fb5e000-8fb61000 ---p 8fb5e000 00:00 0
> 8fb61000-8fbaf000 rwxp 8fb61000 00:00 0
> 8fbaf000-8fbb2000 ---p 8fbaf000 00:00 0
> 8fbb2000-8fd00000 rwxp 8fbb2000 00:00 0
> 8fd00000-8fd04000 rwxs 00000000 00:08 62881806   /SYSV00000000 (deleted)
> 8fd04000-8fd0a000 r-xs 00000000 08:15
> 260668     /var/cache/fontconfig/b79f3aaa7d385a141ab53ec885cc22a8-
> x86.cache-2
> 8fd0a000-8fd0d000 ---p 8fd0a000 00:00 0
> 8fd0d000-8fd5b000 rwxp 8fd0d000 00:00 0
> 8fd5b000-8fd5f000 r-xp 00000000 08:06 3736843
>  /usr/lib/libXfixes.so.3.1.0
> 8fd5f000-8fd60000 rwxp 00003000 08:06 3736843
>  /usr/lib/libXfixes.so.3.1.0
> 8fd60000-8fd68000 r-xp 00000000 08:06 3736777
>  /usr/lib/libXrender.so.1.3.0
> 8fd68000-8fd69000 rwxp 00007000 08:06 3736777
>  /usr/lib/libXrender.so.1.3.0
> 8fd69000-8fd72000 r-xp 00000000 08:06 3738165
>  /usr/lib/libXcursor.so.1.0.2
> 8fd72000-8fd73000 rwxp 00008000 08:06 3738165
>  /usr/lib/libXcursor.so.1.0.2
>
>
> Sometimes the JavaVM creates a hs_err_pidXXXXX.log (maybe there is more
> than
> one problem) I attached the last hs_err_pidXXXXX.log I got, the hs_err_log
> have nothing to do with the output I wrote (*** glibc detected *** java:
> munmap_chunk(): invalid pointer: 0x8fc41840 *** and so on).
>
>
> Here is the code how I open a SVG File with batik and how I handle the
> Events:
>
>        [...] snip [...]
>
>                SAXSVGDocumentFactory df = null;
>                SVGOMDocument map = null;
>                SVGSVGElement svgRootElement = null;
>                SVGTransformation svgTrans = null;
>
>                String parser = XMLResourceDescriptor.getXMLParserClassName
> ();
>                SAXSVGDocumentFactory df = new
> SAXSVGDocumentFactory(parser);
>
>                if(log.isDebugEnabled())
>                {
>                        log.debug("Use XML parser: '" + parser + "'");
>                }
>
>                try
>                {
>                        String imageURI = (new
> File(imageName)).toURI().toURL().toString();
>                        map = (SVGOMDocument) df.createSVGDocument
> (imageURI);
>                }
>                catch(java.io.IOException ioe)
>                {
>                        log.error("Error while creating
> SVGDocument-Object", ioe);
>                }
>
>                svgCanvas = new JSVGCanvas(this);
>                svgCanvas.setDocumentState(SVGMapCanvas.ALWAYS_DYNAMIC);
>                svgCanvas.setSVGDocument(map);
>
>                svgRootElement = map.getRootElement();
>
>                svgTrans = new SVGTransformation(svgCanvas,
> svgRootElement);
>
>                EventTarget eventTarget = (EventTarget) svgRootElement;
>                eventTarget.addEventListener("SVGResize", new
> OnResizeAction(), false);
>                eventTarget.addEventListener("SVGScroll", new
> OnScrollAction(), false);
>
>        [...] snip [...]
>
>
> Here are the actions
>
>        private class OnResizeAction implements EventListener
>        {
>                /**
>                 * DOCUMENT ME!
>                 *
>                 * @param evt DOCUMENT ME!
>                 */
>                public void handleEvent(Event evt)
>                {
>                        if(log.isDebugEnabled())
>                        {
>                                log.debug("OnResizeAction");
>                        }
>
>                        svgTrans.update();
>
>                        double[] values = new double[4];
>                        values[0] = ((-10 - svgTrans.getShiftX()) /
> svgTrans.getScaleX());
>                        values[1] = ((svgCanvas.getWidth() -
> svgTrans.getShiftX()) /
> svgTrans.getScaleX());
>                        values[2] = ((-10 - svgTrans.getShiftY()) /
> svgTrans.getScaleY());
>                        values[3] = ((svgCanvas.getHeight() -
> svgTrans.getShiftY()) /
> svgTrans.getScaleY());
>                }
>        } // END class OnResizeAction
>
>        private class OnScrollAction implements EventListener
>        {
>                /**
>                 * DOCUMENT ME!
>                 *
>                 * @param evt DOCUMENT ME!
>                 */
>                public void handleEvent(Event evt)
>                {
>                        if(log.isDebugEnabled())
>                        {
>                                log.debug("OnScrollAction");
>                        }
>
>                        svgTrans.update();
>
>                        double[] values = new double[4];
>                        values[0] = ((-10 - svgTrans.getShiftX()) /
> svgTrans.getScaleX());
>                        values[1] = ((svgCanvas.getWidth() -
> svgTrans.getShiftX()) /
> svgTrans.getScaleX());
>                        values[2] = ((-10 - svgTrans.getShiftY()) /
> svgTrans.getScaleY());
>                        values[3] = ((svgCanvas.getHeight() -
> svgTrans.getShiftY()) /
> svgTrans.getScaleY());
>                }
>        }
>
> These actions are included in my JSVGCanvas (extends from batik
> JSVGCanvas):
>
>        /**
>         * A swing action to Pan/scroll the canvas.
>         */
>        public class ScrollAction extends AffineAction
>        {
>                /**
>                 * Creates a new ScrollAction object.
>                 *
>                 * @param tx DOCUMENT ME!
>                 * @param ty DOCUMENT ME!
>                 */
>                public ScrollAction(double tx, double ty)
>                {
>                        super(AffineTransform.getTranslateInstance(tx,
> ty));
>                }
>        }
>
>        /**
>         * A swing action to scroll the canvas down,
>         * by a fixed amount
>         */
>        public class ScrollDownAction extends ScrollAction
>        {
>                /**
>                 * Creates a new ScrollDownAction object.
>                 *
>                 * @param inc DOCUMENT ME!
>                 */
>                public ScrollDownAction(int inc)
>                {
>                        super(0, -inc);
>                }
>        }
>
>        /**
>         * A swing action to scroll the canvas to the left,
>         * by a fixed amount
>         */
>        public class ScrollLeftAction extends ScrollAction
>        {
>                /**
>                 * Creates a new ScrollLeftAction object.
>                 *
>                 * @param inc DOCUMENT ME!
>                 */
>                public ScrollLeftAction(int inc)
>                {
>                        super(inc, 0);
>                }
>        }
>
>        /**
>         * A swing action to scroll the canvas to the right,
>         * by a fixed amount
>         */
>        public class ScrollRightAction extends ScrollAction
>        {
>                /**
>                 * Creates a new ScrollRightAction object.
>                 *
>                 * @param inc DOCUMENT ME!
>                 */
>                public ScrollRightAction(int inc)
>                {
>                        super(-inc, 0);
>                }
>        }
>
>        /**
>         * A swing action to scroll the canvas up,
>         * by a fixed amount
>         */
>        public class ScrollUpAction extends ScrollAction
>        {
>                /**
>                 * Creates a new ScrollUpAction object.
>                 *
>                 * @param inc DOCUMENT ME!
>                 */
>                public ScrollUpAction(int inc)
>                {
>                        super(0, inc);
>                }
>        }
>
>        /**
>         * A swing action to apply a zoom factor to the canvas.
>         * This can be used to zoom in (scale > 1) and out (scale <1).
>         */
>        public class ZoomAction extends AffineAction
>        {
>                /**
>                 * Creates a new ZoomAction object.
>                 *
>                 * @param scale DOCUMENT ME!
>                 */
>                public ZoomAction(double scale)
>                {
>                        super(AffineTransform.getScaleInstance(scale,
> scale));
>                }
>
>                /**
>                 * Creates a new ZoomAction object.
>                 *
>                 * @param scaleX DOCUMENT ME!
>                 * @param scaleY DOCUMENT ME!
>                 */
>                public ZoomAction(double scaleX, double scaleY)
>                {
>                        super(AffineTransform.getScaleInstance(scaleX,
> scaleY));
>                }
>        }
>
>        /**
>         * A swing action to zoom in the canvas.
>         */
>        public class ZoomInAction extends ZoomAction
>        {
>                /**
>                 * Creates a new ZoomInAction object.
>                 */
>                ZoomInAction()
>                {
>                        super(2);
>                }
>        }
>
>        /**
>         * A swing action to zoom out the canvas.
>         */
>        public class ZoomOutAction extends ZoomAction
>        {
>                /**
>                 * Creates a new ZoomOutAction object.
>                 */
>                ZoomOutAction()
>                {
>                        super(.5);
>                }
>        }
>
>        public class AffineAction extends AbstractAction
>        {
>                /** DOCUMENT ME! */
>                AffineTransform at;
>
>                /**
>                 * Creates a new AffineAction object.
>                 *
>                 * @param at DOCUMENT ME!
>                 */
>                public AffineAction(AffineTransform at)
>                {
>                        this.at = at;
>                }
>
>                /**
>                 * DOCUMENT ME!
>                 *
>                 * @param evt DOCUMENT ME!
>                 */
>                public void actionPerformed(ActionEvent evt)
>                {
>                        if(gvtRoot == null)
>                        {
>                                return;
>                        }
>
>                        AffineTransform rat = getRenderingTransform();
>
>                        if(at != null)
>                        {
>                                Dimension dim = getSize();
>                                int x = dim.width / 2;
>                                int y = dim.height / 2;
>                                AffineTransform t =
> AffineTransform.getTranslateInstance(x, y);
>                                t.concatenate(at);
>                                t.translate(-x, -y);
>                                t.concatenate(rat);
>                                setRenderingTransform(t);
>                        }
>
>                        svgTrans.update();
>                }
>        }
>
>
> And here is SVGTransformation class:
>
> see attachment
>
>
>
> The problem I had with batik version 1.5, 1.6 and have it with version 1.7and
> it's only happening on Linux (every distri I tested, Mandriva 2007 & 2008,
> SuSE 10, Redhat Enterprise Linux 9) on Windows everything works great.
>
>
> Maybe someone can help me?
>
>
> Regards
> Fabian
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>



-- 
Archie L. Cobbs

Reply via email to