[llvm-dev] OpenJDK8 failed to work after compiled by LLVM 8 for X86
Dimitry Andric via llvm-dev
llvm-dev at lists.llvm.org
Mon Sep 10 09:59:20 PDT 2018
Hi Leslie,
This is likely the same problem as was reported in https://bugs.freebsd.org/225054#c8, and fixed by the following patch:
https://svnweb.freebsd.org/ports/head/java/openjdk8/files/patch-hotspot_src_share_vm_services_memTracker.cpp?view=markup&pathrev=459368
Can you please try that out, and see if it fixes it for you too?
-Dimitry
> On 10 Sep 2018, at 18:20, Leslie Zhai via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
> Hi all,
>
> OpenJDK8 jdk8u-dev[1] is just able to work after compiled with LLVM 3.9.1 for X86:
>
> $ ./build/linux-x86_64-normal-server-slowdebug/images/j2sdk-image/bin/java -version
> openjdk version "1.8.0-internal-debug"
> OpenJDK Runtime Environment (build 1.8.0-internal-debug-xiangzhai_2018_09_09_21_08-b00)
> OpenJDK 64-Bit Server VM (build 25.71-b00-debug, mixed mode)
>
> $ strings ./build/linux-x86_64-normal-server-slowdebug/images/j2sdk-image/bin/java | grep clang
> clang version 3.9.1 (tags/RELEASE_391/final)
>
> But it failed to work after compiled with LLVM 8 for X86:
>
> $ ./build/linux-x86_64-normal-server-fastdebug/images/j2sdk-image/bin/java -version
> Segmentation fault
>
> $ gdb --ex run --args ./build/linux-x86_64-normal-server-fastdebug/images/j2sdk-image/bin/java -version
> GNU gdb (GDB) Fedora 7.12.1-48.fc25
> ...
> Starting program: /home/xiangzhai/project/jdk8u-llvm/build/linux-x86_64-normal-server-fastdebug/images/j2sdk-image/bin/java -version
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib64/libthread_db.so.1".
>
> Program received signal SIGSEGV, Segmentation fault.
> [ Legend: Modified register | Code | Heap | Stack | String ]
> ───────────────────────────────────────────────────────────────────────────────────────────────[ registers ]────
> $rax : 0x0
> $rbx : 0x0
> $rcx : 0x7ffff7315eb0 → 0x00007ffff6ae30a0 → <NativeCallStack::print_on(outputStream*)+0> xor edx, edx
> $rdx : 0x0
> $rsp : 0x7fffffff9328 → 0x00007ffff6a76822 → <MemTracker::init_tracking_level()+178> mov edi, ebx
> $rbp : 0x7fffffff93c0 → 0x00007fffffff94f0 → 0x00007fffffff9510 → 0x0000000000000002
> $rsi : 0x0
> $rdi : 0x7ffff7315e70 → 0x00007ffff7315eb0 → 0x00007ffff6ae30a0 → <NativeCallStack::print_on(outputStream*)+0> xor edx, edx
> $rip : 0x7ffff6ae2f5b → <NativeCallStack::NativeCallStack(int,+0> mov QWORD PTR [rdi], rcx
> $r8 : 0x1
> $r9 : 0xf
> $r10 : 0x64
> $r11 : 0x0
> $r12 : 0x7fffffffdc88 → 0x00007fffffffe04c → "/home/xiangzhai/project/jdk8u-llvm/build/linux-x86[...]"
> $r13 : 0x7fffffffdca0 → 0x00007fffffffe0bf → "XDG_VTNR=1"
> $r14 : 0x7fffffff9330 → "NMT_LEVEL_10535"
> $r15 : 0x6
> $eflags: [carry parity adjust zero sign trap INTERRUPT direction overflow RESUME virtualx86 identification]
> $ss: 0x002b $ds: 0x0000 $cs: 0x0033 $es: 0x0000 $gs: 0x0000 $fs: 0x0000
> ───────────────────────────────────────────────────────────────────────────────────────────────────[ stack ]────
> 0x00007fffffff9328│+0x00: 0x00007ffff6a76822 → <MemTracker::init_tracking_level()+178> mov edi, ebx ← $rsp
> 0x00007fffffff9330│+0x08: "NMT_LEVEL_10535" ← $r14
> 0x00007fffffff9338│+0x10: 0x0035333530315f4c ("L_10535"?)
> 0x00007fffffff9340│+0x18: 0x0000000000000001
> 0x00007fffffff9348│+0x20: 0x0000000000602190 → 0x00007ffff5eb7000 → 0x00010102464c457f
> 0x00007fffffff9350│+0x28: 0x0000000000000004
> 0x00007fffffff9358│+0x30: 0x000000066474e551
> 0x00007fffffff9360│+0x38: 0x0000000000000000
> ────────────────────────────────────────────────────────────────────────────────────────[ code:i386:x86-64 ]────
> 0x7ffff6ae2f4b <print_owned_locks_on_error(outputStream*)+187> add eax, 0x1f0f00
> 0x7ffff6ae2f50 <NativeCallStack::NativeCallStack(int,+0> mov rcx, QWORD PTR [rip+0x842781] # 0x7ffff73256d8
> 0x7ffff6ae2f57 <NativeCallStack::NativeCallStack(int,+0> add rcx, 0x10
> → 0x7ffff6ae2f5b <NativeCallStack::NativeCallStack(int,+0> mov QWORD PTR [rdi], rcx
> 0x7ffff6ae2f5e <NativeCallStack::NativeCallStack(int,+0> mov DWORD PTR [rdi+0x28], 0x0
> 0x7ffff6ae2f65 <NativeCallStack::NativeCallStack(int,+0> add rdi, 0x8
> 0x7ffff6ae2f69 <NativeCallStack::NativeCallStack(int,+0> test edx, edx
> 0x7ffff6ae2f6b <NativeCallStack::NativeCallStack(int,+0> je 0x7ffff6ae2f7b <NativeCallStack::NativeCallStack(int, bool)+43>
> 0x7ffff6ae2f6d <NativeCallStack::NativeCallStack(int,+0> mov eax, esi
> ─────────[ source:/home/xiangzhai/project/jdk8u-llvm/hotspot/src/share/vm/utilities/nativeCallStack.cpp+33 ]────
> 28 #include "utilities/nativeCallStack.hpp"
> 29
> 30 const NativeCallStack NativeCallStack::EMPTY_STACK(0, false);
> 31
> 32 NativeCallStack::NativeCallStack(int toSkip, bool fillStack) :
> → 33 _hash_value(0) {
> 34
> 35 #if !PLATFORM_NATIVE_STACK_WALKING_SUPPORTED
> 36 fillStack = false;
> 37 #endif
> 38
> ─────────────────────────────────────────────────────────────────────────────────────────────────[ threads ]────
> [#0] Id 1, Name: "java", stopped, reason: SIGSEGV
> ───────────────────────────────────────────────────────────────────────────────────────────────────[ trace ]────
> [#0] 0x7ffff6ae2f5b → Name: NativeCallStack::NativeCallStack(this=0x7ffff7315e70 <NativeCallStack::EMPTY_STACK>, toSkip=0x0, fillStack=0x0)
> [#1] 0x7ffff6a76822 → Name: MemTracker::init_tracking_level()
> [#2] 0x7ffff62eff49 → Name: MemTracker::tracking_level()
> [#3] 0x7ffff62eff49 → Name: ResourceObj::operator new(size=0x20, type=ResourceObj::STACK_OR_EMBEDDED, flags=<optimized out>)
> [#4] 0x7ffff61369ec → Name: _GLOBAL__sub_I_c1_Greedy.cpp()
> [#5] 0x7ffff7de7d9a → Name: call_init(l=<optimized out>, argc=0x2, argv=0x7fffffffdc88, env=0x7fffffffdca0)
> [#6] 0x7ffff7de7eab → Name: call_init(env=0x7fffffffdca0, argv=0x7fffffffdc88, argc=0x2, l=<optimized out>)
> [#7] 0x7ffff7de7eab → Name: _dl_init(main_map=0x602190, argc=0x2, argv=0x7fffffffdc88, env=0x7fffffffdca0)
> [#8] 0x7ffff7dece46 → Name: dl_open_worker(a=0x7fffffff97e0)
> [#9] 0x7ffff7de7c44 → Name: _dl_catch_error(objname=0x7fffffff97d0, errstring=0x7fffffff97d8, mallocedp=0x7fffffff97cf, operate=0x7ffff7decae0 <dl_open_worker>, args=0x7fffffff97e0)
> ────────────────────────────────────────────────────────────────────────────────────────────────────────────────
> 0x00007ffff6ae2f5b in NativeCallStack::NativeCallStack (this=0x7ffff7315e70 <NativeCallStack::EMPTY_STACK>, toSkip=0x0, fillStack=0x0) at /home/xiangzhai/project/jdk8u-llvm/hotspot/src/share/vm/utilities/nativeCallStack.cpp:33
> 33 _hash_value(0) {
> gef➤ c
> Continuing.
>
> Program terminated with signal SIGSEGV, Segmentation fault.
> The program no longer exists.
> gef➤
>
> ----- 8< -------- 8< -------- 8< -------- 8< -------- 8< -------- 8< ---
>
> I started to use and contribute clang static analyzer[2] just for finding the bugs for open source software from LLVM 3.x, perhaps it is a bug of LLVM 8, because jdk8u is just able to print out '-version' after compiled with llvm-3.9.1, I will rebuild the LLVM 8 again, then rebuild jdk8u for triple check.
>
> 1. Workaround-compile-with-llvm.patch https://raw.githubusercontent.com/xiangzhai/jdk8u-dev/master/Workaround-compile-with-llvm.patch
>
> 2. https://github.com/llvm-mirror/clang/commit/a530e823ed2793ac149de7a984014e242a787682#diff-ff9160d4628cb9b6186559837c2c8668
>
> 3. The build option of LLVM 8 (bootstrap with LLVM 3.9.1):
>
> cmake .. -DCMAKE_BUILD_TYPE=Release \
> -DCMAKE_C_COMPILER=clang \
> -DCMAKE_CXX_COMPILER=clang++ \
> -DCMAKE_C_FLAGS="-fPIC" \
> -DCMAKE_CXX_FLAGS="-std=c++11 -fPIC" \
> -DLLVM_BUILD_LLVM_DYLIB=ON \
> -DLLVM_LINK_LLVM_DYLIB=ON \
> -DLLVM_INSTALL_UTILS=ON \
> -DLLVM_ENABLE_RTTI=ON \
> -DLLVM_ENABLE_FFI=ON \
> -DLLVM_ENABLE_EH=ON \
> -DLLVM_BUILD_TESTS=ON \
> -DLLVM_BUILD_DOCS=OFF \
> -DLLVM_ENABLE_SPHINX=OFF \
> -DLLVM_ENABLE_DOXYGEN=OFF \
> -DLLDB_DISABLE_LIBEDIT=1 \
> -DSPHINX_WARNINGS_AS_ERRORS=OFF \
> -DFFI_INCLUDE_DIR=$(pkg-config --variable=includedir libffi) \
> -DFFI_LIBRARY_DIR:PATH="$(pkg-config --variable=libdir libffi)" \
> -DLLVM_BINUTILS_INCDIR=/usr/include \
> -DLLVM_LIBDIR_SUFFIX=64 \
> -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=ON \
> -DLIBUNWIND_ENABLE_SHARED=ON \
> -DLIBCXXABI_USE_LLVM_UNWINDER=ON \
> -DLLDB_TEST_C_COMPILER=clang \
> -DLLDB_TEST_CXX_COMPILER=clang++ \
> -DLLVM_DEFAULT_TARGET_TRIPLE="x86_64-redhat-linux" \
> -DCLANG_VENDOR="LLVM China"
>
> 4. $ clang -v
> LLVM China clang version 8.0.0 (git at github.com:llvm-mirror/clang.git 81ef98628ebf5186d746c0986dcbf5073e842043) (git at github.com:llvm-mirror/llvm.git e1aac9723d55497e74d83d216329f08d9842e494) (based on LLVM 8.0.0svn)
> Target: x86_64-redhat-linux
> Thread model: posix
> InstalledDir: /usr/bin
> Found candidate GCC installation: /usr/bin/../lib/gcc/i686-redhat-linux/6.4.1
> Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/6.4.1
> Found candidate GCC installation: /usr/lib/gcc/i686-redhat-linux/6.4.1
> Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/6.4.1
> Selected GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/6.4.1
> Candidate multilib: .;@m64
> Candidate multilib: 32;@m32
> Selected multilib: .;@m64
>
> --
> Regards,
> Leslie Zhai
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 223 bytes
Desc: Message signed with OpenPGP
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180910/20e0f50e/attachment-0001.sig>
More information about the llvm-dev
mailing list