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