JDK-8164987 : RTM jtreg tests failing due to unnamed module unable to access class jdk.internal.misc.Unsafe
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 9
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • OS: linux
  • CPU: generic
  • Submitted: 2016-08-30
  • Updated: 2016-12-14
  • Resolved: 2016-09-13
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 9
9 b140Fixed
Related Reports
Relates :  
Relates :  
Description
On CPUs with RTM support (x64 and PPC64) the following tests are failing:

FAILED: compiler/rtm/locking/TestRTMAbortRatio.java
FAILED: compiler/rtm/locking/TestRTMAbortThreshold.java
FAILED: compiler/rtm/locking/TestRTMAfterNonRTMDeopt.java
FAILED: compiler/rtm/locking/TestRTMSpinLoopCount.java
FAILED: compiler/rtm/locking/TestRTMDeoptOnLowAbortRatio.java
FAILED: compiler/rtm/locking/TestRTMDeoptOnHighAbortRatio.java
FAILED: compiler/rtm/locking/TestRTMLockingCalculationDelay.java
FAILED: compiler/rtm/locking/TestRTMLockingThreshold.java
FAILED: compiler/rtm/locking/TestRTMTotalCountIncrRate.java
FAILED: compiler/rtm/locking/TestUseRTMAfterLockInflation.java
FAILED: compiler/rtm/locking/TestUseRTMDeopt.java
FAILED: compiler/rtm/locking/TestUseRTMForInflatedLocks.java
FAILED: compiler/rtm/locking/TestRTMRetryCount.java
FAILED: compiler/rtm/locking/TestUseRTMXendForLockBusy.java

with similar a message:

Exception in thread "main" java.lang.IllegalAccessError: class jdk.test.lib.Utils (in unnamed module @0x5c7fa833) cannot access class jdk.internal.misc.Unsafe (in module java.base) because module
java.base does not export jdk.internal.misc to unnamed module @0x5c7fa833

A possible workaround (although by no means a correct solution) is to export jdk.internal.misc to the world in the java.base:

diff -r 84edc0512b0e src/java.base/share/classes/module-info.java
--- a/src/java.base/share/classes/module-info.java      Thu Aug 11 16:22:09 2016 -0700
+++ b/src/java.base/share/classes/module-info.java      Wed Aug 24 18:58:19 2016 -0400
@@ -152,6 +152,8 @@
         jdk.dynalink,
         jdk.jartool,
         jdk.jlink;
+    exports jdk.internal.misc;
+/*
     exports jdk.internal.misc to
         java.corba,
         java.desktop,
@@ -170,6 +172,7 @@
         jdk.scripting.nashorn,
         jdk.unsupported,
         jdk.vm.ci;
+*/
     exports jdk.internal.perf to
         java.desktop,
         java.management, 

The issue is not reproducible on CPUs without RTM support, where the above-mentioned tests pass just fine, since the following check exists:
http://hg.openjdk.java.net/jdk9/hs-comp/file/9a47ecd3eeb9/test/lib/jdk/test/lib/cli/CommandLineOptionTest.java#l515 

which, by its turn,  depends upon a CPU feature check:
http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/file/64840dbba932/test/compiler/testlibrary/rtm/predicate/SupportedCPU.java#l36

The issue can be reproduced using any RTM jtreg test, for instance the TestRTMAbortRatio.java:

root@tm:~/hg/jdk9/hs-comp# /root/jtreg/bin/jtreg -version
jtreg, version 4.2.0 dev tip
Installed in /root/jtreg/lib/jtreg.jar
Running on platform version 1.8.0_91 from /usr/lib/jvm/java-8-openjdk-amd64/jre.
Built with 1.8.0_60 on 08/22/2016 01:49 PM.
Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
JCov 2.0-1
TestNG (testng.jar): version 6.9.11
TestNG (jcommander.jar): version unknown
root@tm:~/hg/jdk9/hs-comp# lscpu | fgrep -o rtm
rtm
root@tm:~/hg/jdk9/hs-comp# hg paths
default = http://hg.openjdk.java.net/jdk9/hs-comp/
root@tm:~/hg/jdk9/hs-comp# hg id
9a47ecd3eeb9 tip
root@tm:~/hg/jdk9/hs-comp# hg --cwd ./jdk id
6840c15304e7 tip
root@tm:~/hg/jdk9/hs-comp# hg --cwd ./hotspot id
64840dbba932+ tip
root@tm:~/hg/jdk9/hs-comp# uname -a
Linux tm 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
root@tm:~/hg/jdk9/hs-comp# JT_JAVA=/usr/lib/jvm/java-8-openjdk-amd64/ /root/jtreg/bin/jtreg -agentvm -Xmx40m -conc:10 -va  -a -w:test/hotspot/JTwork -r:test/hotspot/JTreport -jdk:./build/linux-x86_64-normal-server-release/jdk -timeout:3 /root/hg/jdk9/hs-comp/hotspot/test/compiler/rtm/locking/TestRTMAbortRatio.java
Comments
Looks similar to JDK-8155957.
30-08-2016