JDK-6205553 : JVM Crash in sun.dc.pr.PathFiller.setOutputArea - Antialiasing and big screens
  • Type: Bug
  • Component: client-libs
  • Sub-Component: 2d
  • Affected Version: 5.0
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: windows_xp
  • CPU: x86
  • Submitted: 2004-12-08
  • Updated: 2011-01-19
  • Resolved: 2005-08-24
Related Reports
Duplicate :  
Description
FULL PRODUCT VERSION :
java version "1.4.2_05"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_05-b04)
Java HotSpot(TM) Client VM (build 1.4.2_05-b04, mixed mode)

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


ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows XP [Version 5.1.2600]

A DESCRIPTION OF THE PROBLEM :
When drawing polygons with precise coordinates with a transformed Graphics in a large screen environment and ANTIALIAS hint on, the JVM crashes.

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Compile and execute the attached code.

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
No crash, but drawing of a black triangle instead.
ACTUAL -
JVM crash.

ERROR MESSAGES/STACK TRACES THAT OCCUR :
An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION (0xc0000005) occurred at PC=0x7245C21
Function=[Unknown.]
Library=C:\Program Files\Java\j2re1.4.2_05\bin\dcpr.dll

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(Unknown Source)
	at sun.java2d.pipe.DuctusShapeRenderer.renderPath(Unknown Source)
	at sun.java2d.pipe.DuctusShapeRenderer.fill(Unknown Source)
	at sun.java2d.pipe.ValidatePipe.fill(Unknown Source)
	at sun.java2d.SunGraphics2D.fill(Unknown Source)
	at Crash.paint(Crash.java:30)
	at javax.swing.JComponent.paintChildren(Unknown Source)
	- locked <0x100a2038> (a java.awt.Component$AWTTreeLock)
	at javax.swing.JComponent.paint(Unknown Source)
	at javax.swing.JComponent.paintChildren(Unknown Source)
	- locked <0x100a2038> (a java.awt.Component$AWTTreeLock)
	at javax.swing.JComponent.paint(Unknown Source)
	at javax.swing.JLayeredPane.paint(Unknown Source)
	at javax.swing.JComponent.paintChildren(Unknown Source)
	- locked <0x100a2038> (a java.awt.Component$AWTTreeLock)
	at javax.swing.JComponent.paintWithOffscreenBuffer(Unknown Source)
	at javax.swing.JComponent.paintDoubleBuffered(Unknown Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at java.awt.GraphicsCallback$PaintCallback.run(Unknown Source)
	at sun.awt.SunGraphicsCallback.runOneComponent(Unknown Source)
	at sun.awt.SunGraphicsCallback.runComponents(Unknown Source)
	at java.awt.Container.paint(Unknown Source)
	at sun.awt.RepaintArea.paint(Unknown Source)
	at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

Dynamic libraries:
0x00400000 - 0x0040B000 	C:\Program Files\Java\j2re1.4.2_05\bin\javaw.exe
0x7C900000 - 0x7C9B0000 	C:\WINDOWS\system32\ntdll.dll
0x7C800000 - 0x7C8F4000 	C:\WINDOWS\system32\kernel32.dll
0x77DD0000 - 0x77E6B000 	C:\WINDOWS\system32\ADVAPI32.dll
0x77E70000 - 0x77F01000 	C:\WINDOWS\system32\RPCRT4.dll
0x77D40000 - 0x77DD0000 	C:\WINDOWS\system32\USER32.dll
0x77F10000 - 0x77F56000 	C:\WINDOWS\system32\GDI32.dll
0x77C10000 - 0x77C68000 	C:\WINDOWS\system32\MSVCRT.dll
0x76390000 - 0x763AD000 	C:\WINDOWS\system32\IMM32.DLL
0x629C0000 - 0x629C9000 	C:\WINDOWS\system32\LPK.DLL
0x74D90000 - 0x74DFB000 	C:\WINDOWS\system32\USP10.dll
0x08000000 - 0x08139000 	C:\Program Files\Java\j2re1.4.2_05\bin\client\jvm.dll
0x76B40000 - 0x76B6D000 	C:\WINDOWS\system32\WINMM.dll
0x10000000 - 0x10007000 	C:\Program Files\Java\j2re1.4.2_05\bin\hpi.dll
0x00940000 - 0x0094E000 	C:\Program Files\Java\j2re1.4.2_05\bin\verify.dll
0x00950000 - 0x00969000 	C:\Program Files\Java\j2re1.4.2_05\bin\java.dll
0x00970000 - 0x0097D000 	C:\Program Files\Java\j2re1.4.2_05\bin\zip.dll
0x02D60000 - 0x02E72000 	C:\Program Files\Java\j2re1.4.2_05\bin\awt.dll
0x73000000 - 0x73026000 	C:\WINDOWS\system32\WINSPOOL.DRV
0x774E0000 - 0x7761C000 	C:\WINDOWS\system32\ole32.dll
0x03090000 - 0x030E1000 	C:\Program Files\Java\j2re1.4.2_05\bin\fontmanager.dll
0x73760000 - 0x737A9000 	C:\WINDOWS\system32\ddraw.dll
0x73BC0000 - 0x73BC6000 	C:\WINDOWS\system32\DCIMAN32.dll
0x73940000 - 0x73A10000 	C:\WINDOWS\system32\D3DIM700.DLL
0x07190000 - 0x07197000 	C:\Program Files\Logitech\MouseWare\System\LgWndHk.dll
0x755C0000 - 0x755EE000 	C:\WINDOWS\system32\msctfime.ime
0x07230000 - 0x0723B000 	C:\Program Files\Common Files\Logitech\Scrolling\LgMsgHk.dll
0x76080000 - 0x760E5000 	C:\WINDOWS\system32\MSVCP60.dll
0x07240000 - 0x07262000 	C:\Program Files\Java\j2re1.4.2_05\bin\dcpr.dll
0x76C90000 - 0x76CB8000 	C:\WINDOWS\system32\imagehlp.dll
0x59A60000 - 0x59B01000 	C:\WINDOWS\system32\DBGHELP.dll
0x77C00000 - 0x77C08000 	C:\WINDOWS\system32\VERSION.dll
0x76BF0000 - 0x76BFB000 	C:\WINDOWS\system32\PSAPI.DLL

Heap at VM Abort:
Heap
 def new generation   total 576K, used 337K [0x10010000, 0x100b0000, 0x104f0000)
  eden space 512K,  53% used [0x10010000, 0x100547f0, 0x10090000)
  from space 64K, 100% used [0x100a0000, 0x100b0000, 0x100b0000)
  to   space 64K,   0% used [0x10090000, 0x10090000, 0x100a0000)
 tenured generation   total 1408K, used 126K [0x104f0000, 0x10650000, 0x14010000)
   the space 1408K,   8% used [0x104f0000, 0x1050fa28, 0x1050fc00, 0x10650000)
 compacting perm gen  total 4096K, used 3298K [0x14010000, 0x14410000, 0x18010000)
   the space 4096K,  80% used [0x14010000, 0x143488c0, 0x14348a00, 0x14410000)

Local Time = Tue Dec 07 18:43:04 2004
Elapsed Time = 0
#
# The exception above was detected in native code outside the VM
#
# Java VM: Java HotSpot(TM) Client VM (1.4.2_05-b04 mixed mode)
#
# An error report file has been saved as hs_err_pid1592.log.
# Please refer to the file for further information.
#

C:\>javac Crash.java
Note: Crash.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

C:\>java Crash
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d1c5c68, pid=4088, tid=2780
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0-b64 mixed mode)
# Problematic frame:
# C  [dcpr.dll+0x5c68]
#
# An error report file with more information is saved as hs_err_pid4088.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.GeneralPath;
import javax.swing.JFrame;
import javax.swing.JPanel;
/*
 * Created on Dec 7, 2004
 *
 * Reproducing Java2D crash when drawing certain polygons with antialias on.
 */
public class Crash extends JPanel {
    Crash()
    {
        setPreferredSize(new Dimension(1600,1100));
        setDoubleBuffered(true);
    }
    public void paint(Graphics g)
    {
        Graphics2D g2d=(Graphics2D)g;
        g2d.translate(400,100);
        g2d.scale(8,8);
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
        GeneralPath p=new GeneralPath();
        p.moveTo(-48,-8.5f);
        p.lineTo(48,-8.5f);
        p.lineTo(47.999985f,8);
        p.closePath();
        g2d.fill(p);
    }
	public static void main(String[] args) {
		Crash c = new Crash();
		JFrame f = new JFrame("");
		f.getContentPane().add(c);
		f.pack();
		f.show();
	}

}

---------- END SOURCE ----------
###@###.### 2004-12-08 02:01:06 GMT

Comments
EVALUATION This bug is not reproducible anymore after fix of the 4896773
24-08-2005