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