[Bug 225054] java/openjdk* : fails to build with clang 6.0 (blocks 571 ports)

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Fri Jan 12 20:50:30 UTC 2018


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225054

--- Comment #9 from Dimitry Andric <dim at FreeBSD.org> ---
(In reply to Jan Beich from comment #8)
> Dimitry, does openjdk8 actually work for you? Clang 6 probably misoptimizes
> it.

Not sure about misoptimizing, but it does indeed crash:

Program received signal SIGSEGV, Segmentation fault.
NativeCallStack::NativeCallStack (this=0x800e6a7a0
<NativeCallStack::EMPTY_STACK>, toSkip=0, fillStack=false)
    at
/wrkdirs/share/dim/ports/java/openjdk8/work/openjdk/hotspot/src/share/vm/utilities/nativeCallStack.cpp:33
33        _hash_value(0) {
(gdb) bt
#0  NativeCallStack::NativeCallStack (this=0x800e6a7a0
<NativeCallStack::EMPTY_STACK>, toSkip=0, fillStack=false)
    at
/wrkdirs/share/dim/ports/java/openjdk8/work/openjdk/hotspot/src/share/vm/utilities/nativeCallStack.cpp:33
#1  0x0000000801732d7e in MemTracker::init_tracking_level () at
/wrkdirs/share/dim/ports/java/openjdk8/work/openjdk/hotspot/src/share/vm/services/memTracker.cpp:72
#2  0x000000080126cb62 in MemTracker::tracking_level () at
/wrkdirs/share/dim/ports/java/openjdk8/work/openjdk/hotspot/src/share/vm/services/memTracker.hpp:118
#3  ResourceObj::operator new (size=32, type=ResourceObj::STACK_OR_EMBEDDED,
flags=mtInternal) at
/wrkdirs/share/dim/ports/java/openjdk8/work/openjdk/hotspot/src/share/vm/memory/allocation.cpp:89
#4  0x000000080180b93a in _GLOBAL__sub_I_reflectionUtils.cpp () at
/wrkdirs/share/dim/ports/java/openjdk8/work/openjdk/hotspot/src/share/vm/runtime/reflectionUtils.cpp:72
#5  0x0000000801939182 in __do_global_ctors_aux () from
/wrkdirs/share/dim/ports/java/openjdk8/work/openjdk/build/bsd-x86_64-normal-server-release/jdk/lib/amd64/server/libjvm.so
#6  0x00000008019391a6 in _init () from
/wrkdirs/share/dim/ports/java/openjdk8/work/openjdk/build/bsd-x86_64-normal-server-release/jdk/lib/amd64/server/libjvm.so
#7  0x00007fffffffc8f0 in ?? ()
#8  0x000000080020d06a in objlist_call_init (list=<optimized out>,
lockstate=<optimized out>) at /usr/src/libexec/rtld-elf/rtld.c:2672
#9  0x00000008002117e9 in dlopen_object (name=0x80022f800 "z\270P\325",
fd=<optimized out>, refobj=<optimized out>, lo_flags=2, mode=258,
lockstate=0x772f386b00000002) at /usr/src/libexec/rtld-elf/rtld.c:3391
#10 0x000000080020e1e6 in rtld_dlopen (name=0x7fffffffdeb0
"/wrkdirs/share/dim/ports/java/openjdk8/work/openjdk/build/bsd-x86_64-normal-server-release/jdk/lib/amd64/server/libjvm.so",
fd=-1, mode=<optimized out>)
    at /usr/src/libexec/rtld-elf/rtld.c:3266
#11 0x000000080025136e in LoadJavaVM () from
/wrkdirs/share/dim/ports/java/openjdk8/work/openjdk/build/bsd-x86_64-normal-server-release/jdk/bin/../lib/amd64/jli/libjli.so
#12 0x000000080024ccf8 in JLI_Launch () from
/wrkdirs/share/dim/ports/java/openjdk8/work/openjdk/build/bsd-x86_64-normal-server-release/jdk/bin/../lib/amd64/jli/libjli.so
#13 0x000000000020130b in main ()
(gdb) print *this
$2 = {<StackObj> = {<No data fields>}, static EMPTY_STACK = {<StackObj> = {<No
data fields>}, static EMPTY_STACK = <same as static member of an already seen
type>, _stack = {0x0, 0x0, 0x0, 0x0}, _hash_value = 0},
  _stack = {0x0, 0x0, 0x0, 0x0}, _hash_value = 0}
(gdb) disassemble
Dump of assembler code for function NativeCallStack::NativeCallStack(int,
bool):
   0x00000008017776c0 <+0>:     push   %rbp
   0x00000008017776c1 <+1>:     mov    %rsp,%rbp
   0x00000008017776c4 <+4>:     mov    %esi,%eax
=> 0x00000008017776c6 <+6>:     movl   $0x0,0x20(%rdi)
   0x00000008017776cd <+13>:    test   %edx,%edx
   0x00000008017776cf <+15>:    je     0x8017776de
<NativeCallStack::NativeCallStack(int, bool)+30>
   0x00000008017776d1 <+17>:    mov    $0x4,%esi
   0x00000008017776d6 <+22>:    mov    %eax,%edx
   0x00000008017776d8 <+24>:    pop    %rbp
   0x00000008017776d9 <+25>:    jmpq   0x8017aa290
<os::get_native_stack(unsigned char**, int, int)>
   0x00000008017776de <+30>:    xorps  %xmm0,%xmm0
   0x00000008017776e1 <+33>:    movups %xmm0,0x10(%rdi)
   0x00000008017776e5 <+37>:    movups %xmm0,(%rdi)
   0x00000008017776e8 <+40>:    pop    %rbp
   0x00000008017776e9 <+41>:    retq
End of assembler dump.
(gdb) print &this->_hash_value
$4 = (int *) 0x800e6a7c0 <NativeCallStack::EMPTY_STACK+32>
(gdb) info registers
rax            0x0      0
rbx            0x0      0
rcx            0x0      0
rdx            0x0      0
rsi            0x0      0
rdi            0x800e6a7a0      34374854560
rbp            0x7fffffffc320   0x7fffffffc320
rsp            0x7fffffffc320   0x7fffffffc320
r8             0xfffffff5       4294967285
r9             0xffffffff81c1b688       -2118011256
r10            0x800e72e5c      34374889052
r11            0x7fffffffc0c8   140737488339144
r12            0x80022f9f0      34362030576
r13            0x2      2
r14            0x7fffffffc370   140737488339824
r15            0x8006a8a40      34366720576
rip            0x8017776c6      0x8017776c6
<NativeCallStack::NativeCallStack(int, bool)+6>
eflags         0x10246  [ PF ZF IF RF ]
cs             0x43     67
ss             0x3b     59
ds             <unavailable>
es             <unavailable>
fs             <unavailable>
gs             <unavailable>
fs_base        0x8002318b0      34362038448
gs_base        0x0      0

So the address of the _hash_value field is OK, apparently.  As to why this
gives a segfault, no idea yet.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-java mailing list