JDK-4617206 : j2sdk1.3,1 .3.1, 1.4-beta3 crashed in java2D at sun.dc.pr.PathFiller.setOutputAr
  • Type: Bug
  • Component: client-libs
  • Sub-Component: 2d
  • Affected Version: 1.4.0,1.4.2
  • Priority: P4
  • Status: Closed
  • Resolution: Cannot Reproduce
  • OS: linux,windows_2000
  • CPU: x86
  • Submitted: 2001-12-21
  • Updated: 2005-09-13
  • Resolved: 2005-09-13
Related Reports
Relates :  
Description
Name: jk109818			Date: 12/21/2001


java version "1.4.0-beta3"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta3-b84)
Java HotSpot(TM) Client VM (build 1.4.0-beta3-b84, mixed mode)



Running a map application that reads oracle spatial geometries from a database
and then uses java2D to draw the geometries in a JPanel.

Have one thread that loads data (not the AWT-thread). The load thread also draws
to the map using getGraphics to get the Graphics object for the JPanel.

The method that crashes the jvm seems to be: this one:

    /** Fill the interior of a polygon and draw an outline around it. */
    private void fillPoly (Graphics2D g2, int otype, GeneralPath poly,  Color c, Color c2, boolean dofill) {
	if (otype != -2) {
	    if (dofill && c.getAlpha () > 0) {
		g2.setComposite (AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
							    (float)(c.getAlpha () / 255.0)));
		g2.fill (poly);   // CRASHES HERE SOMETIMES
	    }
	    if (c2 != null) {
		g2.setColor (c2);
		g2.setComposite (AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
							    (float)(c2.getAlpha () / 255.0)));
	    }
	}
	g2.draw (poly);
    }


  From the stacktrace we can see that the jvm crashes on a call to fill with an
GeneralPath as argument.

This application has two modes:"draw while loading" and "draw when finished
loading". I have only been able to trigger this bug in the "draw while loading"
mode. In this mode drawing is done like this:

    protected void drawComponent (GeometryComponent gc, Color c, Color c2) {
	if (mapgraphics == null) {
	    mapgraphics = map.getGraphics ();
	    map.setUpTransform (mapgraphics);
	}
	map.drawObject (gc, map.getCoordBounds (), map.getSx (),
			map.getSize (), mapgraphics, c, c2);
    }

the map variable is a subclass of JPanel. the call to getSx () returns a scale
value that is used when setting up the transformation for the map.

I have not yet found any specific GeneralPath that crashes the jvm it seems to
be a race/thread condition in the native code.


full stack trace:
An irrecoverable stack overflow has occurred.

An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : 11 occurred at PC=0x4CCDED95
Function=(null)+0x4CCDED95
Library=/usr/local/j2sdk1.4.0/jre/lib/i386/libdcpr.so

NOTE: We are unable to locate the function name symbol for the error
      just occurred. Please refer to release documentation for possible
      reason and solutions.


Current Java thread:
        at sun.dc.pr.PathFiller.setOutputArea(Native Method)
        at sun.dc.pr.Rasterizer.setOutputArea(Rasterizer.java:635)
        at
sun.java2d.pipe.DuctusShapeRenderer.renderPath(DuctusShapeRenderer.java:79)
        at sun.java2d.pipe.DuctusShapeRenderer.fill(DuctusShapeRenderer.java:52)
        at sun.java2d.SunGraphics2D.fill(SunGraphics2D.java:2193)
        at bios.applets.GeometryDrawer.fillPoly(GeometryDrawer.java:306)
        at bios.applets.GeometryDrawer.drawCurvePolygon(GeometryDrawer.java:354)
        at bios.applets.GeometryDrawer.draw(GeometryDrawer.java:101)
        - locked <0x44700850> (a bios.applets.MapPanel)
        at bios.applets.MapPanel.drawObject(MapPanel.java:376)
        at bios.applets.MapPanel.drawObjects(MapPanel.java:321)
        at bios.applets.MapPanel.paintComponent(MapPanel.java:277)
        at bios.applets.MapPanel.paintComponent(MapPanel.java:227)
        at javax.swing.JComponent.paint(JComponent.java:807)
        at javax.swing.JComponent.paintChildren(JComponent.java:646)
        - locked <0x4461ce58> (a java.awt.Component$AWTTreeLock)
        at javax.swing.JComponent.paint(JComponent.java:816)
        at javax.swing.JComponent.paintChildren(JComponent.java:646)
        - locked <0x4461ce58> (a java.awt.Component$AWTTreeLock)
        at javax.swing.JComponent.paint(JComponent.java:816)
        at javax.swing.JComponent.paintChildren(JComponent.java:646)
        - locked <0x4461ce58> (a java.awt.Component$AWTTreeLock)
        at javax.swing.JComponent.paint(JComponent.java:816)
        at javax.swing.JComponent.paintChildren(JComponent.java:646)
        - locked <0x4461ce58> (a java.awt.Component$AWTTreeLock)
        at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4744)
        at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4690)
        at javax.swing.JComponent._paintImmediately(JComponent.java:4634)
        at javax.swing.JComponent.paintImmediately(JComponent.java:4466)
        at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:407)
        at
javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:120)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:181)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:446)
        at
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:193)
        at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:147)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:141)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:133)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:101)


Dynamic libraries:
08048000-0804d000 r-xp 00000000 03:05 560849
/usr/local/j2sdk1.4.0/bin/appletviewer
0804d000-0804f000 rw-p 00004000 03:05 560849
/usr/local/j2sdk1.4.0/bin/appletviewer
40000000-40014000 r-xp 00000000 03:05 160093     /lib/ld-2.2.4.so
40014000-40015000 rw-p 00013000 03:05 160093     /lib/ld-2.2.4.so
40016000-4001f000 r-xp 00000000 03:05 227080
/usr/local/j2sdk1.4.0/jre/lib/i386/native_threads/libhpi.so
4001f000-40020000 rw-p 00008000 03:05 227080
/usr/local/j2sdk1.4.0/jre/lib/i386/native_threads/libhpi.so
40020000-40021000 r--p 00000000 03:05 144102
/usr/lib/locale/en_US/LC_IDENTIFICATION
40021000-4002f000 r-xp 00000000 03:05 161361     /lib/libpthread-0.9.so
4002f000-40037000 rw-p 0000d000 03:05 161361     /lib/libpthread-0.9.so
40037000-4010c000 r-xp 00000000 03:05 48966      /usr/X11R6/lib/libX11.so.6.2
4010c000-40111000 rw-p 000d4000 03:05 48966      /usr/X11R6/lib/libX11.so.6.2
40112000-40114000 r-xp 00000000 03:05 160595     /lib/libdl-2.2.4.so
40114000-40116000 rw-p 00001000 03:05 160595     /lib/libdl-2.2.4.so
40117000-4022f000 r-xp 00000000 03:05 160590     /lib/libc-2.2.4.so
4022f000-40235000 rw-p 00117000 03:05 160590     /lib/libc-2.2.4.so
4023a000-404f8000 r-xp 00000000 03:05 227086
/usr/local/j2sdk1.4.0/jre/lib/i386/client/libjvm.so
404f8000-40640000 rw-p 002bd000 03:05 227086
/usr/local/j2sdk1.4.0/jre/lib/i386/client/libjvm.so
40654000-40665000 r-xp 00000000 03:05 161178     /lib/libnsl-2.2.4.so
40665000-40667000 rw-p 00010000 03:05 161178     /lib/libnsl-2.2.4.so
40669000-4069d000 r-xp 00000000 03:05 400248
/usr/lib/libstdc++-2-libc6.1-1-2.9.0.so
4069d000-406a9000 rw-p 00033000 03:05 400248
/usr/lib/libstdc++-2-libc6.1-1-2.9.0.so
406ab000-406cc000 r-xp 00000000 03:05 161177     /lib/libm-2.2.4.so
406cc000-406cd000 rw-p 00020000 03:05 161177     /lib/libm-2.2.4.so
406cd000-406de000 r-xp 00000000 03:05 227090
/usr/local/j2sdk1.4.0/jre/lib/i386/libverify.so
406de000-406e0000 rw-p 00010000 03:05 227090
/usr/local/j2sdk1.4.0/jre/lib/i386/libverify.so
406e0000-40701000 r-xp 00000000 03:05 227091
/usr/local/j2sdk1.4.0/jre/lib/i386/libjava.so
40701000-40703000 rw-p 00020000 03:05 227091
/usr/local/j2sdk1.4.0/jre/lib/i386/libjava.so
40704000-40718000 r-xp 00000000 03:05 227093
/usr/local/j2sdk1.4.0/jre/lib/i386/libzip.so
40718000-4071b000 rw-p 00013000 03:05 227093
/usr/local/j2sdk1.4.0/jre/lib/i386/libzip.so
4071b000-41ce2000 r--s 00000000 03:05 227133
/usr/local/j2sdk1.4.0/jre/lib/rt.jar
41d24000-41d3b000 r--s 00000000 03:05 227114
/usr/local/j2sdk1.4.0/jre/lib/sunrsasign.jar
41d3b000-41da9000 r--s 00000000 03:05 227116
/usr/local/j2sdk1.4.0/jre/lib/jsse.jar
41da9000-41dbc000 r--s 00000000 03:05 227115
/usr/local/j2sdk1.4.0/jre/lib/jce.jar
41dbc000-4203d000 r--s 00000000 03:05 227131
/usr/local/j2sdk1.4.0/jre/lib/charsets.jar
440e5000-440e6000 r--p 00000000 03:05 144098
/usr/lib/locale/en_US/LC_MEASUREMENT
440e6000-440e7000 r--p 00000000 03:05 144081     /usr/lib/locale/en_US/LC_TELEPHONE
440e7000-440e8000 r--p 00000000 03:05 144072     /usr/lib/locale/en_US/LC_ADDRESS
440e8000-440e9000 r--p 00000000 03:05 144067     /usr/lib/locale/en_US/LC_NAME
440e9000-440ea000 r--p 00000000 03:05 144066     /usr/lib/locale/en_US/LC_PAPER
440ea000-440eb000 r--p 00000000 03:05 64046
/usr/lib/locale/en_US/LC_MESSAGES/SYS_LC_MESSAGES
440eb000-440ec000 r--p 00000000 03:05 144065     /usr/lib/locale/en_US/LC_MONETARY
440ec000-440ed000 r--p 00000000 03:05 144063     /usr/lib/locale/en_US/LC_TIME
440ed000-440ee000 r--p 00000000 03:05 144062     /usr/lib/locale/en_US/LC_NUMERIC
440ee000-440f0000 r--s 00000000 03:05 208622
/usr/local/j2sdk1.4.0/jre/lib/ext/dnsns.jar
4c170000-4c176000 r--p 00000000 03:05 144064     /usr/lib/locale/en_US/LC_COLLATE
4c176000-4c1a1000 r--p 00000000 03:05 144061     /usr/lib/locale/en_US/LC_CTYPE
4c1a2000-4c1a4000 r-xp 00000000 03:05 19448      /usr/lib/gconv/ISO8859-1.so
4c1a4000-4c1a5000 rw-p 00001000 03:05 19448      /usr/lib/gconv/ISO8859-1.so
4c1a5000-4c1ab000 r--s 00000000 03:05 99866      /tmp/jar_cache203.tmp (deleted)
4c1ac000-4c1b6000 r-xp 00000000 03:05 161179     /lib/libnss_compat-2.2.4.so
4c1b6000-4c1b7000 rw-p 00009000 03:05 161179     /lib/libnss_compat-2.2.4.so
4c1e2000-4c1ff000 r--s 00000000 03:05 208306
/usr/local/j2sdk1.4.0/jre/lib/ext/sunjce_provider.jar
4c1ff000-4c29e000 r--s 00000000 03:05 208625
/usr/local/j2sdk1.4.0/jre/lib/ext/localedata.jar
4c29e000-4c2ac000 r--s 00000000 03:05 208626
/usr/local/j2sdk1.4.0/jre/lib/ext/ldapsec.jar
4c2ac000-4c746000 r--s 00000000 03:05 242090     /usr/local/j2sdk1.4.0/lib/tools.jar
4c746000-4ca06000 r-xp 00000000 03:05 227101
/usr/local/j2sdk1.4.0/jre/lib/i386/libawt.so
4ca06000-4ca1a000 rw-p 002bf000 03:05 227101
/usr/local/j2sdk1.4.0/jre/lib/i386/libawt.so
4ca3f000-4ca90000 r-xp 00000000 03:05 227100
/usr/local/j2sdk1.4.0/jre/lib/i386/libmlib_image.so
4ca90000-4ca91000 rw-p 00050000 03:05 227100
/usr/local/j2sdk1.4.0/jre/lib/i386/libmlib_image.so
4ca91000-4ca97000 r-xp 00000000 03:05 49635      /usr/X11R6/lib/libXp.so.6.2
4ca97000-4ca99000 rw-p 00005000 03:05 49635      /usr/X11R6/lib/libXp.so.6.2
4ca99000-4cadf000 r-xp 00000000 03:05 49653      /usr/X11R6/lib/libXt.so.6.0
4cadf000-4cae3000 rw-p 00045000 03:05 49653      /usr/X11R6/lib/libXt.so.6.0
4cae3000-4caef000 r-xp 00000000 03:05 48968      /usr/X11R6/lib/libXext.so.6.4
4caef000-4caf1000 rw-p 0000b000 03:05 48968      /usr/X11R6/lib/libXext.so.6.4
4caf1000-4caf5000 r-xp 00000000 03:05 49668      /usr/X11R6/lib/libXtst.so.6.1
4caf5000-4caf6000 rw-p 00003000 03:05 49668      /usr/X11R6/lib/libXtst.so.6.1
4caf6000-4cafd000 r-xp 00000000 03:05 48965      /usr/X11R6/lib/libSM.so.6.0
4cafd000-4caff000 rw-p 00006000 03:05 48965      /usr/X11R6/lib/libSM.so.6.0
4caff000-4cb12000 r-xp 00000000 03:05 48963      /usr/X11R6/lib/libICE.so.6.3
4cb12000-4cb14000 rw-p 00012000 03:05 48963      /usr/X11R6/lib/libICE.so.6.3
4cb15000-4cb27000 r-xp 00000000 03:05 227096
/usr/local/j2sdk1.4.0/jre/lib/i386/libnet.so
4cb27000-4cb28000 rw-p 00011000 03:05 227096
/usr/local/j2sdk1.4.0/jre/lib/i386/libnet.so
4cb28000-4cb30000 r-xp 00000000 03:05 161181     /lib/libnss_files-2.2.4.so
4cb30000-4cb32000 rw-p 00007000 03:05 161181     /lib/libnss_files-2.2.4.so
4cb32000-4cbf7000 r-xp 00000000 03:05 227103
/usr/local/j2sdk1.4.0/jre/lib/i386/libfontmanager.so
4cbf7000-4cc11000 rw-p 000c4000 03:05 227103
/usr/local/j2sdk1.4.0/jre/lib/i386/libfontmanager.so
4cc12000-4cc3a000 r--s 00000000 03:05 99865      /tmp/jar_cache202.tmp (deleted)
4cc3a000-4ccd0000 r--s 00000000 03:05 99867      /tmp/jar_cache204.tmp (deleted)
4ccd0000-4ccec000 r-xp 00000000 03:05 227099
/usr/local/j2sdk1.4.0/jre/lib/i386/libdcpr.so
4ccec000-4cd00000 rw-p 0001b000 03:05 227099
/usr/local/j2sdk1.4.0/jre/lib/i386/libdcpr.so
4ce00000-4ce4c000 r--s 00000000 03:05 99868      /tmp/jar_cache205.tmp (deleted)
4ce4c000-4ceaf000 r--s 00000000 03:05 99869      /tmp/jar_cache206.tmp (deleted)
4ceaf000-4cfc2000 r--s 00000000 03:05 99870      /tmp/jar_cache207.tmp (deleted)
4d300000-4d67b000 rw-s 00000000 00:05 1351712778 /SYSV00000000 (deleted)


This computer is running debian GNU/Linux (unstable)


This bug also seems to be in jdk/1.3.1 and jdk/1.3.0
(Review ID: 136082) 
======================================================================

Comments
EVALUATION Closing as Not Reproducible, since we have been unable to obtain a test case for this failure. The issue affecting JFreeChart appears to have been resolved in bug 4836495.
13-09-2005

EVALUATION Looks like this bug is a duplicate of 4896773 which has been fixed in mustang. But lack of the testcase in the bug report prevent me from more thorough checking. Please, provide the testcase or binary application illustrating this problem.
24-08-2005

WORK AROUND Name: jk109818 Date: 12/21/2001 use IBMs jvm, t does not crash like this. ======================================================================
17-09-2004