eclipse-openj9 / openj9

Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Other
3.28k stars 721 forks source link

JTReg test fail - java/security/Signature/ResetAfterException.java #4315

Closed ben-walsh closed 5 years ago

ben-walsh commented 5 years ago

Test https://github.com/ibmruntimes/openj9-openjdk-jdk11/blob/openj9/test/jdk/java/security/Signature/ResetAfterException.java failing consistently with the following ...

Stacktrace

Execution failed: `main' threw exception: java.lang.RuntimeException: One or more test failed    

Standard Output

Testing Provider: SunRsaSign
Expected Ex for short output buffer: java.security.SignatureException: partial signatures not returned
Generated same signature
Expected Ex for short output buffer: java.security.SignatureException: Signature length not correct: got 2 but was expecting 128
FAIL: Valid signature is rejected

Standard Error

java.lang.RuntimeException: One or more test failed
    at ResetAfterException.main(ResetAfterException.java:135)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:298)
    at java.base/java.lang.Thread.run(Thread.java:825)

First occurrence of this failing - https://ci.adoptopenjdk.net/view/Test_openjdk/job/openjdk11_j9_openjdktest_x86-64_linux/192/testReport/junit/java_security_Signature_ResetAfterException/java/ResetAfterException

Last occurrence of this failing - https://ci.adoptopenjdk.net/view/Test_openjdk/job/openjdk11_j9_openjdktest_x86-64_linux/240/testReport/junit/java_security_Signature_ResetAfterException/java/ResetAfterException

No such problem against HotSpot - https://ci.adoptopenjdk.net/view/Test_openjdk/job/openjdk11_hs_openjdktest_x86-64_linux/134/testReport/java_security_Signature_ResetAfterException/java/ResetAfterException

Implication is that the Signature obj did not reset correctly after the failed verification - https://github.com/ibmruntimes/openj9-openjdk-jdk11/blob/openj9/test/jdk/java/security/Signature/ResetAfterException.java#L118

ben-walsh commented 5 years ago

This is a regression since the last release ...

walshbp@bendev:~$ cat ResetAfterException.java
import java.util.Arrays;
import java.security.*;

public class ResetAfterException {

    public static void main(String[] args) throws Exception {

        byte[] data = "data to be signed".getBytes();
        byte[] shortBuffer = new byte[2];

        Provider[] provs = Security.getProviders();
        boolean failed = false;

        for (Provider p : provs) {
            Signature sig;
            try {
                sig = Signature.getInstance("SHA256withRSA", p);
            } catch (NoSuchAlgorithmException nsae) {
                // no support, skip
                continue;
            }

            boolean res = true;
            System.out.println("Testing Provider: " + p.getName());
            KeyPairGenerator keyGen = null;
            try {
                // It's possible that some provider, e.g. SunMSCAPI,
                // doesn't work well with keys from other providers
                // so we use the same provider to generate key first
                keyGen = KeyPairGenerator.getInstance("RSA", p);
            } catch (NoSuchAlgorithmException nsae) {
                keyGen = KeyPairGenerator.getInstance("RSA");
            }
            if (keyGen == null) {
                throw new RuntimeException("Error: No support for RSA KeyPairGenerator");
            }
            keyGen.initialize(1024);
            KeyPair keyPair = keyGen.generateKeyPair();

            sig.initSign(keyPair.getPrivate());
            sig.update(data);
            byte[] signature = sig.sign();
            // First check signing
            try {
                sig.update(data);
                // sign with short output buffer to cause exception
                int len = sig.sign(shortBuffer, 0, shortBuffer.length);
                System.out.println("FAIL: Should throw SE with short buffer");
                res = false;
            } catch (SignatureException e) {
                // expected exception; ignore
                System.out.println("Expected Ex for short output buffer: " + e);
            }
            // Signature object should reset after a failed generation
            sig.update(data);
            byte[] signature2 = sig.sign();
            if (!Arrays.equals(signature, signature2)) {
                System.out.println("FAIL: Generated different signature");
                res = false;
            } else {
                System.out.println("Generated same signature");
            }

            // Now, check signature verification
            sig.initVerify(keyPair.getPublic());
            sig.update(data);
            try {
                // first verify with valid signature bytes
                res = sig.verify(signature);
            } catch (SignatureException e) {
                System.out.println("FAIL: Valid signature rejected");
                e.printStackTrace();
                res = false;
            }

            try {
                sig.update(data);
                // verify with short signaure to cause exception
                if (sig.verify(shortBuffer)) {
                    System.out.println("FAIL: Invalid signature verified");
                    res = false;
                } else {
                    System.out.println("Invalid signature rejected");
                }
            } catch (SignatureException e) {
                // expected exception; ignore
                System.out.println("Expected Ex for short output buffer: " + e);
            }
            // Signature object should reset after an a failed verification
            sig.update(data);
            try {
                // verify with valid signature bytes again
                res = sig.verify(signature);
                if (!res) {
                    System.out.println("FAIL: Valid signature is rejected");
                } else {
                    System.out.println("Valid signature is accepted");
                }
            } catch (GeneralSecurityException e) {
                System.out.println("FAIL: Valid signature is rejected");
                e.printStackTrace();
                res = false;
            }
            failed |= !res;
        }
        if (failed) {
            throw new RuntimeException("One or more test failed");
        } else {
            System.out.println("Test Passed");
        }
   }
}
walshbp@bendev:~$ openjdk11-openj9-binary-nightly/jdk-11.0.1+13/bin/java -version
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.1+13-201901131910)
Eclipse OpenJ9 VM AdoptOpenJDK (build master-827f2551a, JRE 11 Linux amd64-64-Bit Compressed References 20190113_92 (JIT enabled, AOT enabled)
OpenJ9   - 827f2551a
OMR      - 11cdf3e2
JCL      - 8fcb1a0231 based on jdk-11.0.1+13)
walshbp@bendev:~$ openjdk11-openj9-binary-nightly/jdk-11.0.1+13/bin/javac ResetAfterException.java 
walshbp@bendev:~$ openjdk11-openj9-binary-nightly/jdk-11.0.1+13/bin/java ResetAfterException
Testing Provider: SunRsaSign
Expected Ex for short output buffer: java.security.SignatureException: partial signatures not returned
Generated same signature
Expected Ex for short output buffer: java.security.SignatureException: Signature length not correct: got 2 but was expecting 128
FAIL: Valid signature is rejected
Exception in thread "main" java.lang.RuntimeException: One or more test failed
    at ResetAfterException.main(ResetAfterException.java:107)
walshbp@bendev:~$ openjdk11-openj9-binary-nightly/jdk-11.0.1+13/bin/java -Xint ResetAfterException
Testing Provider: SunRsaSign
Expected Ex for short output buffer: java.security.SignatureException: partial signatures not returned
Generated same signature
Expected Ex for short output buffer: java.security.SignatureException: Signature length not correct: got 2 but was expecting 128
FAIL: Valid signature is rejected
Exception in thread "main" java.lang.RuntimeException: One or more test failed
    at ResetAfterException.main(ResetAfterException.java:107)
walshbp@bendev:~$ openjdk11-openj9-binary-releases/jdk-11.0.1+13/bin/java -version
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.1+13)
Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.11.0, JRE 11 Linux amd64-64-Bit Compressed References 20181115_18 (JIT enabled, AOT enabled)
OpenJ9   - 090ff9dcd
OMR      - ea548a66
JCL      - d4455071ce based on jdk-11.0.1+13)
walshbp@bendev:~$ openjdk11-openj9-binary-releases/jdk-11.0.1+13/bin/javac ResetAfterException.java 
walshbp@bendev:~$ openjdk11-openj9-binary-releases/jdk-11.0.1+13/bin/java ResetAfterException
Testing Provider: SunRsaSign
Expected Ex for short output buffer: java.security.SignatureException: partial signatures not returned
Generated same signature
Expected Ex for short output buffer: java.security.SignatureException: Signature length not correct: got 2 but was expecting 128
Valid signature is accepted
Test Passed
ben-walsh commented 5 years ago

Confirmation that after the failed verification the Signature object does not correctly reset ...

walshbp@bendev:~$ cat ResetAfterExceptionMODIFIED.java
import java.util.Arrays;
import java.security.*;

public class ResetAfterExceptionMODIFIED {

    public static void main(String[] args) throws Exception {

        byte[] data = "data to be signed".getBytes();
        byte[] shortBuffer = new byte[2];

        Provider[] provs = Security.getProviders();
        boolean failed = false;

        for (Provider p : provs) {
            Signature sig;
            try {
                sig = Signature.getInstance("SHA256withRSA", p);
            } catch (NoSuchAlgorithmException nsae) {
                // no support, skip
                continue;
            }

            boolean res = true;
            System.out.println("Testing Provider: " + p.getName());
            KeyPairGenerator keyGen = null;
            try {
                // It's possible that some provider, e.g. SunMSCAPI,
                // doesn't work well with keys from other providers
                // so we use the same provider to generate key first
                keyGen = KeyPairGenerator.getInstance("RSA", p);
            } catch (NoSuchAlgorithmException nsae) {
                keyGen = KeyPairGenerator.getInstance("RSA");
            }
            if (keyGen == null) {
                throw new RuntimeException("Error: No support for RSA KeyPairGenerator");
            }
            keyGen.initialize(1024);
            KeyPair keyPair = keyGen.generateKeyPair();

            sig.initSign(keyPair.getPrivate());
            sig.update(data);
            byte[] signature = sig.sign();
            // First check signing
            try {
                sig.update(data);
                // sign with short output buffer to cause exception
                int len = sig.sign(shortBuffer, 0, shortBuffer.length);
                System.out.println("FAIL: Should throw SE with short buffer");
                res = false;
            } catch (SignatureException e) {
                // expected exception; ignore
                System.out.println("Expected Ex for short output buffer: " + e);
            }
            // Signature object should reset after a failed generation
            sig.update(data);
            byte[] signature2 = sig.sign();
            if (!Arrays.equals(signature, signature2)) {
                System.out.println("FAIL: Generated different signature");
                res = false;
            } else {
                System.out.println("Generated same signature");
            }

            // Now, check signature verification
            sig.initVerify(keyPair.getPublic());
            sig.update(data);
            try {
                // first verify with valid signature bytes
                res = sig.verify(signature);
            } catch (SignatureException e) {
                System.out.println("FAIL: Valid signature rejected");
                e.printStackTrace();
                res = false;
            }

            /*try {
                sig.update(data);
                // verify with short signaure to cause exception
                if (sig.verify(shortBuffer)) {
                    System.out.println("FAIL: Invalid signature verified");
                    res = false;
                } else {
                    System.out.println("Invalid signature rejected");
                }
            } catch (SignatureException e) {
                // expected exception; ignore
                System.out.println("Expected Ex for short output buffer: " + e);
            }*/
            // Signature object should reset after an a failed verification
            sig.update(data);
            try {
                // verify with valid signature bytes again
                res = sig.verify(signature);
                if (!res) {
                    System.out.println("FAIL: Valid signature is rejected");
                } else {
                    System.out.println("Valid signature is accepted");
                }
            } catch (GeneralSecurityException e) {
                System.out.println("FAIL: Valid signature is rejected");
                e.printStackTrace();
                res = false;
            }
            failed |= !res;
        }
        if (failed) {
            throw new RuntimeException("One or more test failed");
        } else {
            System.out.println("Test Passed");
        }
   }
}
walshbp@bendev:~$ openjdk11-openj9-binary-nightly/jdk-11.0.1+13/bin/java -version
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.1+13-201901131910)
Eclipse OpenJ9 VM AdoptOpenJDK (build master-827f2551a, JRE 11 Linux amd64-64-Bit Compressed References 20190113_92 (JIT enabled, AOT enabled)
OpenJ9   - 827f2551a
OMR      - 11cdf3e2
JCL      - 8fcb1a0231 based on jdk-11.0.1+13)
walshbp@bendev:~$ openjdk11-openj9-binary-nightly/jdk-11.0.1+13/bin/javac ResetAfterExceptionMODIFIED.java
walshbp@bendev:~$ openjdk11-openj9-binary-nightly/jdk-11.0.1+13/bin/java ResetAfterExceptionMODIFIED
Testing Provider: SunRsaSign
Expected Ex for short output buffer: java.security.SignatureException: partial signatures not returned
Generated same signature
Valid signature is accepted
Test Passed
smlambert commented 5 years ago

Test excluded: https://github.com/AdoptOpenJDK/openjdk-tests/pull/808

DanHeidinga commented 5 years ago

@pdbain-ibm can you take a look? Wild guess: possibly related to the changes to use openssl for the cypto code?

pdbain-ibm commented 5 years ago

@DanHeidinga I will investigate.

pdbain-ibm commented 5 years ago

The first sig.verify(signature) after a failure also fails, though it should pass; the second sig.verify(signature) passes correctly.

The test also passes on MacOS.

pdbain-ibm commented 5 years ago

Rebuilt the JVM with bash ./get_source.sh --openssl-version=1.1.1 and the test passes.

pshipton commented 5 years ago

From a discussion with Peter, the previous comment means it works with 1.1.1 but not 1.1.1a

pdbain-ibm commented 5 years ago

Fails with -Djdk.nativeCrypto=true, passes with -Djdk.nativeCrypto=false.

pdbain-ibm commented 5 years ago

May be a build problem. JDK downloaded from https://adoptopenjdk.net/nightly.html?variant=openjdk11&jvmVariant=openj9 fails. A personal build on Linux X86 from the head of OpenJ9:

git clone https://github.com/ibmruntimes/openj9-openjdk-jdk11
cd openj9-openjdk-jdk11/
bash ./get_source.sh 
bash ./configure --with-freemarker-jar=/home/pdbain/freemarker.jar --with-boot-jdk=/home/pdbain/vm/openjdk/jdk-11.0.1+13/ --disable-ddr
make jdk-image
$ ./build/linux-x86_64-normal-server-release/images/jdk/bin/java ../../ResetAfterException.java
Testing Provider: SunRsaSign
Expected Ex for short output buffer: java.security.SignatureException: partial signatures not returned
Generated same signature
Expected Ex for short output buffer: java.security.SignatureException: Signature length not correct: got 2 but was expecting 128
Valid signature is accepted
Test Passed

I also tested with a JDK from a personal build on our internal build system. It also passed.

ben-walsh commented 5 years ago

@pdbain-ibm Personal build provided looks good ...

walshbp@bendev:~$ cat ResetAfterException.java
import java.util.Arrays;
import java.security.*;

public class ResetAfterException {

    public static void main(String[] args) throws Exception {

        byte[] data = "data to be signed".getBytes();
        byte[] shortBuffer = new byte[2];

        Provider[] provs = Security.getProviders();
        boolean failed = false;

        for (Provider p : provs) {
            Signature sig;
            try {
                sig = Signature.getInstance("SHA256withRSA", p);
            } catch (NoSuchAlgorithmException nsae) {
                // no support, skip
                continue;
            }

            boolean res = true;
            System.out.println("Testing Provider: " + p.getName());
            KeyPairGenerator keyGen = null;
            try {
                // It's possible that some provider, e.g. SunMSCAPI,
                // doesn't work well with keys from other providers
                // so we use the same provider to generate key first
                keyGen = KeyPairGenerator.getInstance("RSA", p);
            } catch (NoSuchAlgorithmException nsae) {
                keyGen = KeyPairGenerator.getInstance("RSA");
            }
            if (keyGen == null) {
                throw new RuntimeException("Error: No support for RSA KeyPairGenerator");
            }
            keyGen.initialize(1024);
            KeyPair keyPair = keyGen.generateKeyPair();

            sig.initSign(keyPair.getPrivate());
            sig.update(data);
            byte[] signature = sig.sign();
            // First check signing
            try {
                sig.update(data);
                // sign with short output buffer to cause exception
                int len = sig.sign(shortBuffer, 0, shortBuffer.length);
                System.out.println("FAIL: Should throw SE with short buffer");
                res = false;
            } catch (SignatureException e) {
                // expected exception; ignore
                System.out.println("Expected Ex for short output buffer: " + e);
            }
            // Signature object should reset after a failed generation
            sig.update(data);
            byte[] signature2 = sig.sign();
            if (!Arrays.equals(signature, signature2)) {
                System.out.println("FAIL: Generated different signature");
                res = false;
            } else {
                System.out.println("Generated same signature");
            }

            // Now, check signature verification
            sig.initVerify(keyPair.getPublic());
            sig.update(data);
            try {
                // first verify with valid signature bytes
                res = sig.verify(signature);
            } catch (SignatureException e) {
                System.out.println("FAIL: Valid signature rejected");
                e.printStackTrace();
                res = false;
            }

            try {
                sig.update(data);
                // verify with short signaure to cause exception
                if (sig.verify(shortBuffer)) {
                    System.out.println("FAIL: Invalid signature verified");
                    res = false;
                } else {
                    System.out.println("Invalid signature rejected");
                }
            } catch (SignatureException e) {
                // expected exception; ignore
                System.out.println("Expected Ex for short output buffer: " + e);
            }
            // Signature object should reset after an a failed verification
            sig.update(data);
            try {
                // verify with valid signature bytes again
                res = sig.verify(signature);
                if (!res) {
                    System.out.println("FAIL: Valid signature is rejected");
                } else {
                    System.out.println("Valid signature is accepted");
                }
            } catch (GeneralSecurityException e) {
                System.out.println("FAIL: Valid signature is rejected");
                e.printStackTrace();
                res = false;
            }
            failed |= !res;
        }
        if (failed) {
            throw new RuntimeException("One or more test failed");
        } else {
            System.out.println("Test Passed");
        }
   }
}
walshbp@bendev:~$ peterBainZip/jdk/bin/java -version
openjdk version "11.0.2-internal" 2018-10-16
OpenJDK Runtime Environment (build 11.0.2-internal+0-adhoc.pdbain.openj9-openjdk-jdk11)
Eclipse OpenJ9 VM (build master-454fdab, JRE 11 Linux amd64-64-Bit Compressed References 20190117_000000 (JIT enabled, AOT enabled)
OpenJ9   - 454fdab
OMR      - 232007f
JCL      - 007fb48 based on jdk-11.0.2+7)
walshbp@bendev:~$ peterBainZip/jdk/bin/javac ResetAfterException.java
walshbp@bendev:~$ peterBainZip/jdk/bin/java ResetAfterException
Testing Provider: SunRsaSign
Expected Ex for short output buffer: java.security.SignatureException: partial signatures not returned
Generated same signature
Expected Ex for short output buffer: java.security.SignatureException: Signature length not correct: got 2 but was expecting 128
Valid signature is accepted
Test Passed

I also tried utilising that build with Jenkins to run the test but unfortunately I have not been able to get the file in a format the job accepts as valid ... https://ci.adoptopenjdk.net/view/Test_grinder/job/Grinder/863/consoleText https://ci.adoptopenjdk.net/view/Test_grinder/job/Grinder/866/consoleText https://ci.adoptopenjdk.net/view/Test_grinder/job/Grinder/867/consoleText https://ci.adoptopenjdk.net/view/Test_grinder/job/Grinder/868/consoleText

pdbain-ibm commented 5 years ago

A build from the Eclipse site https://ci.eclipse.org/openj9/view/Build/job/Build-JDK11-linux_x86-64_cmprssptrs/lastSuccessfulBuild/artifact/OpenJ9-JDK11-linux_x86-64_cmprssptrs-20190118-052222.tar.gz fails:

$ ./jdk/bin/java -version
openjdk version "11.0.2-internal" 2018-10-16
OpenJDK Runtime Environment (build 11.0.2-internal+0-adhoc.jenkins.Build-JDK11-linuxx86-64cmprssptrs)
Eclipse OpenJ9 VM (build master-162393f, JRE 11 Linux amd64-64-Bit Compressed References 20190118_457 (JIT enabled, AOT enabled)
OpenJ9   - 162393f
OMR      - 7e6db88
JCL      - 007fb48 based on jdk-11.0.2+7)
$ jdk/bin/java ~/projects/signature/ResetAfterException.java 
Testing Provider: SunRsaSign
Expected Ex for short output buffer: java.security.SignatureException: partial signatures not returned
Generated same signature
Expected Ex for short output buffer: java.security.SignatureException: Signature length not correct: got 2 but was expecting 128
FAIL: Valid signature is rejected
Exception in thread "main" java.lang.RuntimeException: One or more test failed
    at ResetAfterException.main(ResetAfterException.java:135)

Is the JDK build recipe for nightly AdoptOpenJDK and ci.eclipse.org different from the instructions here @jdekonin or @AdamBrousseau ?

pdbain-ibm commented 5 years ago

I downloaded the dockerfile and ran the build instructions verbatim. That passes too.

Tested on LinuxPPC with the latest AdoptOpenJDK build. It failed.

$ jdk-11.0.2+6/bin/java -version
openjdk version "11.0.2" 2018-10-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.2+6-201901171911)
Eclipse OpenJ9 VM AdoptOpenJDK (build master-da6602942, JRE 11 Linux ppc64le-64-Bit Compressed References 20190117_92 (JIT enabled, AOT enabled)
OpenJ9   - da6602942
OMR      - 54732343
JCL      - 007fb48620 based on jdk-11.0.2+6)
pdbain@pdbain-ppcle1:~/vm$ jdk-11.0.2+6/bin/java ResetAfterException.java
Testing Provider: SunRsaSign
Expected Ex for short output buffer: java.security.SignatureException: partial signatures not returned
Generated same signature
Expected Ex for short output buffer: java.security.SignatureException: Signature length not correct: got 2 but was expecting 128
FAIL: Valid signature is rejected
Exception in thread "main" java.lang.RuntimeException: One or more test failed
    at ResetAfterException.main(ResetAfterException.java:107)
AdamBrousseau commented 5 years ago

From an OpenJ9 CI build https://ci.eclipse.org/openj9/view/Build/job/Build-JDK11-linux_x86-64_cmprssptrs/457

bash ./get_source.sh --openssl-version=1.1.1a
bash configure --with-freemarker-jar=/home/jenkins/freemarker.jar --with-boot-jdk=/usr/lib/jvm/adoptojdk-java-11 --with-openssl=fetched --enable-openssl-bundling
make all

The extra options can also been seen in the variables file

pdbain-ibm commented 5 years ago

Building on Linux X86 and PPC with --openssl-version=1.1.1a and --with-openssl=fetched --enable-openssl-bundling causes the test to fail.

alon-sh commented 5 years ago

can you try running with the option -Djdk.nativeDigest=false and see if it passes

pshipton commented 5 years ago

and does the openssl version matter? In your build which works, what does -Djdk.nativeCryptoTrace=true indicate?

pshipton commented 5 years ago

@ashbm5

can you try running with the option -Djdk.nativeDigest=false and see if it passes

Fails with -Djdk.nativeCrypto=true, passes with -Djdk.nativeCrypto=false. https://github.com/eclipse/openj9/issues/4315#issuecomment-455323458

alon-sh commented 5 years ago

@pshipton -Djdk.nativeDigest=false will disable only the MessageDigest OpenSSL support - will help narrow down the problem

Also might want to take a look at the test InitAgain.java - it is also failing in our tests and might be related

pdbain-ibm commented 5 years ago

java -Djdk.nativeDigest=false ResetAfterException.java passes; with true it fails.

pdbain-ibm commented 5 years ago

@ashbm5 any news on this issue? Is there an issue with OpenSSL?

alon-sh commented 5 years ago

@pdbain-ibm we found the issue, it's not an OpenSSL issue but rather our implementation was incorrect - the Message Digest object was not being reset correctly when there is a sequence of update calls to MD but no final request to generate the digest, under such conditions the object is not reset and would give incorrect results when next used.

We're working on a PR to resolve this issue for both jdk8 and jdk11.

pdbain-ibm commented 5 years ago

@ben-walsh would you kindly retest? I ran successfully with the latest nightly build:


openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.2+9-201901231927)
Eclipse OpenJ9 VM AdoptOpenJDK (build master-02552609a, JRE 11 Linux amd64-64-Bit Compressed References 20190123_105 (JIT enabled, AOT enabled)
OpenJ9   - 02552609a
OMR      - b26f4e73
JCL      - bd54ad438c based on jdk-11.0.2+9)
```.
@smlambert Providing Ben is able to verify the fix, please re-enable this test.  Thank you.
ben-walsh commented 5 years ago

Sure, no problem. I've kicked off this job - https://ci.adoptopenjdk.net/view/Test_grinder/job/Grinder/905.

pdbain-ibm commented 5 years ago

Great. All passed. @smlambert Please re-enable the test. Thank you.