From 97f81e65843dd1e01c55cae528fd766dd13a265d Mon Sep 17 00:00:00 2001 From: Ricardo Ribalda Delgado Date: Mon, 31 Oct 2016 11:34:33 +0100 Subject: icedtea7-native: Fix segmentation fault Without this patch the generated icedtea produces segmentation faults. This is probably due to a race condition during cleanout. Signed-off-by: Ricardo Ribalda Delgado Signed-off-by: Otavio Salvador --- recipes-core/icedtea/icedtea7-native.inc | 2 ++ .../icedtea/openjdk-7-03b147/sigsegv.patch | 42 ++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 recipes-core/icedtea/openjdk-7-03b147/sigsegv.patch diff --git a/recipes-core/icedtea/icedtea7-native.inc b/recipes-core/icedtea/icedtea7-native.inc index a8428dc..55cb7e7 100644 --- a/recipes-core/icedtea/icedtea7-native.inc +++ b/recipes-core/icedtea/icedtea7-native.inc @@ -42,6 +42,7 @@ SRC_URI = " \ file://allow-headless-build.patch;striplevel=0 \ file://jaxws_fix_NullPointerException.patch;apply=no \ file://timezoneszip.patch \ + file://sigsegv.patch;apply=no \ " S = "${WORKDIR}/${ICEDTEA}" @@ -152,6 +153,7 @@ do_configure_append() { oe_runmake patch-boot patch -p1 < ${WORKDIR}/jaxws_fix_NullPointerException.patch + patch -p1 < ${WORKDIR}/sigsegv.patch } EXTRA_OEMAKE = ' \ diff --git a/recipes-core/icedtea/openjdk-7-03b147/sigsegv.patch b/recipes-core/icedtea/openjdk-7-03b147/sigsegv.patch new file mode 100644 index 0000000..0c3e44e --- /dev/null +++ b/recipes-core/icedtea/openjdk-7-03b147/sigsegv.patch @@ -0,0 +1,42 @@ +diff --git a/openjdk-boot/hotspot/src/share/vm/runtime/thread.cpp b/openjdk-boot/hotspot/src/share/vm/runtime/thread.cpp +index 8b7059c8389f..67e9e7bd4bce 100644 +--- a/openjdk-boot/hotspot/src/share/vm/runtime/thread.cpp ++++ b/openjdk-boot/hotspot/src/share/vm/runtime/thread.cpp +@@ -764,10 +764,13 @@ bool Thread::claim_oops_do_par_case(int strong_roots_parity) { + } + + void Thread::oops_do(OopClosure* f, CodeBlobClosure* cf) { +- active_handles()->oops_do(f); ++ if (f && active_handles()) ++ active_handles()->oops_do(f); + // Do oop for ThreadShadow +- f->do_oop((oop*)&_pending_exception); +- handle_area()->oops_do(f); ++ if (f) ++ f->do_oop((oop*)&_pending_exception); ++ if (f && handle_area()) ++ handle_area()->oops_do(f); + } + + void Thread::nmethods_do(CodeBlobClosure* cf) { +diff --git a/openjdk/hotspot/src/share/vm/runtime/thread.cpp b/openjdk/hotspot/src/share/vm/runtime/thread.cpp +index 8b7059c8389f..67e9e7bd4bce 100644 +--- a/openjdk/hotspot/src/share/vm/runtime/thread.cpp ++++ b/openjdk/hotspot/src/share/vm/runtime/thread.cpp +@@ -764,10 +764,13 @@ bool Thread::claim_oops_do_par_case(int strong_roots_parity) { + } + + void Thread::oops_do(OopClosure* f, CodeBlobClosure* cf) { +- active_handles()->oops_do(f); ++ if (f && active_handles()) ++ active_handles()->oops_do(f); + // Do oop for ThreadShadow +- f->do_oop((oop*)&_pending_exception); +- handle_area()->oops_do(f); ++ if (f) ++ f->do_oop((oop*)&_pending_exception); ++ if (f && handle_area()) ++ handle_area()->oops_do(f); + } + + void Thread::nmethods_do(CodeBlobClosure* cf) { -- cgit v1.2.3-54-g00ecf