RFR: 8342818: Implement CPU Time Profiling for JFR [v17]

Markus Grönlund mgronlun at openjdk.org
Fri Nov 8 10:02:37 UTC 2024


On Thu, 7 Nov 2024 15:11:00 GMT, Johannes Bechberger <jbechberger at openjdk.org> wrote:

>> This is the code for the [JEP draft: CPU Time based profiling for JFR].
>
> Johannes Bechberger has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Don't treat stackTrace attribute specially for CPUTimeSamples

A fatal error has been detected by the Java Runtime Environment:

 Internal Error (open/src/hotspot/share/runtime/handles.inline.hpp:89), pid=2248310, tid=2248368
  assert(_area->size_in_bytes() > size_in_bytes()) failed: Sanity check

Retrying call stack printing without source information...
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0xc58290]  HandleMark::~HandleMark()+0x110  (handles.inline.hpp:89)
V  [libjvm.so+0xd5cf5c]  JfrAsyncStackTrace::record_async(JavaThread*, frame const&)+0x22c
V  [libjvm.so+0xd5fa34]  JfrCPUTimeThreadSampler::handle_timer_signal(void*)+0x480
V  [libjvm.so+0xd5fbb8]  handle_timer_signal(int, siginfo_t*, void*)+0x68
C  [linux-vdso.so.1+0x8dc]  __kernel_rt_sigreturn+0x0
V  [libjvm.so+0x15e64f4]  ThreadCritical::~ThreadCritical()+0x44
V  [libjvm.so+0x588c34]  Chunk::chop(Chunk*)+0x124
V  [libjvm.so+0x588cb4]  Chunk::next_chop(Chunk*)+0x34
V  [libjvm.so+0x70567c]  HandleMark::pop_and_restore()+0x4c
V  [libjvm.so+0xe85b18]  JVM_FillInStackTrace+0xb8
C  [libjava.so+0x13ee4]  Java_java_lang_Throwable_fillInStackTrace+0x14
J 930  java.lang.Throwable.fillInStackTrace(I)Ljava/lang/Throwable; java.base at 24-internal (0 bytes) @ 0x0000ffff9c3031a0 [0x0000ffff9c303100+0x00000000000000a0]
J 9195 c2 java.lang.ClassNotFoundException.<init>(Ljava/lang/String;)V java.base at 24-internal (7 bytes) @ 0x0000ffff9c6f6b9c [0x0000ffff9c6f6980+0x000000000000021c]
J 3193 c2 jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; java.base at 24-internal (40 bytes) @ 0x0000ffff9c418f58 [0x0000ffff9c418e80+0x00000000000000d8]
j  java.lang.ClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class;+38 java.base at 24-internal
j  java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class;+3 java.base at 24-internal
v  ~StubRoutines::call_stub 0x0000ffff9bd2d190
V  [libjvm.so+0xd19ab4]  JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*)+0x444
V  [libjvm.so+0xd1a150]  JavaCalls::call_virtual(JavaValue*, Klass*, Symbol*, Symbol*, JavaCallArguments*, JavaThread*)+0x2c0
V  [libjvm.so+0xd1a6b8]  JavaCalls::call_virtual(JavaValue*, Handle, Klass*, Symbol*, Symbol*, Handle, JavaThread*)+0x74
V  [libjvm.so+0x1598550]  SystemDictionary::load_instance_class_impl(Symbol*, Handle, JavaThread*)+0x15c
V  [libjvm.so+0x1596614]  SystemDictionary::load_instance_class(Symbol*, Handle, JavaThread*)+0x24
V  [libjvm.so+0x1596e48]  SystemDictionary::resolve_instance_class_or_null(Symbol*, Handle, Handle, JavaThread*)+0x6a8
V  [libjvm.so+0x1597a84]  SystemDictionary::resolve_with_circularity_detection(Symbol*, Symbol*, Handle, Handle, bool, JavaThread*)+0x2f4
V  [libjvm.so+0x83658c]  ClassFileParser::parse_interfaces(ClassFileStream const*, int, ConstantPool*, bool*, JavaThread*)+0x32c
V  [libjvm.so+0x842234]  ClassFileParser::parse_stream(ClassFileStream const*, JavaThread*)+0x834
V  [libjvm.so+0x842780]  ClassFileParser::ClassFileParser(ClassFileStream*, Symbol*, ClassLoaderData*, ClassLoadInfo const*, ClassFileParser::Publicity, JavaThread*)+0x1a0
V  [libjvm.so+0x106f4b8]  KlassFactory::create_from_stream(ClassFileStream*, Symbol*, ClassLoaderData*, ClassLoadInfo const&, JavaThread*)+0xc4
V  [libjvm.so+0x1596400]  SystemDictionary::resolve_class_from_stream(ClassFileStream*, Symbol*, Handle, ClassLoadInfo const&, JavaThread*)+0xa0
V  [libjvm.so+0xe9d9d0]  jvm_define_class_common(char const*, _jobject*, signed char const*, int, _jobject*, char const*, JavaThread*)+0x230
V  [libjvm.so+0xe9dc28]  JVM_DefineClassWithSource+0xa4
C  [libjava.so+0xeb98]  Java_java_lang_ClassLoader_defineClass1+0x118
J 8562  java.lang.ClassLoader.defineClass1(Ljava/lang/ClassLoader;Ljava/lang/String;[BIILjava/security/ProtectionDomain;Ljava/lang/String;)Ljava/lang/Class; java.base at 24-internal (0 bytes) @ 0x0000ffff9c375840 [0x0000ffff9c375740+0x0000000000000100]
j  java.lang.ClassLoader.defineClass(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;+27 java.base at 24-internal
j  java.security.SecureClassLoader.defineClass(Ljava/lang/String;[BIILjava/security/CodeSource;)Ljava/lang/Class;+12 java.base at 24-internal
j  java.net.URLClassLoader.defineClass(Ljava/lang/String;Ljdk/internal/loader/Resource;)Ljava/lang/Class;+220 java.base at 24-internal
j  java.net.URLClassLoader$1.run()Ljava/lang/Class;+43 java.base at 24-internal
j  java.net.URLClassLoader$1.run()Ljava/lang/Object;+1 java.base at 24-internal
j  java.security.AccessController.executePrivileged(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;Ljava/lang/Class;)Ljava/lang/Object;+29 java.base at 24-internal
j  java.security.AccessController.doPrivileged(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;+13 java.base at 24-internal
j  java.net.URLClassLoader.findClass(Ljava/lang/String;)Ljava/lang/Class;+13 java.base at 24-internal
j  java.lang.ClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class;+69 java.base at 24-internal
j  java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class;+3 java.base at 24-internal
v  ~StubRoutines::call_stub 0x0000ffff9bd2d190
V  [libjvm.so+0xd19ab4]  JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*)+0x444
V  [libjvm.so+0xd1a150]  JavaCalls::call_virtual(JavaValue*, Klass*, Symbol*, Symbol*, JavaCallArguments*, JavaThread*)+0x2c0
V  [libjvm.so+0xd1a6b8]  JavaCalls::call_virtual(JavaValue*, Handle, Klass*, Symbol*, Symbol*, Handle, JavaThread*)+0x74
V  [libjvm.so+0x1598550]  SystemDictionary::load_instance_class_impl(Symbol*, Handle, JavaThread*)+0x15c
V  [libjvm.so+0x1596614]  SystemDictionary::load_instance_class(Symbol*, Handle, JavaThread*)+0x24
V  [libjvm.so+0x1596e48]  SystemDictionary::resolve_instance_class_or_null(Symbol*, Handle, Handle, JavaThread*)+0x6a8
V  [libjvm.so+0x1597a84]  SystemDictionary::resolve_with_circularity_detection(Symbol*, Symbol*, Handle, Handle, bool, JavaThread*)+0x2f4
V  [libjvm.so+0x83c1ac]  ClassFileParser::post_process_parsed_stream(ClassFileStream const*, ConstantPool*, JavaThread*)+0x1cc
V  [libjvm.so+0x8428b0]  ClassFileParser::ClassFileParser(ClassFileStream*, Symbol*, ClassLoaderData*, ClassLoadInfo const*, ClassFileParser::Publicity, JavaThread*)+0x2d0
V  [libjvm.so+0x106f4b8]  KlassFactory::create_from_stream(ClassFileStream*, Symbol*, ClassLoaderData*, ClassLoadInfo const&, JavaThread*)+0xc4
V  [libjvm.so+0x1596400]  SystemDictionary::resolve_class_from_stream(ClassFileStream*, Symbol*, Handle, ClassLoadInfo const&, JavaThread*)+0xa0
V  [libjvm.so+0xe9d9d0]  jvm_define_class_common(char const*, _jobject*, signed char const*, int, _jobject*, char const*, JavaThread*)+0x230
V  [libjvm.so+0xe9dc28]  JVM_DefineClassWithSource+0xa4
C  [libjava.so+0xeb98]  Java_java_lang_ClassLoader_defineClass1+0x118
J 8562  java.lang.ClassLoader.defineClass1(Ljava/lang/ClassLoader;Ljava/lang/String;[BIILjava/security/ProtectionDomain;Ljava/lang/String;)Ljava/lang/Class; java.base at 24-internal (0 bytes) @ 0x0000ffff9c375840 [0x0000ffff9c375740+0x0000000000000100]
j  java.lang.ClassLoader.defineClass(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;+27 java.base at 24-internal
j  java.security.SecureClassLoader.defineClass(Ljava/lang/String;[BIILjava/security/CodeSource;)Ljava/lang/Class;+12 java.base at 24-internal
j  java.net.URLClassLoader.defineClass(Ljava/lang/String;Ljdk/internal/loader/Resource;)Ljava/lang/Class;+220 java.base at 24-internal
j  java.net.URLClassLoader$1.run()Ljava/lang/Class;+43 java.base at 24-internal
j  java.net.URLClassLoader$1.run()Ljava/lang/Object;+1 java.base at 24-internal
j  java.security.AccessController.executePrivileged(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;Ljava/lang/Class;)Ljava/lang/Object;+29 java.base at 24-internal
j  java.security.AccessController.doPrivileged(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;+13 java.base at 24-internal
j  java.net.URLClassLoader.findClass(Ljava/lang/String;)Ljava/lang/Class;+13 java.base at 24-internal
j  java.lang.ClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class;+69 java.base at 24-internal
j  java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class;+3 java.base at 24-internal
v  ~StubRoutines::call_stub 0x0000ffff9bd2d190
V  [libjvm.so+0xd19ab4]  JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*)+0x444
V  [libjvm.so+0xd1a150]  JavaCalls::call_virtual(JavaValue*, Klass*, Symbol*, Symbol*, JavaCallArguments*, JavaThread*)+0x2c0
V  [libjvm.so+0xd1a6b8]  JavaCalls::call_virtual(JavaValue*, Handle, Klass*, Symbol*, Symbol*, Handle, JavaThread*)+0x74
V  [libjvm.so+0x1598550]  SystemDictionary::load_instance_class_impl(Symbol*, Handle, JavaThread*)+0x15c
V  [libjvm.so+0x1596614]  SystemDictionary::load_instance_class(Symbol*, Handle, JavaThread*)+0x24
V  [libjvm.so+0x1596e48]  SystemDictionary::resolve_instance_class_or_null(Symbol*, Handle, Handle, JavaThread*)+0x6a8
V  [libjvm.so+0x1597a84]  SystemDictionary::resolve_with_circularity_detection(Symbol*, Symbol*, Handle, Handle, bool, JavaThread*)+0x2f4
V  [libjvm.so+0x83c1ac]  ClassFileParser::post_process_parsed_stream(ClassFileStream const*, ConstantPool*, JavaThread*)+0x1cc
V  [libjvm.so+0x8428b0]  ClassFileParser::ClassFileParser(ClassFileStream*, Symbol*, ClassLoaderData*, ClassLoadInfo const*, ClassFileParser::Publicity, JavaThread*)+0x2d0
V  [libjvm.so+0x106f4b8]  KlassFactory::create_from_stream(ClassFileStream*, Symbol*, ClassLoaderData*, ClassLoadInfo const&, JavaThread*)+0xc4
V  [libjvm.so+0x1596400]  SystemDictionary::resolve_class_from_stream(ClassFileStream*, Symbol*, Handle, ClassLoadInfo const&, JavaThread*)+0xa0
V  [libjvm.so+0xe9d9d0]  jvm_define_class_common(char const*, _jobject*, signed char const*, int, _jobject*, char const*, JavaThread*)+0x230
V  [libjvm.so+0xe9dc28]  JVM_DefineClassWithSource+0xa4

-------------

PR Comment: https://git.openjdk.org/jdk/pull/20752#issuecomment-2464283831


More information about the hotspot-dev mailing list