JDK-4844721 : PIT: Desktop becomes distorted while running PngTest with Tiger PIT build
  • Type: Bug
  • Component: client-libs
  • Sub-Component: 2d
  • Affected Version: 5.0
  • Priority: P4
  • Status: Closed
  • Resolution: Fixed
  • OS: windows_2000
  • CPU: x86
  • Submitted: 2003-04-08
  • Updated: 2003-06-12
  • Resolved: 2003-04-21
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
5.0 tigerFixed
Related Reports
Relates :  
Description
I tried running the PngTest available in the 2D workspace using the Tiger PIT build. When the frame is maximized, the rendering occupies the entire screen and is distorted. Soon the desktop also gets distorted and does not recover unless i terminate the application manually. This is reproducible on all Win32 platforms.

Here is the information on the PIT build.
java version "Build:01-Apr-03@00:56.tiger"
Java(TM) 2 Runtime Environment, Standard Edition (build Build:01-Apr-03@00:56.tiger)
Java HotSpot(TM) Client VM (build 1.5.0-beta-b03, mixed mode)

The test case PngTest is available in the following location: /net/jano.sfbay/export/disk06/java2d/Java2D/test/sun/awt/image/PNGImageDecoder

This is not reproducible on earlier builds and occurs only on the PIT build. This does not occur on Solaris. Actually when I looked at the console, the following exception has been thrown.

java.lang.NullPointerException: HDC for component
at sun.java2d.loops.DrawGlyphList.DrawGlyphList(Native Method)
at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:38)
at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:47)
at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2534)
at PngTest.paint(PngTest.java:103)
at java.awt.Canvas.update(Canvas.java:114)
at sun.awt.RepaintArea.paint(RepaintArea.java:169)
at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:260)
at java.awt.Component.dispatchEventImpl(Component.java:3677)
at java.awt.Component.dispatchEvent(Component.java:3476)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:208)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:143)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:104)


Comments
CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: tiger FIXED IN: tiger INTEGRATED IN: tiger tiger-b05 VERIFIED IN: tiger
14-06-2004

SUGGESTED FIX http://javaweb.sfbay.sun.com/jcg/1.5.0-tiger/2D/4844721 http://javaweb.sfbay.sun.com/jcg/1.5.0-tiger/2D/4844721.reg ###@###.### 2003-04-08
08-04-2003

EVALUATION The bug is a regression caused by the fix for 4766813. Basically, the problem is that in certain conditons we may run into situation when we won't be releasing the dcs, but just putting them on the list of dcs to be released (aka the 'passiveDCList'). This was caused by the 'last minute very safe change' (c) that I put into the original fix, and which was not properly tested: in Win32SurfaceData, instead of directly releasing the DC by invoking SendMessage, I decided to just move it to the passive dc list, assuming the next time someone releases any DC, they all will be freed. So if the same thread renders to an offscreen image, an then to the screen and so on, alternating, we'd be putting the dc to the dc list while rendering offscreen, and then requesting a new DC when rendering to the screen. ###@###.### 2003-04-08
08-04-2003