[oe] [meta-java][PATCH 1/2] icedtea7-native: Fix segmentation fault

Ricardo Ribalda Delgado ricardo.ribalda at gmail.com
Mon Oct 31 10:34:33 UTC 2016


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 <ricardo.ribalda at gmail.com>
---
 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 00756888b62c..0ecf620cd279 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}"
@@ -153,6 +154,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 000000000000..0c3e44eff826
--- /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) {
-- 
2.10.1




More information about the Openembedded-devel mailing list