RFR: 8337789: JEP 509: JFR CPU-Time Profiling (Experimental) [v47]

Kerem Kat krk at openjdk.org
Tue May 13 10:08:05 UTC 2025


On Mon, 5 May 2025 14:22:07 GMT, Johannes Bechberger <jbechberger at openjdk.org> wrote:

>> This is the code for the [JEP draft: CPU Time based profiling for JFR].
>> 
>> Currently tested using [this test suite](https://github.com/parttimenerd/basic-profiler-tests).
>> 
>> A version based on the cooperative sampling JEP can be found [here](https://github.com/parttimenerd/jdk/tree/parttimenerd_cooperative_cpu_time_sampler).
>
> Johannes Bechberger has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Simplify local trace stack

I am hitting an assertion while running renaissance akka tests:


#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/ws/jdk-20752-1/src/hotspot/cpu/x86/frame_x86.cpp:704), pid=900514, tid=900517
#  assert(last_Java_pc() == nullptr) failed: already walkable
#
# JRE version: OpenJDK Runtime Environment (25.0) (fastdebug build 25-internal-adhoc.katkerem.jdk-20752-1)
# Java VM: OpenJDK 64-Bit Server VM (fastdebug 25-internal-adhoc.katkerem.jdk-20752-1, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, serial gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0xdade92]  JavaFrameAnchor::make_walkable()+0xc2
#
# Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E" (or dumping to /home/ubuntu/app/output/core.900514)
#
# If you would like to submit a bug report, please visit:
#   https://bugreport.java.com/bugreport/crash.jsp
#

---------------  S U M M A R Y ------------

Command Line: -Djava.library.path=/home/ubuntu/app/cache/lib -Xms3g -Xmx3g -XX:+UseSerialGC -XX:ErrorFile=/home/ubuntu/app/output/crash_reports/renaissance/hs_err_%p_12-05-2025.log -agentpath:/home/ubuntu/app/cache/async-profiler-4.0-7d4157b-linux-x64/lib/libasyncProfiler.so=start,event=cpu,wall,loop=1m,file=/home/ubuntu/app/output/run_1747059139/profile_%p.jfr /home/ubuntu/app/cache/renaissance-gpl-0.16.0.jar als akka-uct fj-kmeans reactors scala-stm-bench7 -t 600 --no-forced-gc

Host: ip-172-31-48-111, Intel(R) Xeon(R) Platinum 8488C, 64 cores, 123G, Ubuntu 24.04.2 LTS
Time: Mon May 12 16:15:37 2025 UTC elapsed time: 856.310083 seconds (0d 0h 14m 16s)

---------------  T H R E A D  ---------------

Current thread (0x00007fa4e46f1970):  JavaThread "main"             [_thread_in_vm, id=900517, stack(0x00007fa4eb900000,0x00007fa4eba00000) (1024K)]

Stack: [0x00007fa4eb900000,0x00007fa4eba00000],  sp=0x00007fa4eb9fa2d0,  free space=1000k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0xdade92]  JavaFrameAnchor::make_walkable()+0xc2  (frame_x86.cpp:704)
V  [libjvm.so+0xdadee4]  frame::sender_for_entry_frame(RegisterMap*) const+0x44  (frame_x86.cpp:376)
V  [libjvm.so+0xb59f16]  vframeStreamCommon::next()+0x906  (frame_x86.inline.hpp:368)
V  [libjvm.so+0x1094c00]  java_lang_Throwable::fill_in_stack_trace(Handle, methodHandle const&, JavaThread*)+0xfe0  (javaClasses.cpp:2820)
V  [libjvm.so+0x10955fa]  java_lang_Throwable::fill_in_stack_trace(Handle, methodHandle const&)+0x8a  (javaClasses.cpp:2886)
V  [libjvm.so+0x12005c9]  JVM_FillInStackTrace+0xc9  (jvm.cpp:501)
C  [libjava.so+0x13e55]  Java_java_lang_Throwable_fillInStackTrace+0x15  (Throwable.c:49)
J 724  java.lang.Throwable.fillInStackTrace(I)Ljava/lang/Throwable; java.base at 25-internal (0 bytes) @ 0x00007fa4d405f390 [0x00007fa4d405f300+0x0000000000000090]
J 4589 c2 java.lang.ClassNotFoundException.<init>(Ljava/lang/String;)V java.base at 25-internal (7 bytes) @ 0x00007fa4d403cd74 [0x00007fa4d403cc00+0x0000000000000174]
J 5683 c2 java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class; java.base at 25-internal (7 bytes) @ 0x00007fa4d42cfd08 [0x00007fa4d42cf980+0x0000000000000388]
v  ~StubRoutines::call_stub 0x00007fa4d37d0001
V  [libjvm.so+0x1065850]  JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*)+0x4e0  (javaCalls.cpp:415)
V  [libjvm.so+0x1065ed3]  JavaCalls::call_virtual(JavaValue*, Klass*, Symbol*, Symbol*, JavaCallArguments*, JavaThread*)+0x303  (javaCalls.cpp:323)
V  [libjvm.so+0x1066609]  JavaCalls::call_virtual(JavaValue*, Handle, Klass*, Symbol*, Symbol*, Handle, JavaThread*)+0xc9  (javaCalls.cpp:192)
V  [libjvm.so+0x1c28a12]  SystemDictionary::load_instance_class_impl(Symbol*, Handle, JavaThread*)+0x1b2  (systemDictionary.cpp:1272)
V  [libjvm.so+0x1c26b50]  SystemDictionary::load_instance_class(Symbol*, Handle, JavaThread*)+0x20  (systemDictionary.cpp:1303)
V  [libjvm.so+0x1c276f3]  SystemDictionary::resolve_instance_class_or_null(Symbol*, Handle, JavaThread*)+0xa33  (systemDictionary.cpp:697)
V  [libjvm.so+0x1c27c36]  SystemDictionary::resolve_or_fail(Symbol*, Handle, bool, JavaThread*)+0x26  (systemDictionary.cpp:335)
V  [libjvm.so+0xb8e843]  ConstantPool::klass_at_impl(constantPoolHandle const&, int, JavaThread*)+0x183  (constantPool.cpp:700)
V  [libjvm.so+0x104d230]  InterpreterRuntime::_new(JavaThread*, ConstantPool*, int)+0xb0  (constantPool.hpp:387)
j  akka.dispatch.Mailboxes.akka$dispatch$Mailboxes$$_$$anon$superArg$1$1()Lakka/dispatch/MessageQueue;+0
j  akka.dispatch.Mailboxes$$anon$1.<init>(Lakka/dispatch/Mailboxes;)V+19
j  akka.dispatch.Mailboxes.<init>(Lakka/actor/ActorSystem$Settings;Lakka/event/EventStream;Lakka/actor/DynamicAccess;Lakka/actor/ActorRef;)V+31
j  akka.actor.ActorSystemImpl.<init>(Ljava/lang/String;Lcom/typesafe/config/Config;Ljava/lang/ClassLoader;Lscala/Option;Lscala/Option;Lakka/actor/setup/ActorSystemSetup;)V+415
j  akka.actor.ActorSystem$.apply(Ljava/lang/String;Lakka/actor/setup/ActorSystemSetup;)Lakka/actor/ActorSystem;+90
j  akka.actor.ActorSystem$.apply(Ljava/lang/String;Lscala/Option;Lscala/Option;Lscala/Option;)Lakka/actor/ActorSystem;+31
j  akka.actor.ActorSystem$.apply(Ljava/lang/String;Lcom/typesafe/config/Config;)Lakka/actor/ActorSystem;+15
j  edu.rice.habanero.actors.AkkaActorState$.newActorSystem(Ljava/lang/String;)Lakka/actor/ActorSystem;+7
j  edu.rice.habanero.benchmarks.uct.UctAkkaActorBenchmark$UctAkkaActorBenchmark.runIteration()V+5
j  org.renaissance.actors.AkkaUct.run$$anonfun$1(I)V+6
j  org.renaissance.actors.AkkaUct$$Lambda+0x00007fa48d051838.apply$mcVI$sp(I)V+5
j  scala.runtime.java8.JFunction1$mcVI$sp.apply(Ljava/lang/Object;)Ljava/lang/Object;+5
j  scala.collection.immutable.Range.foreach(Lscala/Function1;)V+17
j  org.renaissance.actors.AkkaUct.run(Lorg/renaissance/BenchmarkContext;)Lorg/renaissance/BenchmarkResult;+23
j  org.renaissance.harness.ExecutionDriver.executeOperation(I)J+51
j  org.renaissance.harness.ExecutionDriver.executeBenchmark()V+61
j  org.renaissance.harness.RenaissanceSuite$.runBenchmarks$$anonfun$1(Lorg/renaissance/core/BenchmarkSuite;Lorg/renaissance/harness/EventDispatcher;Lorg/renaissance/Plugin$ExecutionPolicy;JLscala/collection/mutable/Buffer;Lorg/renaissance/core/BenchmarkDescriptor;)V+13
j  org.renaissance.harness.RenaissanceSuite$$$Lambda+0x00007fa48c0f31f8.applyVoid(Ljava/lang/Object;)V+24
j  scala.runtime.function.JProcedure1.apply(Ljava/lang/Object;)Lscala/runtime/BoxedUnit;+2
j  scala.runtime.function.JProcedure1.apply(Ljava/lang/Object;)Ljava/lang/Object;+2
j  scala.collection.immutable.List.foreach(Lscala/Function1;)V+14
j  org.renaissance.harness.RenaissanceSuite$.runBenchmarks(Lorg/renaissance/core/BenchmarkSuite;Lscala/collection/Seq;Lorg/renaissance/Plugin$ExecutionPolicy;Lorg/renaissance/harness/EventDispatcher;)Lscala/collection/Seq;+46
j  org.renaissance.harness.RenaissanceSuite$.main([Ljava/lang/String;)V+657
j  org.renaissance.harness.RenaissanceSuite.main([Ljava/lang/String;)V+4
j  java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(Ljava/lang/Object;Ljava/lang/Object;)V+10 java.base at 25-internal
j  java.lang.invoke.LambdaForm$MH+0x00007fa48c047000.invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+33 java.base at 25-internal
j  java.lang.invoke.Invokers$Holder.invokeExact_MT(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+20 java.base at 25-internal
j  jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+55 java.base at 25-internal
j  jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+23 java.base at 25-internal
j  java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+102 java.base at 25-internal
j  org.renaissance.core.Launcher.loadAndInvokeHarnessClass(Lorg/renaissance/core/ModuleLoader;Ljava/lang/String;[Ljava/lang/String;)V+43
j  org.renaissance.core.Launcher.launchHarnessClass(Ljava/lang/String;[Ljava/lang/String;)V+51
j  org.renaissance.core.Launcher.main([Ljava/lang/String;)V+73
v  ~StubRoutines::call_stub 0x00007fa4d37d0001
V  [libjvm.so+0x1065850]  JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*)+0x4e0  (javaCalls.cpp:415)
V  [libjvm.so+0x11c0b40]  jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, JavaThread*) [clone .constprop.1]+0x410  (jni.cpp:883)
V  [libjvm.so+0x11c4b44]  jni_CallStaticVoidMethod+0x214  (jni.cpp:1712)
C  [libjli.so+0x3fae]  invokeStaticMainWithArgs+0x4e  (java.c:392)
C  [libjli.so+0x5079]  JavaMain+0xef9  (java.c:640)
C  [libjli.so+0x809d]  ThreadJavaMain+0xd  (java_md.c:646)
C  [libc.so.6+0x9caa4]
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
J 724  java.lang.Throwable.fillInStackTrace(I)Ljava/lang/Throwable; java.base at 25-internal (0 bytes) @ 0x00007fa4d405f35e [0x00007fa4d405f300+0x000000000000005e]
J 4589 c2 java.lang.ClassNotFoundException.<init>(Ljava/lang/String;)V java.base at 25-internal (7 bytes) @ 0x00007fa4d403cd74 [0x00007fa4d403cc00+0x0000000000000174]
J 5683 c2 java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class; java.base at 25-internal (7 bytes) @ 0x00007fa4d42cfd08 [0x00007fa4d42cf980+0x0000000000000388]
v  ~StubRoutines::call_stub 0x00007fa4d37d0001
j  akka.dispatch.Mailboxes.akka$dispatch$Mailboxes$$_$$anon$superArg$1$1()Lakka/dispatch/MessageQueue;+0
j  akka.dispatch.Mailboxes$$anon$1.<init>(Lakka/dispatch/Mailboxes;)V+19
j  akka.dispatch.Mailboxes.<init>(Lakka/actor/ActorSystem$Settings;Lakka/event/EventStream;Lakka/actor/DynamicAccess;Lakka/actor/ActorRef;)V+31
j  akka.actor.ActorSystemImpl.<init>(Ljava/lang/String;Lcom/typesafe/config/Config;Ljava/lang/ClassLoader;Lscala/Option;Lscala/Option;Lakka/actor/setup/ActorSystemSetup;)V+415
j  akka.actor.ActorSystem$.apply(Ljava/lang/String;Lakka/actor/setup/ActorSystemSetup;)Lakka/actor/ActorSystem;+90
j  akka.actor.ActorSystem$.apply(Ljava/lang/String;Lscala/Option;Lscala/Option;Lscala/Option;)Lakka/actor/ActorSystem;+31
j  akka.actor.ActorSystem$.apply(Ljava/lang/String;Lcom/typesafe/config/Config;)Lakka/actor/ActorSystem;+15
j  edu.rice.habanero.actors.AkkaActorState$.newActorSystem(Ljava/lang/String;)Lakka/actor/ActorSystem;+7
j  edu.rice.habanero.benchmarks.uct.UctAkkaActorBenchmark$UctAkkaActorBenchmark.runIteration()V+5
j  org.renaissance.actors.AkkaUct.run$$anonfun$1(I)V+6
j  org.renaissance.actors.AkkaUct$$Lambda+0x00007fa48d051838.apply$mcVI$sp(I)V+5
j  scala.runtime.java8.JFunction1$mcVI$sp.apply(Ljava/lang/Object;)Ljava/lang/Object;+5
j  scala.collection.immutable.Range.foreach(Lscala/Function1;)V+17
j  org.renaissance.actors.AkkaUct.run(Lorg/renaissance/BenchmarkContext;)Lorg/renaissance/BenchmarkResult;+23
j  org.renaissance.harness.ExecutionDriver.executeOperation(I)J+51
j  org.renaissance.harness.ExecutionDriver.executeBenchmark()V+61
j  org.renaissance.harness.RenaissanceSuite$.runBenchmarks$$anonfun$1(Lorg/renaissance/core/BenchmarkSuite;Lorg/renaissance/harness/EventDispatcher;Lorg/renaissance/Plugin$ExecutionPolicy;JLscala/collection/mutable/Buffer;Lorg/renaissance/core/BenchmarkDescriptor;)V+13
j  org.renaissance.harness.RenaissanceSuite$$$Lambda+0x00007fa48c0f31f8.applyVoid(Ljava/lang/Object;)V+24
j  scala.runtime.function.JProcedure1.apply(Ljava/lang/Object;)Lscala/runtime/BoxedUnit;+2
j  scala.runtime.function.JProcedure1.apply(Ljava/lang/Object;)Ljava/lang/Object;+2
j  scala.collection.immutable.List.foreach(Lscala/Function1;)V+14
j  org.renaissance.harness.RenaissanceSuite$.runBenchmarks(Lorg/renaissance/core/BenchmarkSuite;Lscala/collection/Seq;Lorg/renaissance/Plugin$ExecutionPolicy;Lorg/renaissance/harness/EventDispatcher;)Lscala/collection/Seq;+46
j  org.renaissance.harness.RenaissanceSuite$.main([Ljava/lang/String;)V+657
j  org.renaissance.harness.RenaissanceSuite.main([Ljava/lang/String;)V+4
j  java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(Ljava/lang/Object;Ljava/lang/Object;)V+10 java.base at 25-internal
j  java.lang.invoke.LambdaForm$MH+0x00007fa48c047000.invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+33 java.base at 25-internal
j  java.lang.invoke.Invokers$Holder.invokeExact_MT(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+20 java.base at 25-internal
j  jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+55 java.base at 25-internal
j  jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+23 java.base at 25-internal
j  java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+102 java.base at 25-internal
j  org.renaissance.core.Launcher.loadAndInvokeHarnessClass(Lorg/renaissance/core/ModuleLoader;Ljava/lang/String;[Ljava/lang/String;)V+43
j  org.renaissance.core.Launcher.launchHarnessClass(Ljava/lang/String;[Ljava/lang/String;)V+51
j  org.renaissance.core.Launcher.main([Ljava/lang/String;)V+73
v  ~StubRoutines::call_stub 0x00007fa4d37d0001

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

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


More information about the hotspot-dev mailing list