dev-java/openjdk: add patch to 11.0.7 to fix SIGSEGV in bootstrap
authorGeorgy Yakovlev <gyakovlev@gentoo.org>
Thu, 23 Apr 2020 20:41:15 +0000 (13:41 -0700)
committerGeorgy Yakovlev <gyakovlev@gentoo.org>
Thu, 23 Apr 2020 20:41:47 +0000 (13:41 -0700)
Happens if bootstrap jvm was compiled with 11.0.7 (like -bin version)

Bug: https://bugs.gentoo.org/719118
Package-Manager: Portage-2.3.99, Repoman-2.3.22
Signed-off-by: Georgy Yakovlev <gyakovlev@gentoo.org>
dev-java/openjdk/files/openjdk-11.0.7_p10-sigsegv.patch [new file with mode: 0644]
dev-java/openjdk/openjdk-11.0.7_p10.ebuild

diff --git a/dev-java/openjdk/files/openjdk-11.0.7_p10-sigsegv.patch b/dev-java/openjdk/files/openjdk-11.0.7_p10-sigsegv.patch
new file mode 100644 (file)
index 0000000..04c61c0
--- /dev/null
@@ -0,0 +1,55 @@
+
+# HG changeset patch
+# User ccheung
+# Date 1564075552 25200
+# Node ID f1332f6025515e4fc9e42fbf79f983d782abaaf0
+# Parent  966fc6d784a737ec25cd0b1be48109a4a3fa02ad
+8228407: JVM crashes with shared archive file mismatch
+Summary: Stop processing other header fields if initial header check has failed.
+Reviewed-by: dholmes, jiangli
+
+diff -r 966fc6d784a7 -r f1332f602551 src/hotspot/share/memory/filemap.cpp
+--- a/src/hotspot/share/memory/filemap.cpp     Mon Mar 02 12:30:59 2020 +0100
++++ b/src/hotspot/share/memory/filemap.cpp     Thu Jul 25 10:25:52 2019 -0700
+@@ -1287,7 +1287,9 @@
+   }
+   init_from_file(_fd);
+-  if (!validate_header()) {
++  // UseSharedSpaces could be disabled if the checking of some of the header fields in
++  // init_from_file has failed.
++  if (!UseSharedSpaces || !validate_header()) {
+     return false;
+   }
+   return true;
+diff -r 966fc6d784a7 -r f1332f602551 test/hotspot/jtreg/runtime/appcds/SharedArchiveConsistency.java
+--- a/test/hotspot/jtreg/runtime/appcds/SharedArchiveConsistency.java  Mon Mar 02 12:30:59 2020 +0100
++++ b/test/hotspot/jtreg/runtime/appcds/SharedArchiveConsistency.java  Thu Jul 25 10:25:52 2019 -0700
+@@ -385,8 +385,16 @@
+         output.shouldNotContain("Checksum verification failed");
+         copyFile(orgJsaFile, jsa);
++        // modify _jvm_ident and run with -Xshare:auto
++        System.out.println("\n2b. Corrupt _jvm_ident run with -Xshare:auto\n");
++        modifyJvmIdent();
++        output = TestCommon.execAuto(execArgs);
++        output.shouldContain("The shared archive file was created by a different version or build of HotSpot");
++        output.shouldContain("Hello World");
++
++        copyFile(orgJsaFile, jsa);
+         // modify _magic and _paths_misc_info_size, test should fail
+-        System.out.println("\n2b. Corrupt _magic and _paths_misc_info_size, should fail\n");
++        System.out.println("\n2c. Corrupt _magic and _paths_misc_info_size, should fail\n");
+         modifyHeaderIntField(offset_magic, 0x00000000);
+         modifyHeaderIntField(offset_paths_misc_info_size, Integer.MAX_VALUE);
+         output = TestCommon.execCommon(execArgs);
+@@ -395,7 +403,7 @@
+         copyFile(orgJsaFile, jsa);
+         // modify _version and _paths_misc_info_size, test should fail
+-        System.out.println("\n2c. Corrupt _version and _paths_misc_info_size, should fail\n");
++        System.out.println("\n2d. Corrupt _version and _paths_misc_info_size, should fail\n");
+         modifyHeaderIntField(offset_version, 0x00000000);
+         modifyHeaderIntField(offset_paths_misc_info_size, Integer.MAX_VALUE);
+         output = TestCommon.execCommon(execArgs);
+
index 9df2e6c723a3bb09b93d4305003a4ecd6da0ea7b..76d41a4eb0823ce8b26bac1ed0ead550a9fd65b9 100644 (file)
@@ -77,6 +77,10 @@ REQUIRED_USE="javafx? ( alsa !headless-awt )"
 
 S="${WORKDIR}/jdk${SLOT}u-jdk-${MY_PV}"
 
+PATCHES=(
+       "${FILESDIR}/${P}-sigsegv.patch"
+)
+
 # The space required to build varies wildly depending on USE flags,
 # ranging from 2GB to 16GB. This function is certainly not exact but
 # should be close enough to be useful.