[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