[oe] [meta-java][PATCH 1/1] openjdk: fix a random crash on JNI_CreateJavaVM

Richard Leitner richard.leitner at skidata.com
Fri Dec 27 11:48:23 UTC 2019


Hi,
this is a note to let you know that I've just added this patch to the
master-next branch of the meta-java repository at
       git://git.yoctoproject.org/meta-java

As soon as it has gone through some more testing it will likely be
merged to the master branch.

If you have any questions, please let me know.

regards;Richard.L

On 19/02/2019 03:30, Wenlin Kang wrote:
> When call JNI_CreateJavaVM API, sometimes it will crash(we have
> reproduced it on quemuppc), this patch fixes it.
> 
> Signed-off-by: Wenlin Kang <wenlin.kang at windriver.com>
> ---
>   .../openjdk-8-release-172b11-common.inc       |  1 +
>   ...otspot-fix-crash-on-JNI_CreateJavaVM.patch | 36 +++++++++++++++++++
>   2 files changed, 37 insertions(+)
>   create mode 100644 recipes-core/openjdk/patches-openjdk-8/0001-hotspot-fix-crash-on-JNI_CreateJavaVM.patch
> 
> diff --git a/recipes-core/openjdk/openjdk-8-release-172b11-common.inc b/recipes-core/openjdk/openjdk-8-release-172b11-common.inc
> index ad20585..b37608c 100644
> --- a/recipes-core/openjdk/openjdk-8-release-172b11-common.inc
> +++ b/recipes-core/openjdk/openjdk-8-release-172b11-common.inc
> @@ -21,6 +21,7 @@ PATCHES_URI = "\
>       ${LIBPNG_NEON_PATCH} \
>       file://handle_extra_output.patch \
>       file://hotspot-handle-gcc7-format-overflow.patch \
> +    file://0001-hotspot-fix-crash-on-JNI_CreateJavaVM.patch \
>   "
>   HOTSPOT_UB_PATCH = "\
>       file://0014-hotspot-zero-fix-undefined-behaviour-gcc-v8-fix.patch \
> diff --git a/recipes-core/openjdk/patches-openjdk-8/0001-hotspot-fix-crash-on-JNI_CreateJavaVM.patch b/recipes-core/openjdk/patches-openjdk-8/0001-hotspot-fix-crash-on-JNI_CreateJavaVM.patch
> new file mode 100644
> index 0000000..4618b6b
> --- /dev/null
> +++ b/recipes-core/openjdk/patches-openjdk-8/0001-hotspot-fix-crash-on-JNI_CreateJavaVM.patch
> @@ -0,0 +1,36 @@
> +From d0ebd6f108df9b0f9533de6f16280ceec136d8e6 Mon Sep 17 00:00:00 2001
> +From: Wenlin Kang <wenlin.kang at windriver.com>
> +Date: Sun, 17 Feb 2019 22:38:33 -0800
> +Subject: [PATCH] hotspot: fix crash on JNI_CreateJavaVM
> +
> +In function os::pd_create_stack_guard_pages(char* addr, size_t size),
> +when addr < os::Linux::initial_thread_stack_bottom(), usually munmap()
> +will not be called, but when mincore()==-1, get_stack_commited_bottom()
> +will make stack_extent < os::Linux::initial_thread_stack_bottom() and
> +stack_extent < addr too, then munmap() is called, in such case, it may
> +cause segment(we have reproduced it on linux_PPC).
> +
> +Upstream-Status: Pending
> +
> +Signed-off-by: Wenlin Kang <wenlin.kang at windriver.com>
> +---
> + hotspot/src/os/linux/vm/os_linux.cpp | 3 ++-
> + 1 file changed, 2 insertions(+), 1 deletion(-)
> +
> +diff --git a/hotspot/src/os/linux/vm/os_linux.cpp b/hotspot/src/os/linux/vm/os_linux.cpp
> +index 044a70a6..b8246ce4 100644
> +--- a/hotspot/src/os/linux/vm/os_linux.cpp
> ++++ b/hotspot/src/os/linux/vm/os_linux.cpp
> +@@ -3078,7 +3078,8 @@ bool os::pd_create_stack_guard_pages(char* addr, size_t size) {
> +     uintptr_t stack_extent = (uintptr_t) os::Linux::initial_thread_stack_bottom();
> +     unsigned char vec[1];
> +
> +-    if (mincore((address)stack_extent, os::vm_page_size(), vec) == -1) {
> ++    if ((mincore((address)stack_extent, os::vm_page_size(), vec) == -1)
> ++        && ((size_t)addr > (size_t)stack_extent)) {
> +       // Fallback to slow path on all errors, including EAGAIN
> +       stack_extent = (uintptr_t) get_stack_commited_bottom(
> +                                     os::Linux::initial_thread_stack_bottom(),
> +--
> +2.17.1
> +
> 


More information about the Openembedded-devel mailing list