I've recently tried to profile a Java application with the Sun Studio Performance Analyzer on a solaris_x86 machine. The command line I've used was
collect -j on java -Xcomp <app>
Profiling failed due to a segmentation fault in what seems to be caused by stack walking:
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0xffff80ff4939ec65, pid=7477, tid=2
#
Stack: [0xffff80ffbed4f000,0xffff80ffbee4f000], sp=0xffff80ffbee47b28, free space=994k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C 0xffff80ff4939ec65
V [libjvm.so+0x1cda89f] int Method::bci_from(unsigned char*)const+0x7f
V [libjvm.so+0x1cda9a3] int Method::validate_bci_from_bcp(unsigned char*)const+0x63
V [libjvm.so+0x15ab8bc] bool frame::is_interpreted_frame_valid(JavaThread*)const+0xbc
V [libjvm.so+0x15a9efa] bool frame::safe_for_sender(JavaThread*)+0x31a
V [libjvm.so+0x159816a] void forte_fill_call_trace_given_top(JavaThread*,ASGCT_CallTrace*,int,frame)+0x5ba
V [libjvm.so+0x1598b23] AsyncGetCallTrace+0x243
C [libcollector.so+0x30905] __collector_ext_jstack_unwind+0x115
C [libcollector.so+0x3123a] __collector_get_frame_info_walk+0x26a
C [libcollector.so+0x3e4f8] __collector_getUserCtx+0x28
C [libcollector.so+0x1f22c] __collector_ext_profile_handler+0x13c
C [libcollector.so+0x19f3f] collector_sigprof_dispatcher+0x6f
C [libc.so.1+0x122476] __sighndlr+0x6
C [libc.so.1+0x115972] call_user_handler+0x2ce
C [libc.so.1+0x115e1b] sigacthandler+0xdb
C 0xffffffffffffffff
V [libjvm.so+0x1edb3b5] char*ResourceArea::allocate_bytes(unsigned long,AllocFailStrategy::AllocFailEnum)+0x185
V [libjvm.so+0x1d51242] void nmethod::check_all_dependencies(DepChange&)+0x362
V [libjvm.so+0x13a242f] int CodeCache::mark_for_deoptimization(KlassDepChange&)+0x10f
V [libjvm.so+0x13a324a] void CodeCache::flush_dependents_on(instanceKlassHandle)+0x6a
V [libjvm.so+0x1fff88f] void SystemDictionary::add_to_hierarchy(instanceKlassHandle,Thread*)+0x6f
V [libjvm.so+0x1ffc070] Klass*SystemDictionary::parse_stream(Symbol*,Handle,Handle,ClassFileStream*,const Klass*,GrowableArray<Handle>*,Thread*)+0x390
V [libjvm.so+0x20a11fc] instanceKlassHandle Unsafe_DefineAnonymousClass_impl(JNIEnv_*,_jclass*,_jbyteArray*,_jobjectArray*,unsigned char**,Thread*)+0x84c
V [libjvm.so+0x20a179c] Unsafe_DefineAnonymousClass0+0x1fc
J 1952 java.base@9-internal9-internal (0 bytes) @ 0xffff80ff982f3f31 [0xffff80ff982f3dc0+0x0000000000000171]
J 2046 C1 java.base@9-internal9-internal (103 bytes) @ 0xffff80ff91432924 [0xffff80ff91432240+0x00000000000006e4]
J 2097 C1 java.base@9-internal9-internal (106 bytes) @ 0xffff80ff9146de74 [0xffff80ff9146dde0+0x0000000000000094]
J 2048 C2 java.base@9-internal9-internal (37 bytes) @ 0xffff80ff982fe294 [0xffff80ff982fdf40+0x0000000000000354]
J 2096 C1 java.base@9-internal9-internal (32 bytes) @ 0xffff80ff9146d88c [0xffff80ff9146d820+0x000000000000006c]
J 2893 C2 java.base@9-internal9-internal (84 bytes) @ 0xffff80ff983809e4 [0xffff80ff983809a0+0x0000000000000044]
j java.lang.invoke.BoundMethodHandle$Species_L13.make(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;\
Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
[error occurred during error reporting (printing native stack), id 0xb]
The problem is reproducable roughly once in 100 runs.
collect -j on java -Xcomp <app>
Profiling failed due to a segmentation fault in what seems to be caused by stack walking:
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0xffff80ff4939ec65, pid=7477, tid=2
#
Stack: [0xffff80ffbed4f000,0xffff80ffbee4f000], sp=0xffff80ffbee47b28, free space=994k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C 0xffff80ff4939ec65
V [libjvm.so+0x1cda89f] int Method::bci_from(unsigned char*)const+0x7f
V [libjvm.so+0x1cda9a3] int Method::validate_bci_from_bcp(unsigned char*)const+0x63
V [libjvm.so+0x15ab8bc] bool frame::is_interpreted_frame_valid(JavaThread*)const+0xbc
V [libjvm.so+0x15a9efa] bool frame::safe_for_sender(JavaThread*)+0x31a
V [libjvm.so+0x159816a] void forte_fill_call_trace_given_top(JavaThread*,ASGCT_CallTrace*,int,frame)+0x5ba
V [libjvm.so+0x1598b23] AsyncGetCallTrace+0x243
C [libcollector.so+0x30905] __collector_ext_jstack_unwind+0x115
C [libcollector.so+0x3123a] __collector_get_frame_info_walk+0x26a
C [libcollector.so+0x3e4f8] __collector_getUserCtx+0x28
C [libcollector.so+0x1f22c] __collector_ext_profile_handler+0x13c
C [libcollector.so+0x19f3f] collector_sigprof_dispatcher+0x6f
C [libc.so.1+0x122476] __sighndlr+0x6
C [libc.so.1+0x115972] call_user_handler+0x2ce
C [libc.so.1+0x115e1b] sigacthandler+0xdb
C 0xffffffffffffffff
V [libjvm.so+0x1edb3b5] char*ResourceArea::allocate_bytes(unsigned long,AllocFailStrategy::AllocFailEnum)+0x185
V [libjvm.so+0x1d51242] void nmethod::check_all_dependencies(DepChange&)+0x362
V [libjvm.so+0x13a242f] int CodeCache::mark_for_deoptimization(KlassDepChange&)+0x10f
V [libjvm.so+0x13a324a] void CodeCache::flush_dependents_on(instanceKlassHandle)+0x6a
V [libjvm.so+0x1fff88f] void SystemDictionary::add_to_hierarchy(instanceKlassHandle,Thread*)+0x6f
V [libjvm.so+0x1ffc070] Klass*SystemDictionary::parse_stream(Symbol*,Handle,Handle,ClassFileStream*,const Klass*,GrowableArray<Handle>*,Thread*)+0x390
V [libjvm.so+0x20a11fc] instanceKlassHandle Unsafe_DefineAnonymousClass_impl(JNIEnv_*,_jclass*,_jbyteArray*,_jobjectArray*,unsigned char**,Thread*)+0x84c
V [libjvm.so+0x20a179c] Unsafe_DefineAnonymousClass0+0x1fc
J 1952 java.base@9-internal9-internal (0 bytes) @ 0xffff80ff982f3f31 [0xffff80ff982f3dc0+0x0000000000000171]
J 2046 C1 java.base@9-internal9-internal (103 bytes) @ 0xffff80ff91432924 [0xffff80ff91432240+0x00000000000006e4]
J 2097 C1 java.base@9-internal9-internal (106 bytes) @ 0xffff80ff9146de74 [0xffff80ff9146dde0+0x0000000000000094]
J 2048 C2 java.base@9-internal9-internal (37 bytes) @ 0xffff80ff982fe294 [0xffff80ff982fdf40+0x0000000000000354]
J 2096 C1 java.base@9-internal9-internal (32 bytes) @ 0xffff80ff9146d88c [0xffff80ff9146d820+0x000000000000006c]
J 2893 C2 java.base@9-internal9-internal (84 bytes) @ 0xffff80ff983809e4 [0xffff80ff983809a0+0x0000000000000044]
j java.lang.invoke.BoundMethodHandle$Species_L13.make(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;\
Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
[error occurred during error reporting (printing native stack), id 0xb]
The problem is reproducable roughly once in 100 runs.
- blocks
-
JDK-8153167 Allow stack walking pass through method handle intrinsic frames
- Open
- relates to
-
JDK-8168445 make pd_get_top_frame_for_profiling more robust
- Open
-
JDK-8166087 Desire x86 ud2 instruction to indicate end of code block
- Closed