Strange behavior of Unsafe.
Palle Girgensohn
girgen at pingpong.net
Sun Apr 3 14:20:42 UTC 2016
Hi,
I haven't seen this one before, no.
# Problematic frame:
# V [libjvm.so+0x8d4fad] JVM_handle_bsd_signal+0x121eed
(gdb) bt
#0 0x0000000800f2464a in thr_kill () from /lib/libc.so.7
#1 0x0000000800f24636 in raise () from /lib/libc.so.7
#2 0x0000000800f245b9 in abort () from /lib/libc.so.7
#3 0x00000008023ada81 in os::abort () from /usr/local/openjdk8/jre/lib/amd64/server/libjvm.so
#4 0x000000080250a0d7 in VMError::report_and_die () from /usr/local/openjdk8/jre/lib/amd64/server/libjvm.so
#5 0x00000008023b32a2 in JVM_handle_bsd_signal () from /usr/local/openjdk8/jre/lib/amd64/server/libjvm.so
#6 0x00000008023b037d in signalHandler () from /usr/local/openjdk8/jre/lib/amd64/server/libjvm.so
#7 0x0000000800c4f997 in pthread_sigmask () from /lib/libthr.so.3
#8 0x0000000800c4f1a8 in pthread_getspecific () from /lib/libthr.so.3
#9 <signal handler called>
#10 0x00000008024d4fad in Unsafe_GetInt () from /usr/local/openjdk8/jre/lib/amd64/server/libjvm.so
#11 0x0000000803e56894 in ?? ()
#12 0x00007fffdfffd960 in ?? ()
#13 0x000000080342f000 in ?? ()
#14 0x00007fffdfffd928 in ?? ()
#15 0x0000000803e56627 in ?? ()
#16 0x0000000803e565e2 in ?? ()
#17 0x00007fffdfffd8e8 in ?? ()
#18 0x0000000e89c7c900 in ?? ()
#19 0x00007fffdfffd960 in ?? ()
#20 0x0000000e89cabfb8 in ?? ()
#21 0x0000000000000000 in ?? ()
> 3 apr. 2016 kl. 10:38 skrev huanghwh <huanghwh at 163.com>:
>
> Hi,
> The simple TestUnsafe.java could can crash jvm under openjdk8-8.77.3 RELEASE version.
> But the debug or fast-debug can pass it.
>
> Has anyone see this problem before?
>
> Cheers,
> Huang Wen Hui
>
> % cat hs_err_pid3911.log
> #
> # A fatal error has been detected by the Java Runtime Environment:
> #
> # SIGSEGV (0xb) at pc=0x00000008020e986d, pid=3911, tid=100110
> #
> # JRE version: OpenJDK Runtime Environment (8.0_77-b03) (build 1.8.0_77-b03)
> # Java VM: OpenJDK 64-Bit Server VM (25.77-b03 mixed mode bsd-amd64 compressed oops)
> # Problematic frame:
> # V [libjvm.so+0x8e986d] JVM_handle_bsd_signal+0x124a5d
> #
> # Core dump written. Default location: /opt/workspace/Test/target/classes/java.core
> #
> # If you would like to submit a bug report, please visit:
> # http://bugreport.java.com/bugreport/crash.jsp
> #
>
> --------------- T H R E A D ---------------
>
> Current thread (0x000000080302a800): JavaThread "main" [_thread_in_vm, id=100110, stack(0x00007fffdfefe000,0x00007fffdfffe000)]
>
> siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000000
>
> Registers:
> RAX=0x000000080258a038, RBX=0x000000095a47c910, RCX=0x0000000960200000, RDX=0x0000000000000000
> RSP=0x00007fffdfffd8d0, RBP=0x00007fffdfffd900, RSI=0x00007fffdfffd9b0, RDI=0x000000080302a9e0
> R8 =0x00000008030124a0, R9 =0x000000080302a800, R10=0x0000000803857868, R11=0x000000080203e830
> R12=0x000000080302a800, R13=0x00000008025b4ab0, R14=0x0000000960200000, R15=0x0000000000000000
> RIP=0x00000008020e986d, EFLAGS=0x0000000000000005, ERR=0x0000000000000004
> TRAPNO=0x000000000000000c
>
> Top of Stack: (sp=0x00007fffdfffd8d0)
> 0x00007fffdfffd8d0: 00000008020e97a0 000000095a47c910
> 0x00007fffdfffd8e0: 0000000812fff000 000000095a47c910
> 0x00007fffdfffd8f0: 00007fffdfffd9b0 000000080302a800
> 0x00007fffdfffd900: 00007fffdfffd978 0000000803857894
> 0x00007fffdfffd910: 00007fffdfffd9b0 000000080302a800
> 0x00007fffdfffd920: 00007fffdfffd978 0000000803857627
> 0x00007fffdfffd930: 00000008038575e2 00007fffdfffd938
> 0x00007fffdfffd940: 000000095a47c910 00007fffdfffd9b0
> 0x00007fffdfffd950: 000000095a4abfc8 0000000000000000
> 0x00007fffdfffd960: 000000095a47c910 0000000000000000
> 0x00007fffdfffd970: 00007fffdfffd998 00007fffdfffda20
> 0x00007fffdfffd980: 0000000803849470 0000000000000000
> 0x00007fffdfffd990: 0000000803851396 0000000960200000
> 0x00007fffdfffd9a0: 00007fffdfffda58 0000000000000000
> 0x00007fffdfffd9b0: 00000008bc1889b8 0000000000000000
> 0x00007fffdfffd9c0: 00000008bc1da728 00000008bc1da728
> 0x00007fffdfffd9d0: 00000008bc1da6f0 00000008bc1a46b8
> 0x00007fffdfffd9e0: 00007fffdfffd9e0 000000095a8004cd
> 0x00007fffdfffd9f0: 00007fffdfffda58 000000095a8005b0
> 0x00007fffdfffda00: 0000000000000000 000000095a800538
> 0x00007fffdfffda10: 00007fffdfffd998 00007fffdfffda58
> 0x00007fffdfffda20: 00007fffdfffdac0 00000008038424e7
> 0x00007fffdfffda30: 0000000000000000 0000000960200000
> 0x00007fffdfffda40: 0000000000000000 00000008bc1889b8
> 0x00007fffdfffda50: 00000008bc1d9c50 00000008bc1d8b80
> 0x00007fffdfffda60: 0000000000001fa0 000000080302a800
> 0x00007fffdfffda70: 000000080302a800 000000095a800538
> 0x00007fffdfffda80: 00007fffdfffde90 0000000000000001
> 0x00007fffdfffda90: 00007fffdfffdb60 00007fffdfffde98
> 0x00007fffdfffdaa0: 000000080000000a 000000095a800538
> 0x00007fffdfffdab0: 0000000803852a20 00007fffdfffdcf0
> 0x00007fffdfffdac0: 00007fffdfffdc30 0000000801dab086
>
> Instructions: (pc=0x00000008020e986d)
> 0x00000008020e984d: 0b 41 f7 44 24 30 00 00 00 30 74 08 4c 89 e7 e8
> 0x00000008020e985d: af e1 fd ff 41 c7 84 24 58 02 00 00 06 00 00 00
> 0x00000008020e986d: 49 8b 07 46 8b 34 30 49 8b 5c 24 48 4c 8b 7b 08
> 0x00000008020e987d: 48 8b 43 10 48 83 38 00 74 19 48 8b 73 28 4c 89
>
> Register to memory mapping:
>
> RAX=0x000000080258a038: JVM_handle_bsd_signal+0x5c5228 in /usr/local/openjdk8/jre/lib/amd64/server/libjvm.so at 0x0000000801800000
> RBX={method} {0x000000095a47c910} 'getInt' '(Ljava/lang/Object;J)I' in 'sun/misc/Unsafe'
> RCX=0x0000000960200000 is an unknown value
> RDX=0x0000000000000000 is an unknown value
> RSP=0x00007fffdfffd8d0 is pointing into the stack for thread: 0x000000080302a800
> RBP=0x00007fffdfffd900 is pointing into the stack for thread: 0x000000080302a800
> RSI=0x00007fffdfffd9b0 is pointing into the stack for thread: 0x000000080302a800
> RDI=0x000000080302a9e0 is an unknown value
> R8 =0x00000008030124a0 is an unknown value
> R9 =0x000000080302a800 is a thread
> R10=0x0000000803857868 is at code_begin+808 in an Interpreter codelet
> method entry point (kind = native) [0x0000000803857540, 0x0000000803857e40] 2304 bytes
> R11=0x000000080203e830: JVM_handle_bsd_signal+0x79a20 in /usr/local/openjdk8/jre/lib/amd64/server/libjvm.so at 0x0000000801800000
> R12=0x000000080302a800 is a thread
> R13=0x00000008025b4ab0: gHotSpotVMLongConstants+0x11f48 in /usr/local/openjdk8/jre/lib/amd64/server/libjvm.so at 0x0000000801800000
> R14=0x0000000960200000 is an unknown value
> R15=0x0000000000000000 is an unknown value
>
>
> Stack: [0x00007fffdfefe000,0x00007fffdfffe000], sp=0x00007fffdfffd8d0, free space=1022k
> Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
> V [libjvm.so+0x8e986d] JVM_handle_bsd_signal+0x124a5d
> j sun.misc.Unsafe.getInt(Ljava/lang/Object;J)I+0
> j test.TestUnsafe.main([Ljava/lang/String;)V+61
> v ~StubRoutines::call_stub
> V [libjvm.so+0x5ab086] AsyncGetCallTrace+0xcf776
> V [libjvm.so+0x5c7f70] AsyncGetCallTrace+0xec660
> V [libjvm.so+0x5cc123] AsyncGetCallTrace+0xf0813
> C [libjli.so+0x4a2b] JLI_Launch+0x25bb
> C [libthr.so.3+0x8814] operator->+0x864
> C 0x0000000000000000
>
> Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
> j sun.misc.Unsafe.getInt(Ljava/lang/Object;J)I+0
> j test.TestUnsafe.main([Ljava/lang/String;)V+61
> v ~StubRoutines::call_stub
>
> --------------- P R O C E S S ---------------
>
> Java Threads: ( => current thread )
> 0x000000095bb2c000 JavaThread "Service Thread" daemon [_thread_blocked, id=101177, stack(0x00007fffdeded000,0x00007fffdeeed000)]
> 0x0000000803030800 JavaThread "C1 CompilerThread3" daemon [_thread_blocked, id=101175, stack(0x00007fffdeeee000,0x00007fffdefee000)]
> 0x000000080302f800 JavaThread "C2 CompilerThread2" daemon [_thread_blocked, id=101174, stack(0x00007fffdefef000,0x00007fffdf0ef000)]
> 0x000000080302f000 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=101172, stack(0x00007fffdf0f0000,0x00007fffdf1f0000)]
> 0x000000080302e000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=101033, stack(0x00007fffdf1f1000,0x00007fffdf2f1000)]
> 0x000000080302d800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=101025, stack(0x00007fffdf2f2000,0x00007fffdf3f2000)]
> 0x000000080302c800 JavaThread "Finalizer" daemon [_thread_blocked, id=101009, stack(0x00007fffdf3f3000,0x00007fffdf4f3000)]
> 0x000000080302c000 JavaThread "Reference Handler" daemon [_thread_blocked, id=101008, stack(0x00007fffdf4f4000,0x00007fffdf5f4000)]
> =>0x000000080302a800 JavaThread "main" [_thread_in_vm, id=100110, stack(0x00007fffdfefe000,0x00007fffdfffe000)]
>
> Other Threads:
> 0x00000008030b6000 VMThread [stack: 0x00007fffdf5f5000,0x00007fffdf6f5000] [id=100992]
> 0x00000008030b6800 WatcherThread [stack: 0x00007fffdecec000,0x00007fffdedec000] [id=101183]
>
> VM state:not at safepoint (normal execution)
>
> VM Mutex/Monitor currently owned by a thread: None
>
> Heap:
> PSYoungGen total 75776K, used 1300K [0x00000008bc180000, 0x00000008c1600000, 0x0000000910a00000)
> eden space 65024K, 2% used [0x00000008bc180000,0x00000008bc2c51f8,0x00000008c0100000)
> from space 10752K, 0% used [0x00000008c0b80000,0x00000008c0b80000,0x00000008c1600000)
> to space 10752K, 0% used [0x00000008c0100000,0x00000008c0100000,0x00000008c0b80000)
> ParOldGen total 173568K, used 0K [0x0000000813000000, 0x000000081d980000, 0x00000008bc180000)
> object space 173568K, 0% used [0x0000000813000000,0x0000000813000000,0x000000081d980000)
> Metaspace used 2464K, capacity 4486K, committed 4864K, reserved 1056768K
> class space used 261K, capacity 386K, committed 512K, reserved 1048576K
>
> Card table byte_map: [0x0000000910a00000,0x00000009111ee000] byte_map_base: 0x000000090c968000
>
> Marking Bits: (ParMarkBitMap*) 0x00000008025b4598
> Begin Bits: [0x0000000911737000, 0x000000091569f000)
> End Bits: [0x000000091569f000, 0x0000000919607000)
>
> Polling page: 0x0000000800627000
>
> CodeCache: size=245760Kb used=1072Kb max_used=1073Kb free=244687Kb
> bounds [0x0000000803842000, 0x0000000803ab2000, 0x0000000812842000]
> total_blobs=237 nmethods=10 adapters=143
> compilation: enabled
>
> Compilation events (10 events):
> Event: 0.138 Thread 0x0000000803030800 6 3 java.lang.String::indexOf (70 bytes)
> Event: 0.139 Thread 0x0000000803030800 nmethod 6 0x0000000803944e90 code [0x0000000803945020, 0x00000008039453c8]
> Event: 0.139 Thread 0x0000000803030800 7 3 java.lang.Math::min (11 bytes)
> Event: 0.139 Thread 0x0000000803030800 nmethod 7 0x0000000803944b10 code [0x0000000803944c80, 0x0000000803944e10]
> Event: 0.139 Thread 0x0000000803030800 8 3 java.lang.String::length (6 bytes)
> Event: 0.139 Thread 0x0000000803030800 nmethod 8 0x0000000803944750 code [0x00000008039448c0, 0x0000000803944a50]
> Event: 0.139 Thread 0x0000000803030800 9 1 java.lang.Object::<init> (1 bytes)
> Event: 0.140 Thread 0x0000000803030800 nmethod 9 0x000000080394ec50 code [0x000000080394eda0, 0x000000080394eed0]
> Event: 0.147 Thread 0x0000000803030800 10 1 java.lang.ref.Reference::get (5 bytes)
> Event: 0.147 Thread 0x0000000803030800 nmethod 10 0x000000080394e390 code [0x000000080394e4e0, 0x000000080394e610]
>
> GC Heap History (0 events):
> No events
>
> Deoptimization events (0 events):
> No events
>
> Internal exceptions (2 events):
> Event: 0.057 Thread 0x000000080302a800 Exception <a 'java/lang/NoSuchMethodError': Method sun.misc.Unsafe.defineClass(Ljava/lang/String;[BII)Ljava/lang/Class; name or signature does not match> (0x00000008bc187cc0) thrown at [/usr/ports/java/openjdk8/work/openjdk/hotspot/src/share/vm/prims/jni.
> Event: 0.057 Thread 0x000000080302a800 Exception <a 'java/lang/NoSuchMethodError': Method sun.misc.Unsafe.prefetchRead(Ljava/lang/Object;J)V name or signature does not match> (0x00000008bc187fa8) thrown at [/usr/ports/java/openjdk8/work/openjdk/hotspot/src/share/vm/prims/jni.cpp, line 3987]
>
> Events (10 events):
> Event: 0.151 loading class sun/reflect/UnsafeQualifiedStaticObjectFieldAccessorImpl
> Event: 0.151 loading class sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl
> Event: 0.151 loading class sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl done
> Event: 0.151 loading class sun/reflect/UnsafeQualifiedStaticObjectFieldAccessorImpl done
> Event: 0.151 loading class java/util/HashMap$EntrySet
> Event: 0.151 loading class java/util/HashMap$EntrySet done
> Event: 0.152 loading class java/util/HashMap$EntryIterator
> Event: 0.152 loading class java/util/HashMap$HashIterator
> Event: 0.152 loading class java/util/HashMap$HashIterator done
> Event: 0.152 loading class java/util/HashMap$EntryIterator done
>
>
> Dynamic libraries:
> 0x0000000000400000 /usr/local/openjdk8/bin/java
> 0x0000000800821000 /usr/local/openjdk8/bin/../lib/amd64/jli/libjli.so
> 0x0000000800a2e000 /lib/libz.so.6
> 0x0000000800c45000 /lib/libthr.so.3
> 0x0000000800e6b000 /lib/libc.so.7
> 0x0000000801800000 /usr/local/openjdk8/jre/lib/amd64/server/libjvm.so
> 0x00000008025d9000 /lib/libm.so.5
> 0x0000000802803000 /usr/lib/libc++.so.1
> 0x0000000802ac2000 /lib/libcxxrt.so.1
> 0x0000000802ce0000 /lib/libgcc_s.so.1
> 0x0000000803200000 /usr/local/openjdk8/jre/lib/amd64/libverify.so
> 0x000000080340f000 /usr/local/openjdk8/jre/lib/amd64/libjava.so
> 0x000000080363a000 /usr/local/openjdk8/jre/lib/amd64/libzip.so
> 0x0000000800600000 /libexec/ld-elf.so.1
>
> VM Arguments:
> java_command: test/TestUnsafe
> java_class_path (initial): .
> Launcher Type: SUN_STANDARD
>
> Environment Variables:
> JAVA_HOME=/usr/local/openjdk8
> PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/home/hwh/bin
> SHELL=/bin/csh
> DISPLAY=unix:0.0
> HOSTTYPE=FreeBSD
> OSTYPE=FreeBSD
> MACHTYPE=x86_64
>
> Signal Handlers:
> SIGSEGV: [libjvm.so+0x91e3d0], sa_mask[0]=11111111111111111111111111111110, sa_flags=SA_RESTART|SA_SIGINFO
> SIGBUS: [libjvm.so+0x91e3d0], sa_mask[0]=11111111111111111111111111111110, sa_flags=SA_RESTART|SA_SIGINFO
> SIGFPE: [libjvm.so+0x7c1fe0], sa_mask[0]=11111111111111111111111111111110, sa_flags=SA_RESTART|SA_SIGINFO
> SIGPIPE: [libjvm.so+0x7c1fe0], sa_mask[0]=11111111111111111111111111111110, sa_flags=SA_RESTART|SA_SIGINFO
> SIGXFSZ: [libjvm.so+0x7c1fe0], sa_mask[0]=11111111111111111111111111111110, sa_flags=SA_RESTART|SA_SIGINFO
> SIGILL: [libjvm.so+0x7c1fe0], sa_mask[0]=11111111111111111111111111111110, sa_flags=SA_RESTART|SA_SIGINFO
> SIGUSR1: SIG_DFL, sa_mask[0]=11111111011111110111111111111111, sa_flags=none
> SIGUSR2: [libjvm.so+0x7c2b50], sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO
> SIGHUP: [libjvm.so+0x7c0530], sa_mask[0]=11111111111111111111111111111110, sa_flags=SA_RESTART|SA_SIGINFO
> SIGINT: [libjvm.so+0x7c0530], sa_mask[0]=11111111111111111111111111111110, sa_flags=SA_RESTART|SA_SIGINFO
> SIGTERM: [libjvm.so+0x7c0530], sa_mask[0]=11111111111111111111111111111110, sa_flags=SA_RESTART|SA_SIGINFO
> SIGQUIT: [libjvm.so+0x7c0530], sa_mask[0]=11111111111111111111111111111110, sa_flags=SA_RESTART|SA_SIGINFO
>
>
> --------------- S Y S T E M ---------------
>
> OS:BSD
> uname:FreeBSD 11.0-CURRENT FreeBSD 11.0-CURRENT #104 r297311M: Sun Mar 27 18:16:04 CST 2016 root at mbp.gddsn.org.cn:/usr/obj/usr/src/sys/MACBOOK amd64
> rlimit: STACK 524288k, CORE infinity, NPROC 19458, NOFILE 467388, AS infinity
> load average:0.37 0.46 0.56
>
> CPU:total 8 (4 cores per cpu, 2 threads per core) family 6 model 70 stepping 1, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2
>
> Memory: 4k page, physical 16618520k(13655112k free), swap 0k(0k free)
>
> vm_info: OpenJDK 64-Bit Server VM (25.77-b03) for bsd-amd64 JRE (1.8.0_77-b03), built on Mar 28 2016 11:28:09 by "root" with gcc 4.2.1 Compatible FreeBSD Clang 3.8.0 (tags/RELEASE_380/final 262564)
>
> time: Sun Apr 3 16:10:21 2016
> elapsed time: 0 seconds (0d 0h 0m 0s)
>
>
>
> public class TestUnsafe {
> public static void main(String[] args) throws Exception {
> java.lang.reflect.Field f = sun.misc.Unsafe.class
> .getDeclaredField("theUnsafe");
> f.setAccessible(true);
> sun.misc.Unsafe unsafe = (sun.misc.Unsafe) f.get(null);
>
> long l = unsafe.allocateMemory(900L * 1024 * 1024);
> System.err.println(l);
> for(int i=0;i<10;i++) {
> System.err.printf("%08X\n", unsafe.getInt(null, l+i));
> }
> }
> }
> _______________________________________________
> freebsd-java at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-java
> To unsubscribe, send any mail to "freebsd-java-unsubscribe at freebsd.org"
More information about the freebsd-java
mailing list