United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
JDK-6215380 : 1.5.0_01 b08. EXCEPTION_ACCESS_VIOLATION

Details
Type:
Bug
Submit Date:
2005-01-07
Status:
Closed
Updated Date:
2011-02-16
Project Name:
JDK
Resolved Date:
2005-02-08
Component:
client-libs
OS:
windows_xp
Sub-Component:
2d
CPU:
x86
Priority:
P2
Resolution:
Duplicate
Affected Versions:
5.0u1
Fixed Versions:

Related Reports
Duplicate:

Sub Tasks

Description
C:\Raghu>java PieCrash2
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d1c5c68, pid=140, tid=3152
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_01-b08 mixed mode, sharing)
# Problematic frame:
# C  [dcpr.dll+0x5c68]


---------------  T H R E A D  ---------------

Current thread (0x00abb3f0):  JavaThread "AWT-EventQueue-0" [_thread_in_native, id=3152]

siginfo: ExceptionCode=0xc0000005, reading address 0x0000000c

Registers:
EAX=0x00000000, EBX=0x0000000c, ECX=0x00000000, EDX=0x00000000
ESP=0x02dcf004, EBP=0x02dcf010, ESI=0x00a408e4, EDI=0x00000010
EIP=0x6d1c5c68, EFLAGS=0x00010246

Top of Stack: (sp=0x02dcf004)
0x02dcf004:   00ac54e0 00a408e4 00000004 02dcf048
0x02dcf014:   6d1c5bc1 00ac4250 00a408e4 00000004
0x02dcf024:   00000003 00000001 00000000 00000000
0x02dcf034:   00000000 3de00000 00000003 00ac54e0
0x02dcf044:   00a408e4 02dcf090 6d1c538b 00ac4250
0x02dcf054:   00a408e4 40400000 40400000 00000000
0x02dcf064:   3de00000 00000004 00000003 00ac557c
0x02dcf074:   00ac557c 00ac4250 40400000 40400000 

Instructions: (pc=0x6d1c5c68)
0x6d1c5c58:   c1 e7 02 8b 40 64 33 d2 c1 e3 02 8b 04 07 33 c9
0x6d1c5c68:   8b 34 18 3b f2 0f 94 c1 3b ca 75 1b d9 46 74 d8 


Stack: [0x02d90000,0x02dd0000),  sp=0x02dcf004,  free space=252k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [dcpr.dll+0x5c68]
C  [dcpr.dll+0x5bc1]
C  [dcpr.dll+0x538b]
C  [dcpr.dll+0x4da5]
C  [dcpr.dll+0x1900]
C  [dcpr.dll+0x68f3]
C  [dcpr.dll+0x2601]
j  sun.dc.pr.PathFiller.setOutputArea(FFII)V+0
j  sun.dc.pr.Rasterizer.setOutputArea(FFII)V+9
j  sun.java2d.pipe.DuctusShapeRenderer.renderPath(Lsun/java2d/SunGraphics2D;Ljava/awt/Shape;Ljava/awt/BasicStroke;)V+212
j  sun.java2d.pipe.DuctusShapeRenderer.fill(Lsun/java2d/SunGraphics2D;Ljava/awt/Shape;)V+4
j  sun.java2d.pipe.ValidatePipe.fill(Lsun/java2d/SunGraphics2D;Ljava/awt/Shape;)V+14
j  sun.java2d.SunGraphics2D.fill(Ljava/awt/Shape;)V+6
j  PieCrash2.paintComponent(Ljava/awt/Graphics;)V+55
j  javax.swing.JComponent.paint(Ljava/awt/Graphics;)V+260
j  javax.swing.JComponent.paintChildren(Ljava/awt/Graphics;)V+495
j  javax.swing.JComponent.paint(Ljava/awt/Graphics;)V+292
j  javax.swing.JComponent.paintChildren(Ljava/awt/Graphics;)V+495
j  javax.swing.JComponent.paint(Ljava/awt/Graphics;)V+292
j  javax.swing.JLayeredPane.paint(Ljava/awt/Graphics;)V+73
j  javax.swing.JComponent.paintChildren(Ljava/awt/Graphics;)V+495
j  javax.swing.JComponent.paintWithOffscreenBuffer(Ljavax/swing/JComponent;Ljava/awt/Graphics;IIIILjava/awt/Image;)V+209
j  javax.swing.JComponent.paintDoubleBuffered(Ljavax/swing/JComponent;Ljava/awt/Component;Ljava/awt/Graphics;IIII)Z+131
j  javax.swing.JComponent.paint(Ljava/awt/Graphics;)V+211
j  java.awt.GraphicsCallback$PaintCallback.run(Ljava/awt/Component;Ljava/awt/Graphics;)V+2
j  sun.awt.SunGraphicsCallback.runOneComponent(Ljava/awt/Component;Ljava/awt/Rectangle;Ljava/awt/Graphics;Ljava/awt/Shape;I)V+155
j  sun.awt.SunGraphicsCallback.runComponents([Ljava/awt/Component;Ljava/awt/Graphics;I)V+104
j  java.awt.Container.paint(Ljava/awt/Graphics;)V+62
j  sun.awt.RepaintArea.paintComponent(Ljava/awt/Component;Ljava/awt/Graphics;)V+6
j  sun.awt.RepaintArea.paint(Ljava/lang/Object;Z)V+326
j  sun.awt.windows.WComponentPeer.handleEvent(Ljava/awt/AWTEvent;)V+63
j  java.awt.Component.dispatchEventImpl(Ljava/awt/AWTEvent;)V+765
j  java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+42
j  java.awt.Window.dispatchEventImpl(Ljava/awt/AWTEvent;)V+19
j  java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
j  java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V+46
j  java.awt.EventDispatchThread.pumpOneEventForHierarchy(ILjava/awt/Component;)Z+200
j  java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+26
j  java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4
j  java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3
j  java.awt.EventDispatchThread.run()V+9
v  ~StubRoutines::call_stub
V  [jvm.dll+0x8176e]
V  [jvm.dll+0xd481d]
V  [jvm.dll+0x8163f]
V  [jvm.dll+0x8139c]
V  [jvm.dll+0x9c05c]
V  [jvm.dll+0xfeece]
V  [jvm.dll+0xfee9c]
C  [MSVCRT.dll+0x27fb8]
C  [kernel32.dll+0x1d33b]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  sun.dc.pr.PathFiller.setOutputArea(FFII)V+0
j  sun.dc.pr.Rasterizer.setOutputArea(FFII)V+9
j  sun.java2d.pipe.DuctusShapeRenderer.renderPath(Lsun/java2d/SunGraphics2D;Ljava/awt/Shape;Ljava/awt/BasicStroke;)V+212
j  sun.java2d.pipe.DuctusShapeRenderer.fill(Lsun/java2d/SunGraphics2D;Ljava/awt/Shape;)V+4
j  sun.java2d.pipe.ValidatePipe.fill(Lsun/java2d/SunGraphics2D;Ljava/awt/Shape;)V+14
j  sun.java2d.SunGraphics2D.fill(Ljava/awt/Shape;)V+6
j  PieCrash2.paintComponent(Ljava/awt/Graphics;)V+55
j  javax.swing.JComponent.paint(Ljava/awt/Graphics;)V+260
j  javax.swing.JComponent.paintChildren(Ljava/awt/Graphics;)V+495
j  javax.swing.JComponent.paint(Ljava/awt/Graphics;)V+292
j  javax.swing.JComponent.paintChildren(Ljava/awt/Graphics;)V+495
j  javax.swing.JComponent.paint(Ljava/awt/Graphics;)V+292
j  javax.swing.JLayeredPane.paint(Ljava/awt/Graphics;)V+73
j  javax.swing.JComponent.paintChildren(Ljava/awt/Graphics;)V+495
j  javax.swing.JComponent.paintWithOffscreenBuffer(Ljavax/swing/JComponent;Ljava/awt/Graphics;IIIILjava/awt/Image;)V+209
j  javax.swing.JComponent.paintDoubleBuffered(Ljavax/swing/JComponent;Ljava/awt/Component;Ljava/awt/Graphics;IIII)Z+131
j  javax.swing.JComponent.paint(Ljava/awt/Graphics;)V+211
j  java.awt.GraphicsCallback$PaintCallback.run(Ljava/awt/Component;Ljava/awt/Graphics;)V+2
j  sun.awt.SunGraphicsCallback.runOneComponent(Ljava/awt/Component;Ljava/awt/Rectangle;Ljava/awt/Graphics;Ljava/awt/Shape;I)V+155
j  sun.awt.SunGraphicsCallback.runComponents([Ljava/awt/Component;Ljava/awt/Graphics;I)V+104
j  java.awt.Container.paint(Ljava/awt/Graphics;)V+62
j  sun.awt.RepaintArea.paintComponent(Ljava/awt/Component;Ljava/awt/Graphics;)V+6
j  sun.awt.RepaintArea.paint(Ljava/lang/Object;Z)V+326
j  sun.awt.windows.WComponentPeer.handleEvent(Ljava/awt/AWTEvent;)V+63
j  java.awt.Component.dispatchEventImpl(Ljava/awt/AWTEvent;)V+765
j  java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+42
j  java.awt.Window.dispatchEventImpl(Ljava/awt/AWTEvent;)V+19
j  java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
j  java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V+46
j  java.awt.EventDispatchThread.pumpOneEventForHierarchy(ILjava/awt/Component;)Z+200
j  java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+26
j  java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4
j  java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3
j  java.awt.EventDispatchThread.run()V+9
v  ~StubRoutines::call_stub

---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
  0x00abd188 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=3896]
  0x00035c78 JavaThread "DestroyJavaVM" [_thread_blocked, id=720]
=>0x00abb3f0 JavaThread "AWT-EventQueue-0" [_thread_in_native, id=3152]
  0x00aba0b0 JavaThread "AWT-Windows" daemon [_thread_in_native, id=3508]
  0x00ab9ba8 JavaThread "AWT-Shutdown" [_thread_blocked, id=2136]
  0x00a66390 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=2060]
  0x00a64f68 JavaThread "CompilerThread0" daemon [_thread_blocked, id=3676]
  0x00a64220 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=3680]
  0x00a615b8 JavaThread "Finalizer" daemon [_thread_blocked, id=3684]
  0x00a600d8 JavaThread "Reference Handler" daemon [_thread_blocked, id=776]

Other Threads:
  0x00a5d838 VMThread [id=732]
  0x00a80e38 WatcherThread [id=2080]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
 def new generation   total 576K, used 213K [0x22a60000, 0x22b00000, 0x22f40000)
  eden space 512K,  29% used [0x22a60000, 0x22a85510, 0x22ae0000)
  from space 64K, 100% used [0x22af0000, 0x22b00000, 0x22b00000)
  to   space 64K,   0% used [0x22ae0000, 0x22ae0000, 0x22af0000)
 tenured generation   total 1408K, used 216K [0x22f40000, 0x230a0000, 0x26a60000)
   the space 1408K,  15% used [0x22f40000, 0x22f76390, 0x22f76400, 0x230a0000)
 compacting perm gen  total 8192K, used 95K [0x26a60000, 0x27260000, 0x2aa60000)
   the space 8192K,   1% used [0x26a60000, 0x26a77dd8, 0x26a77e00, 0x27260000)
    ro space 8192K,  62% used [0x2aa60000, 0x2af67d30, 0x2af67e00, 0x2b260000)
    rw space 12288K,  46% used [0x2b260000, 0x2b7ec8a0, 0x2b7eca00, 0x2be60000)

Dynamic libraries:
0x00400000 - 0x0040c000 	C:\WINDOWS\system32\java.exe
0x77f50000 - 0x77ff7000 	C:\WINDOWS\System32\ntdll.dll
0x77e60000 - 0x77f46000 	C:\WINDOWS\system32\kernel32.dll
0x77dd0000 - 0x77e5d000 	C:\WINDOWS\system32\ADVAPI32.dll
0x78000000 - 0x78087000 	C:\WINDOWS\system32\RPCRT4.dll
0x77c10000 - 0x77c63000 	C:\WINDOWS\system32\MSVCRT.dll
0x6d640000 - 0x6d7c5000 	C:\Program Files\Java\jre1.5.0_01\bin\client\jvm.dll
0x77d40000 - 0x77dcc000 	C:\WINDOWS\system32\USER32.dll
0x7e090000 - 0x7e0d1000 	C:\WINDOWS\system32\GDI32.dll
0x76b40000 - 0x76b6c000 	C:\WINDOWS\system32\WINMM.dll
0x6d280000 - 0x6d288000 	C:\Program Files\Java\jre1.5.0_01\bin\hpi.dll
0x76bf0000 - 0x76bfb000 	C:\WINDOWS\system32\PSAPI.DLL
0x6d610000 - 0x6d61c000 	C:\Program Files\Java\jre1.5.0_01\bin\verify.dll
0x6d300000 - 0x6d31d000 	C:\Program Files\Java\jre1.5.0_01\bin\java.dll
0x6d630000 - 0x6d63f000 	C:\Program Files\Java\jre1.5.0_01\bin\zip.dll
0x6d000000 - 0x6d166000 	C:\Program Files\Java\jre1.5.0_01\bin\awt.dll
0x73000000 - 0x73023000 	C:\WINDOWS\system32\WINSPOOL.DRV
0x76390000 - 0x763ac000 	C:\WINDOWS\system32\IMM32.dll
0x771b0000 - 0x772d4000 	C:\WINDOWS\system32\ole32.dll
0x5ad70000 - 0x5ada4000 	C:\WINDOWS\System32\uxtheme.dll
0x51000000 - 0x5104d000 	C:\WINDOWS\system32\ddraw.dll
0x73bc0000 - 0x73bc6000 	C:\WINDOWS\system32\DCIMAN32.dll
0x5c000000 - 0x5c0c8000 	C:\WINDOWS\system32\D3DIM700.DLL
0x74720000 - 0x74764000 	C:\WINDOWS\System32\MSCTF.dll
0x6d240000 - 0x6d27d000 	C:\Program Files\Java\jre1.5.0_01\bin\fontmanager.dll
0x773d0000 - 0x77bc9000 	C:\WINDOWS\system32\shell32.dll
0x70a70000 - 0x70ad5000 	C:\WINDOWS\system32\SHLWAPI.dll
0x71950000 - 0x71a34000 	C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.1331_x-ww_7abf6d02\comctl32.dll
0x77340000 - 0x773cb000 	C:\WINDOWS\system32\comctl32.dll
0x6d1c0000 - 0x6d1e3000 	C:\Program Files\Java\jre1.5.0_01\bin\dcpr.dll
0x77120000 - 0x771ab000 	C:\WINDOWS\system32\OLEAUT32.DLL

VM Arguments:
java_command: PieCrash2

Environment Variables:
PATH=C:\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\j2sdk1.4.2_04\bin;C:\Sun\AppServer8.1\bin;C:\Sun\AppServer8.0.1\bin;C:\Sun\jwsdp-1.4\jwsdp-shared\bin;;;;;;C:\VC98\Tools\WinNT;C:\VC98\MSDev98\Bin;C:\VC98\Tools;C:\VC98\bin
USERNAME=amurillo
SHELL=C:/bin/sh.exe
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 15 Model 2 Stepping 9, GenuineIntel


---------------  S Y S T E M  ---------------

OS: Windows XP Build 2600 Service Pack 1

CPU:total 1 family 15, cmov, cx8, fxsr, mmx, sse, sse2, ht

Memory: 4k page, physical 2079532k(1527292k free), swap 2688680k(2339708k free)

vm_info: Java HotSpot(TM) Client VM (1.5.0_01-b08) for windows-x86, built on Dec  6 2004 19:51:00 by "java_re" with MS VC++ 6.0


#
# An error report file with more information is saved as hs_err_pid140.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
###@###.### 2005-1-07 23:57:00 GMT

                                    

Comments
EVALUATION

The test case runs fun in mustang builds.  It appears to be a duplicate
of 5089985.  We are investigating the feasibility of migrating the fix
for 5089985 into a 5.0 update release.  Given the nature of the fix, we
need to seriously assess the risks before implementing it in a release
which has no beta period (such as an update release).

Note that there is a fairly simple workaround that should work for most
developers who encounter this problem.  The bug is very dependent on the
bounds of the shape being rendered such that changing the coordinates so
that the bounds are .00001 larger or smaller than they were will avoid
the bug.  Another change is to translate the graphics, even by an amount
as small as 0.00001, which changes the way that the geometry falls on the
pixel grid by enough to avoid the bug.

###@###.### 2005-1-31 08:48:53 GMT

Some detailed specifics of the values that can cause the problem are:

Any path with a rightmost coordinate that falls on an integer pixel
location and with a leftmost coordinate whose floor() is a multiple
of 32 pixels to the left of the rightmost coordinate.

Or any path with a bottommost coordinate that falls on an integer pixel
location and with a topmost coordinate whose floor() is a multiple
of 32 pixels above the rightmost coordinate.

In more mathematical terms:

((xright == floor(xright) && ((xright - floor(xleft)) % 32) == 0) ||
 (ybot == floor(ybot) && ((ybot - floor(ytop)) % 32) == 0))

###@###.### 2005-1-31 09:34:50 GMT
                                     
2005-01-31
WORK AROUND

Modify the geometry to change its bounds or location by a small amount.
The change can be as small as .00001 of a pixel.  The following line
of code can often be enough to avoid the problem for fill operations:

	g2d.translate(0.00001, 0.00001);

###@###.### 2005-1-31 08:48:53 GMT

Note that stroke normalization normalizes all coordinates to the same
relative sub-pixel locations.  In the case of Antialiased rendering,
coordinates of fill requests are left untouched, but coordinates of
draw requests are moved to the nearest pixel center.  As a result, to
fix draw operations, one of two additional workarounds is necessary.
The translate above can be combined with turning off Stroke normalization:

	g2d.translate(0.0001, 0.0001);
	g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,
	                     RenderingHints.VALUE_STROKE_PURE);

Or, a Stroke must be set which does not have an odd width.  Since
stroke normalization normalizes the paths to end on the centers of
pixels then line widths which are exactly an odd number (such as the
default width of 1.0f) will cause the "stroke path" to end on a pixel
boundary.  This can be fixed by avoiding integer stroke widths:

	g2d.setStroke(new BasicStroke(1.00001f));

That line alone should be enough to fix draw() operations.  To fix
both fill and draw operations, combine it with a tiny translation
as well, but try to use different translation and stroke:


###@###.### 2005-1-31 20:41:09 GMT
                                     
2005-01-31



Hardware and Software, Engineered to Work Together