RFR: 8167501 ARMv7 Linux C2 compiler crashes running jtreg harness on MP systems

Bob Vandette bob.vandette at oracle.com
Thu Nov 3 14:06:36 UTC 2016

Please review this JDK9 work-around for a reliability problem causing crashes and hangs
running jtreg on ARMv7 MP platforms using the server compiler.

This work-around disables the use of quick-enter on ARM.  This enhancement was
previously disabled for AARCH64 binaries.

This work-around has been independently verified by running jtreg on two different MP 
based ARM systems.

https://bugs.openjdk.java.net/browse/JDK-8167501 <https://bugs.openjdk.java.net/browse/JDK-8167501>

diff --git a/src/share/vm/runtime/sharedRuntime.cpp b/src/share/vm/runtime/sharedRuntime.cpp
--- a/src/share/vm/runtime/sharedRuntime.cpp
+++ b/src/share/vm/runtime/sharedRuntime.cpp
@@ -1983,8 +1983,10 @@
 // Handles the uncommon case in locking, i.e., contention or an inflated lock.
 JRT_BLOCK_ENTRY(void, SharedRuntime::complete_monitor_locking_C(oopDesc* _obj, BasicLock* lock, JavaThread* thread))
   // Disable ObjectSynchronizer::quick_enter() in default config
-  // on AARCH64 until JDK-8153107 is resolved.
-  if (AARCH64_ONLY((SyncFlags & 256) != 0 &&) !SafepointSynchronize::is_synchronizing()) {
+  // on AARCH64 and ARM until JDK-8153107 is resolved.
+  if (ARM_ONLY((SyncFlags & 256) != 0 &&)
+      AARCH64_ONLY((SyncFlags & 256) != 0 &&)
+      !SafepointSynchronize::is_synchronizing()) {
     // Only try quick_enter() if we're not trying to reach a safepoint
     // so that the calling thread reaches the safepoint more quickly.
     if (ObjectSynchronizer::quick_enter(_obj, thread, lock)) return;

The real problem will be investigated and fixed under this bug:

https://bugs.openjdk.java.net/browse/JDK-8153107 <https://bugs.openjdk.java.net/browse/JDK-8153107>


More information about the hotspot-dev mailing list