JDK-6982632 : closed/java/awt/Graphics2D/MTGraphicsAccessTest/MTGraphicsAccessTest.java fails
  • Type: Bug
  • Component: client-libs
  • Sub-Component: 2d
  • Affected Version: 7
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: linux
  • CPU: x86
  • Submitted: 2010-09-06
  • Updated: 2011-05-25
  • Resolved: 2011-05-23
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.
JDK 7
7 b142Fixed
Related Reports
Relates :  
Description
Testsuite name: regression
test: closed/java/awt/Graphics2D/MTGraphicsAccessTest/MTGraphicsAccessTest.java
JDK/JRE tested: 7b107
OS/architecture: linux-i586
Reproducible: Always
Reproducible on machine: stt-47.russia.sun.com

Is it a platform specific regression: N
Is it a Regression: N

Test run log location:
[stt-robot@stt-47]$ cat cur/work/closed/java/awt/Graphics2D/MTGraphicsAccessTest/MTGraphicsAccessTest.jtr 
#Test Results (version 2)
#Mon Sep 06 14:53:20 MSD 2010
#checksum:69e74416b8d7caea
#-----testdescription-----
$file=/net/vice/export/stt/newroot/regression/workspaces/170/1.7.0_fcsb107/j2se/test/closed/java/awt/Graphics2D/MTGraphicsAccessTest/MTGraphicsAccessTest.java
$root=/net/vice/export/stt/newroot/regression/workspaces/170/1.7.0_fcsb107/j2se/test
author=###@###.### area=Graphics
keywords=bug5089429
run=USER_SPECIFIED main MTGraphicsAccessTest\n
source=MTGraphicsAccessTest.java
title=Checks that we don't crash if rendering operations and state changes are performed on a graphics context from different threads.

#-----environment-----

#-----testresult-----
description=file:///net/vice/export/stt/newroot/regression/workspaces/170/1.7.0_fcsb107/j2se/test/closed/java/awt/Graphics2D/MTGraphicsAccessTest/MTGraphicsAccessTest.java
end=Mon Sep 06 14:53:20 MSD 2010
environment=regtest
execStatus=Failed. Execution failed: `main' threw exception: java.lang.RuntimeException: Test failed with 13 exceptions
javatestOS=Linux 2.6.27.19-5-pae (i386)
javatestVersion=3.2.2_03
script=com.sun.javatest.regtest.RegressionScript 
sections=script_messages build compile main
start=Mon Sep 06 14:53:09 MSD 2010
test=closed/java/awt/Graphics2D/MTGraphicsAccessTest/MTGraphicsAccessTest.java
work=/export/JQA/regression/7b107/cur/work/closed/java/awt/Graphics2D/MTGraphicsAccessTest

#section:script_messages
----------messages:(4/179)----------
JDK under test: (/export/jdk/7b107/jdk1.7.0)
java version "1.7.0-ea"
Java(TM) SE Runtime Environment (build 1.7.0-ea-b107)
Java HotSpot(TM) Client VM (build 19.0-b05, mixed mode)

#section:build
----------messages:(3/105)----------
command: build MTGraphicsAccessTest
reason: Named class compiled on demand
elapsed time (seconds): 2.645
result: Passed. Build successful

#section:compile
----------messages:(3/249)----------
command: compile /net/vice/export/stt/newroot/regression/workspaces/170/1.7.0_fcsb107/j2se/test/closed/java/awt/Graphics2D/MTGraphicsAccessTest/MTGraphicsAccessTest.java
reason: .class file out of date or does not exist
elapsed time (seconds): 2.64
----------System.out:(0/0)----------
----------System.err:(0/0)----------
result: Passed. Compilation successful

#section:main
----------messages:(3/127)----------
command: main MTGraphicsAccessTest
reason: User specified action: run main MTGraphicsAccessTest 
elapsed time (seconds): 7.931
----------System.out:(0/0)----------
----------System.err:(90/5511)----------
Approximate test run time: 7 seconds
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.LoopPipe.drawLine(LoopPipe.java:59)
	at sun.java2d.SunGraphics2D.drawLine(SunGraphics2D.java:2121)
	at MTGraphicsAccessTest$10.run(MTGraphicsAccessTest.java:264)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.LoopPipe.fillRect(LoopPipe.java:124)
	at sun.java2d.SunGraphics2D.fillRect(SunGraphics2D.java:2310)
	at MTGraphicsAccessTest$12.run(MTGraphicsAccessTest.java:274)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.LoopPipe.drawRect(LoopPipe.java:67)
	at sun.java2d.SunGraphics2D.drawRect(SunGraphics2D.java:2293)
	at MTGraphicsAccessTest$11.run(MTGraphicsAccessTest.java:269)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.RuntimeException: Test failed with 13 exceptions
	at MTGraphicsAccessTest.<init>(MTGraphicsAccessTest.java:92)
	at MTGraphicsAccessTest.main(MTGraphicsAccessTest.java:156)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:613)
	at com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:96)
	at java.lang.Thread.run(Thread.java:717)

JavaTest Message: Test threw exception: java.lang.RuntimeException: Test failed with 13 exceptions
JavaTest Message: shutting down test

STATUS:Failed.`main' threw exception: java.lang.RuntimeException: Test failed with 13 exceptions
result: Failed. Execution failed: `main' threw exception: java.lang.RuntimeException: Test failed with 13 exceptions


test result: Failed. Execution failed: `main' threw exception: java.lang.RuntimeException: Test failed with 13 exceptions

Steps to reproduce: 
[stt-robot@stt-47]$ /export/jdk/7b107/jdk1.7.0/bin/javac MTGraphicsAccessTest.java  
[stt-robot@stt-47]$ /export/jdk/7b107/jdk1.7.0/bin/java MTGraphicsAccessTest      
Approximate test run time: 7 seconds
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.LoopPipe.drawRect(LoopPipe.java:67)
	at sun.java2d.SunGraphics2D.drawRect(SunGraphics2D.java:2293)
	at MTGraphicsAccessTest$11.run(MTGraphicsAccessTest.java:269)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.LoopPipe.drawLine(LoopPipe.java:59)
	at sun.java2d.SunGraphics2D.drawLine(SunGraphics2D.java:2121)
	at MTGraphicsAccessTest$9.run(MTGraphicsAccessTest.java:259)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.LoopPipe.fillRect(LoopPipe.java:124)
	at sun.java2d.SunGraphics2D.fillRect(SunGraphics2D.java:2310)
	at MTGraphicsAccessTest$12.run(MTGraphicsAccessTest.java:274)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.LoopPipe.drawLine(LoopPipe.java:59)
	at sun.java2d.SunGraphics2D.drawLine(SunGraphics2D.java:2121)
	at MTGraphicsAccessTest$10.run(MTGraphicsAccessTest.java:264)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.LoopPipe.drawLine(LoopPipe.java:59)
	at sun.java2d.SunGraphics2D.drawLine(SunGraphics2D.java:2121)
	at MTGraphicsAccessTest$10.run(MTGraphicsAccessTest.java:264)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
java.lang.NullPointerException
	at sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:42)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:72)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2807)
	at MTGraphicsAccessTest$13.run(MTGraphicsAccessTest.java:279)
	at MTGraphicsAccessTest$TesterThread.run(MTGraphicsAccessTest.java:171)
Exception in thread "main" java.lang.RuntimeException: Test failed with 16 exceptions
	at MTGraphicsAccessTest.<init>(MTGraphicsAccessTest.java:92)
	at MTGraphicsAccessTest.main(MTGraphicsAccessTest.java:156)

Comments
EVALUATION The test was moved to the open set of tests and modified as mentioned above. A new bug (7040809) was opened to address the minor exceptions that are generated.
29-04-2011

EVALUATION For now, to get this test running I am making it optional for the test to fail when there are exceptions. I'll file a new bug to go back and fix the exception issue after the new test case is pushed.
29-04-2011

EVALUATION We do not support multithreaded access. The test was written with the intent of checking for crashes, not for exceptions. It should be relaxed to ignore exceptions, but stress the operations anyway to ensure that we don't have actual crashes...
11-02-2011

EVALUATION The NPE is apparently in de-referencing sg2d.loops. It occurs in (at least) drawLine, drawString, drawRect It appears to have originated from the b77 fix 6896068: SunGraphics2D exposes a reference to itself while non fully initialized The webrev is here http://sa.sfbay.sun.com/projects/java2d_data/7/6896068.1/ but that was just for the record. It appears this was a contributed fix by Mario Torres, from this thread : http://mail.openjdk.java.net/pipermail/2d-dev/2009-September/000985.html and the webrev is actually here : http://cr.openjdk.java.net/~neugens/100068/ The final version being http://cr.openjdk.java.net/~neugens/100068/webrev.09/ There is some discussion in the thread of making sure that sg2d.loops is always initialised : http://mail.openjdk.java.net/pipermail/2d-dev/2009-September/001017.html but it appears it is not robust against this MT abuse ..
14-01-2011