Bug 260872 - java/openjdk8: segfaults on aarch64
Summary: java/openjdk8: segfaults on aarch64
Status: Open
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: arm64 Any
: --- Affects Only Me
Assignee: freebsd-java (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-01-02 06:38 UTC by adrian
Modified: 2022-01-31 11:55 UTC (History)
4 users (show)

See Also:
bugzilla: maintainer-feedback? (java)


Attachments
error report (14.04 KB, text/plain)
2022-01-02 06:38 UTC, adrian
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description adrian 2022-01-02 06:38:07 UTC
Created attachment 230619 [details]
error report

Trying to start elasticsearch installed from packages on 13.0-release arm64 under vmware fusion on m1 mac

FreeBSD devbox 13.0-RELEASE-p4 FreeBSD 13.0-RELEASE-p4 #0: Tue Aug 24 07:38:07 UTC 2021     root@arm64-builder.daemonology.net:/usr/obj/usr/src/arm64.aarch64/sys/GENERIC  arm64

results in message from openjdk8


[root@develk /usr/ports/java/openjdk8]# service elasticsearch onestart
Starting elasticsearch.
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGILL (0x4) at pc=0x000000004224b9a0, pid=14774, tid=0x0000000000018807
#
# JRE version:  (8.0_302-b08) (build )
# Java VM: OpenJDK 64-Bit Server VM (25.302-b08 mixed mode bsd-aarch64 compressed oops)
# Problematic frame:
# v  ~BufferBlob::native signature handlers
#
# Core dump written. Default location: //java.core
#
# An error report file with more information is saved as:
# /tmp/hs_err_pid14774.log
#
# If you would like to submit a bug report, please visit:
#   https://bugs.freebsd.org/bugzilla/enter_bug.cgi?product=Ports%20%26%20Packages&component=Individual%20Port(s)&short_desc=java/openjdk8%3A%20
#
/usr/local/lib/elasticsearch/bin/elasticsearch-env: line 88: 14774 Abort trap              "$JAVA" "$XSHARE" -cp "$ES_CLASSPATH" org.elasticsearch.tools.java_version_checker.JavaVersionChecker
/usr/local/etc/rc.d/elasticsearch: WARNING: failed to start elasticsearch
Comment 1 Natalino Picone 2022-01-12 09:58:46 UTC
I'm getting the same issue using antlr.
It looks like java is not working also on FreeBSD 12.3 arm64.
I get the same error also changing JDK versions.


(lldb) target create "/usr/local/openjdk8/bin/javac" --core "javac.core"
Core file '/data/coredumps/javac.core' (aarch64) was loaded.
(lldb) bt all
* thread #1, name = 'javac', stop reason = signal SIGSEGV
  * frame #0: 0x000054f8e334adec libjvm.so`___lldb_unnamed_symbol24423$$libjvm.so + 228
    frame #1: 0x000054f8e33558a0 libjvm.so`___lldb_unnamed_symbol24681$$libjvm.so + 92
    frame #2: 0x000054f8e34c54d4 libjvm.so`___lldb_unnamed_symbol28424$$libjvm.so + 2404
    frame #3: 0x000054f8e34c64a0 libjvm.so`___lldb_unnamed_symbol28426$$libjvm.so + 1184
    frame #4: 0x000054f8e3355180 libjvm.so`JVM_handle_bsd_signal + 536
    frame #5: 0x000054f8e3351d70 libjvm.so`___lldb_unnamed_symbol24596$$libjvm.so + 56
    frame #6: 0x000054f8d9e1a09c libthr.so.3`___lldb_unnamed_symbol102$$libthr.so.3 + 252
    frame #7: 0x000054f8d9e197d4 libthr.so.3`___lldb_unnamed_symbol83$$libthr.so.3 + 236
    frame #8: 0x0000fffffffff000
    frame #9: 0x000054f8e34d7650 libjvm.so`___lldb_unnamed_symbol28620$$libjvm.so + 184
    frame #10: 0x000054f8e307f314 libjvm.so`___lldb_unnamed_symbol17426$$libjvm.so + 84
    frame #11: 0x000054f8e346e178 libjvm.so`___lldb_unnamed_symbol27481$$libjvm.so + 792
    frame #12: 0x000054f8e3138b4c libjvm.so`JNI_CreateJavaVM + 136
    frame #13: 0x000054f8da824eb8 libjli.so`JavaMain + 264
    frame #14: 0x000054f8d9e137ac libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 464
    frame #15: 0x000054f8d9e13300 libthr.so.3`_pthread_create + 904
  thread #2, name = 'javac', stop reason = signal SIGSEGV
    frame #0: 0x000054f8db4b6bdc libc.so.7`__sys__umtx_op + 8
    frame #1: 0x000054f8d9e15dfc libthr.so.3`___lldb_unnamed_symbol14$$libthr.so.3 + 56
    frame #2: 0x000054f8d9e1f3e4 libthr.so.3`___lldb_unnamed_symbol146$$libthr.so.3 + 800
    frame #3: 0x000054f8da8281c4 libjli.so`ContinueInNewThread0 + 124
    frame #4: 0x000054f8da8267e8 libjli.so`ContinueInNewThread + 144
    frame #5: 0x000054f8da8282ac libjli.so`JVMInit + 120
    frame #6: 0x000054f8da824a8c libjli.so`JLI_Launch + 4876
    frame #7: 0x000054f898650b6c javac`___lldb_unnamed_symbol4$$javac + 96
    frame #8: 0x000054f8986508f8 javac`___lldb_unnamed_symbol1$$javac + 124
Comment 2 Mikael Urankar freebsd_committer freebsd_triage 2022-01-17 16:46:56 UTC
Can any of you try to recompile java with the patch from here (only the second hunk is needed): https://cgit.freebsd.org/ports/diff/java/openjdk11/Makefile?id=3822416493cfbbed8fe7a487391b40bec956d671
Comment 3 Ronald Klop 2022-01-18 11:12:33 UTC
(In reply to Mikael Urankar from comment #2)
Below diff works for me. I have no idea if the CONFIGURE_ENV should have stayed.

diff --git a/java/openjdk8/Makefile b/java/openjdk8/Makefile
index e444b3147af9..9b21c0da7d54 100644
--- a/java/openjdk8/Makefile
+++ b/java/openjdk8/Makefile
@@ -202,9 +202,15 @@ LIB_DEPENDS+=      libffi.so:devel/libffi
 
 .if ${COMPILER_TYPE} == clang
 MAKE_ENV+=     COMPILER_WARNINGS_FATAL=false USE_CLANG=true
-CONFIGURE_ENV+=        LIBCXX="-lc++"
+#CONFIGURE_ENV+=       LIBCXX="-lc++"
 .if ${COMPILER_VERSION} >= 130
-CONFIGURE_ARGS+=       --with-extra-cflags="-Wno-unused-but-set-parameter"
+#CONFIGURE_ARGS+=      --with-extra-cflags="-Wno-unused-but-set-parameter"
+# PR258954: OpenJDK <= 13 crash due to undefined behavior with clang >= 13
+# See also https://bugs.openjdk.java.net/browse/JDK-8229258
+LLVM_VER=      12
+BUILD_DEPENDS+=        clang${LLVM_VER}:devel/llvm${LLVM_VER}
+CC=            ${LOCALBASE}/bin/clang${LLVM_VER}
+CXX=           ${LOCALBASE}/bin/clang++${LLVM_VER}
 .endif
 .endif
Comment 4 Ronald Klop 2022-01-27 10:33:09 UTC
(In reply to Ronald Klop from comment #3)
Please ignore my previous comment. I was looking into an issue similar to bug #258954 and bug #260319.
Although going back to llvm12 might also fix/workaround those issues.
Comment 5 Bjoern A. Zeeb freebsd_committer freebsd_triage 2022-01-31 11:55:28 UTC
(In reply to Mikael Urankar from comment #2)

I can confirm that appying the openjdk11 change to openjdk8 makes it work as fop compiled.