[aarch64-port-dev ] JCStress Failure -WCAS_WCAS

Stuart Monteith stuart.monteith at linaro.org
Thu Sep 15 17:15:53 UTC 2016


Hello,
  I've been testing aarch64 JDK 9, and have come across the following failures:

org.openjdk.jcstress.tests.atomics.longs.AtomicLongPairwiseTests.WCAS_WCAS:
Observed forbidden state: 1, 10
org.openjdk.jcstress.tests.atomics.integer.AtomicIntegerPairwiseTests.WCAS_WCAS:
Observed forbidden state: 1, 10
org.openjdk.jcstress.tests.atomics.integer.AtomicIntegerPairwiseTests.WCAS_WCAS:
Observed forbidden state: 1, 10
org.openjdk.jcstress.tests.atomics.booleans.AtomicBooleanPairwiseTests.WCAS_WCAS:
Observed forbidden state: 0, 0
org.openjdk.jcstress.tests.atomics.longs.AtomicLongPairwiseTests.WCAS_WCAS:
Observed forbidden state: 1, 10
org.openjdk.jcstress.tests.atomics.integer.AtomicIntegerArrayPairwiseTests.WCAS_WCAS:
Observed forbidden state: 1, 10
org.openjdk.jcstress.tests.atomics.integer.AtomicIntegerPairwiseTests.WCAS_WCAS:
Observed forbidden state: 1, 10
org.openjdk.jcstress.tests.atomics.booleans.AtomicBooleanPairwiseTests.WCAS_WCAS:
Observed forbidden state: 0, 0
org.openjdk.jcstress.tests.atomics.integer.AtomicIntegerArrayPairwiseTests.WCAS_WCAS:
Observed forbidden state: 1, 10
org.openjdk.jcstress.tests.atomics.longs.AtomicLongArrayPairwiseTests.WCAS_WCAS:
Observed forbidden state: 1, 10
org.openjdk.jcstress.tests.atomics.integer.AtomicIntegerPairwiseTests.WCAS_WCAS:
Observed forbidden state: 1, 10
org.openjdk.jcstress.tests.atomics.booleans.AtomicBooleanPairwiseTests.WCAS_WCAS:
Observed forbidden state: 0, 0
org.openjdk.jcstress.tests.atomics.integer.AtomicIntegerArrayPairwiseTests.WCAS_WCAS:
Observed forbidden state: 1, 10
org.openjdk.jcstress.tests.atomics.longs.AtomicLongArrayPairwiseTests.WCAS_WCAS:
Observed forbidden state: 1, 10

These failures indicate that both actor's calls to weakCompareAndSet
are failing. However, as the test cases don't test for that they are
marked as "FORBIDDEN".

I don't believe that that is correct. Because the compare and sets are
weak, they will be subject to spurious failures, and that is what I'll
be seeing.

Would it be appropriate to set the testcases to something like the following?

    @Outcome(id = "1, 10", expect = Expect.ACCEPTABLE_SPEC, desc = "T1
& T2 spurious failure")

and for boolean:

    @Outcome(id = "0, 0", expect = Expect.ACCEPTABLE, desc = "T1 & T2
failed spuriously")


I might have submitted a patch, but currently I'm unable to build
JCStress. This patch in langtools has cause the use of
"-Xmodule:jdk.unsupported" in tests-chapter-1a/pom.xml to no longer
work:

8164745: javac -Xmodule compiles the module in a way that reads the
unnamed module Summary: Ensuring proper separation between named
modules the unnamed module when using -Xmodule

In addition, "weakCompareAndSetVolatile" has been changed to
"weakCompareAndSetPlain" which requires more changes to jcstress.


Best regards,
   Stuart


More information about the aarch64-port-dev mailing list