RFR: 8201616: Hotspot crashes on linux-sparc after 8189941

John Paul Adrian Glaubitz glaubitz at physik.fu-berlin.de
Tue Apr 17 19:48:33 UTC 2018


Hi!

After having rebuilt OpenJDK several dozen times over several days and bisecting
for several hours today, I finally found the culprit for the segfault I am seeing
on linux-sparc which is JDK-8189941 [1].

Looking at the SPARC-specific changes [2], I noticed the change in os_solaris_sparc.cpp
to use os::is_poll_address() instead of os::get_polling_page() when a SIGSEGV is caught
which was missing in os_linux_sparc.cpp.

Thus, I made that change to os_linux_sparc.cpp as well:

diff --git a/src/hotspot/os_cpu/linux_sparc/os_linux_sparc.cpp b/src/hotspot/os_cpu/linux_sparc/os_linux_sparc.cpp
--- a/src/hotspot/os_cpu/linux_sparc/os_linux_sparc.cpp
+++ b/src/hotspot/os_cpu/linux_sparc/os_linux_sparc.cpp
@@ -374,7 +374,7 @@
 }

 inline static bool checkPollingPage(address pc, address fault, address* stub) {
-  if (fault == os::get_polling_page()) {
+  if (os::is_poll_address(fault)) {
     *stub = SharedRuntime::get_poll_stub(pc);
     return true;
   }

And voila, the crash is gone \o/.

Please review the change in [3] and invite me over a cold one at next FOSDEM :-).

Cheers,
Adrian

> [1] http://hg.openjdk.java.net/jdk/jdk/rev/0ce0ac68ace7
> [2] http://hg.openjdk.java.net/jdk/jdk/rev/0ce0ac68ace7#l39.1
> [3] http://cr.openjdk.java.net/~glaubitz/8201616/webrev.00/

-- 
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - glaubitz at debian.org
`. `'   Freie Universitaet Berlin - glaubitz at physik.fu-berlin.de
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913


More information about the hotspot-dev mailing list