> Would such a workaround be acceptable as part of this back out fix?
Yes, very much so !
-phil.
On 7/12/19 11:34 AM, Anton Litvinov wrote:
Hello Phil,
I tried to apply your code and can confirm that value of "color" is
always the same for the case, when the test passes and fails. For each
test run the "paint(Graphics)" method is called either 2 or 3 times
and this tracing output is always the same and following:
"color=java.awt.Color[r=255,g=255,b=255] alpha=127"
My today's experiments show that this intermittent failure is
reproducible with builds prior to the builds with the fix for 8214579
and this is also reproducible on Oracle Linux 7.4 x64. I was able to
reproduce in the following environment configurations:
1. Oracle Linux 7.4 x64 with JDK 13+23 (the build without the fix
8214579 which was integrated in JDK 13+24)
2. openSUSE Leap 15.0 with JDK 13+23, JDK 11+25 (build in which the
test itself was introduced), JDK 11+28 (GA build).
I attached a screenshot with the test failure and wrote a comment in
the bug (https://bugs.openjdk.java.net/browse/JDK-8224825).
MY OBSERVATION:
Although I have not been able to identify the root cause of the
intermittent test failure, I think that the wrong color is got, when
the black color, which is set as the background for the frame, is not
participating in color blending.
THE DISCOVERED WORKAROUND:
I discovered that if the following workaround is applied to the
regression test "test/jdk/java/awt/Color/AlphaColorTest.java", then
the intermittent test failure disappears (is not reproducible, when
test is run 20 times in a row). Also I verified with the workaround
the test fails as it should with JDK 11+24 (the build without the fix
8204931 which was integrated in JDK 11+25 and introduced the test).
The workaround is following.
Substitute the next 2 code lines:
77 frame = new Frame("Alpha Color Test");
78 frame.setBackground(Color.black);
for the next 8 code lines:
frame = new Frame("Alpha Color Test") {
@Override
public void paint(Graphics g) {
g.setColor(Color.black);
g.fillRect(0, 0, getWidth(), getHeight());
super.paint(g);
}
};
Would such a workaround be acceptable as part of this back out fix?
Thank you,
Anton
On 11/07/2019 19:48, Phil Race wrote:
I don't think we ever saw it fail until 8214579 was pushed.
I don't know the reason for the color you are sporadically getting in VB
Maybe it is slow and the paint event is being missed ?
But then I'd expect black .. not light grey.
Still, it might be informative to put a print statement in here (in
the test)
public void paint(Graphics g) {
System.out.println("color=" + color + " alpha=" +
color.getAlpha()); // << add this
g.setColor(color);
g.fillRect(0, 0, getSize().width, getSize().height);
}
and compare what is printed for failing and passing runs.
If you can't figure it out quickly, then update the test to not exit
so quickly and grab a screen
shot of the failure and add it to the bug.
-phil.
On 7/11/19 11:13 AM, Anton Litvinov wrote:
Hello Phil,
Thank you for these additional details. I have tried to run the test
"open/test/jdk/java/awt/Color/AlphaColorTest.java" with JDK 13
compiled from "jdk/jdk13" with/without this back out fix and the
results are not so stable on my VirtualBox host with openSUSE Leap
15.0 OS (GNOME 3.26.2):
1. "AlphaColorTest.java" stably fails with JDK 13 without this back
out fix and the test failure message is stably:
"Color is not as expected. Got java.awt.Color[r=255,g=255,b=255]"
2. "AlphaColorTest.java" starts passing with JDK 13 with the back
out fix, but continues to intermittently fail with the failure message:
"Color is not as expected. Got java.awt.Color[r=189,g=189,b=189]"
It looks that either this regression test had been failing
intermittently before the fix 8214579, which we are backing out, was
integrated, or some other fix causes this intermittent failure.
Maybe in this case it is better not to change this
"open/test/jdk/ProblemList.txt" as well as the test itself
"open/test/jdk/java/awt/Color/AlphaColorTest.java" as part of this
back out fix for JCK test failure?
Thank you,
Anton
On 11/07/2019 17:38, Philip Race wrote:
There is a regression test that is supposed to catch this exact
problem.
So I had looked into how we did not catch this earlier and found
that in fact we did.
This was originally found and filed as
https://bugs.openjdk.java.net/browse/JDK-8224825
The test java/awt/Color/AlphaColorTest.java was then problem listed
on Linux.
$ grep AlphaColorTest test/jdk/ProblemList.txt
java/awt/Color/AlphaColorTest.java 8224825 linux-all
So I think we can close JDK-8224825 as a duplicate of this as well
as updating the problem list
and the test - after confirming that this backout resolves that as
I expect it will.
-phil.
On 7/11/19, 9:20 AM, Anton Litvinov wrote:
By your request regenerated the webrev specifically against
(http://hg.openjdk.java.net/jdk/jdk13) repository.
JDK 13 specific webrev:
http://cr.openjdk.java.net/~alitvinov/8227392/jdk13/webrev.00
I confirm again, that 2 failing manual tests: "ColorTest0003",
"ColorTest0004" from the test
"api/java_awt/interactive/ColorTests.html" in JCK 13 do not fail
anymore after this fix is applied to JDK 13 compiled from
"jdk/jdk13" repository.
"jdk/jdk13" repository does not contain any problem list
mentioning "api/java_awt/interactive/ColorTests.html" test from
JCK 13, thus I cannot de-problem list it and have no idea, where
it is problem-listed. I also doubt that it is problem-listed,
since it is manual. I added "noreg-jck" label to the bug in JBS
deliberately according to OpenJDK process (Section #6 from the web
page (http://openjdk.java.net/guide/changePlanning.html)), because
this back out fix does not contain a new separate regression test,
while this regression can be checked by running existing mentioned
above test from JCK package.
If this "noreg-jck" label creates problems, I can remove it at all.
Thank you,
Anton
On 11/07/2019 15:51, Philip Race wrote:
One more thing I just realised you should do here is de-problem list
the regression test that fails ... after verifying it now works,
updating it with this bug ID.
And you can remove that noreg-jck label as a consequence.
-phil.
On 7/11/19, 7:35 AM, Philip Race wrote:
In such cases I like more than to be told "it would apply
cleanly" but also to see
that you actually prepared the webrev against 13. This is more
certain
and ensures that when the fix is approved you don't accidentally
push it
to the wrong repo. You have to go clone 13 and apply the patch
there anyway ...
-phil.
On 7/11/19, 5:44 AM, Anton Litvinov wrote:
Hello Phil,
Thank you for review and the important remark about the need to
work with "jdk/jdk13" stabilization repository, I forgot about
this feature of post RDP 1 phase. Today I checked the fix
against "jdk/jdk13" repository and confirm that it resolves
this bug for JDK 13.
Will wait for feedback or approval from any other second code
reviewer.
Thank you,
Anton
On 10/07/2019 19:55, Phil Race wrote:
Anton,
This looks fine except that it needs to be prepared against
13, and then pushed there, not 14.
And it will get forwarded synced from 13 to 14. That is the
RDP process ..
-phil.
On 7/10/19 5:00 AM, Anton Litvinov wrote:
Hello,
Could you please review the following fix for the bug. The
fix is backing out of the fix for the bug JDK-8214579 which
caused this JCK test failure. If this fix is accepted, then a
new separate bug for readdressing the bug reported in
JDK-8214579 will be filed.
Bug: https://bugs.openjdk.java.net/browse/JDK-8227392
Webrev:
http://cr.openjdk.java.net/~alitvinov/8227392/jdk14/webrev.00
Changeset of JDK-8214579:
http://hg.openjdk.java.net/jdk/client/rev/c53905e7dc57
Thank you,
Anton