-
Bug
-
Resolution: Unresolved
-
P3
-
21, 22, 24
This test failed once for me with -Xcomp -XX:CompileThreshold=100 -XX:+UnlockExperimentalVMOptions -server -XX:+TieredCompilation -XX:+DeoptimizeALot. The output is
Agent_OnLoad started
Agent_OnLoad finished
Synchronization point checkStatus(0) called.
Data 0x7f56d4020840 0x7f56d4035150
Agent: wait for thread to start
Agent: started
Agent: Stacktrace of virtual thread is incorrect: doesn't start from enter(...):
JVMTI Stack Trace: frame count: 8
0: java/lang/VirtualThread: runContinuation()V
1: java/lang/VirtualThread$$Lambda.0x00007f56630502e0: run()V
2: java/util/concurrent/ForkJoinTask$RunnableExecuteAction: exec()Z
3: java/util/concurrent/ForkJoinTask: doExec()I
4: java/util/concurrent/ForkJoinPool$WorkQueue: topLevelExec(Ljava/util/concurrent/ForkJoinTask;Ljava/util/concurrent/ForkJoinPool$WorkQueue;)V
5: java/util/concurrent/ForkJoinPool: scan(Ljava/util/concurrent/ForkJoinPool$WorkQueue;II)I
6: java/util/concurrent/ForkJoinPool: runWorker(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)V
7: java/util/concurrent/ForkJoinWorkerThread: run()V
FATAL ERROR in native method: incorrect stacktrace
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0xf87652] jni_FatalError+0x92 (jni.cpp:631)
C [libGetStackTraceNotSuspendedStress.so+0x2899] test_stack_trace(_jvmtiEnv*, JNIEnv_*, _jobject*)+0x139 (jni.h:844)
C [libGetStackTraceNotSuspendedStress.so+0x3595] agentProc(_jvmtiEnv*, JNIEnv_*, void*)+0x105 (libGetStackTraceNotSuspendedStress.cpp:104)
C [libGetStackTraceNotSuspendedStress.so+0x2252] agent_thread_wrapper+0x32 (jvmti_thread.h:179)
V [libjvm.so+0x11a1df9] JvmtiAgentThread::call_start_function()+0x59 (jvmtiImpl.cpp:89)
V [libjvm.so+0xeb7d9c] JavaThread::thread_main_inner()+0xcc (javaThread.cpp:720)
V [libjvm.so+0x17a398a] Thread::call_run()+0xba (thread.cpp:220)
V [libjvm.so+0x14a471a] thread_native_entry(Thread*)+0x12a (os_linux.cpp:786)
If I read the test output correctly, it has printed the stack trace of the carrier thread (not the virtual thread). It is possible that calling GetStackTrace during a transition will return the stack trace of the carrier?
Agent_OnLoad started
Agent_OnLoad finished
Synchronization point checkStatus(0) called.
Data 0x7f56d4020840 0x7f56d4035150
Agent: wait for thread to start
Agent: started
Agent: Stacktrace of virtual thread is incorrect: doesn't start from enter(...):
JVMTI Stack Trace: frame count: 8
0: java/lang/VirtualThread: runContinuation()V
1: java/lang/VirtualThread$$Lambda.0x00007f56630502e0: run()V
2: java/util/concurrent/ForkJoinTask$RunnableExecuteAction: exec()Z
3: java/util/concurrent/ForkJoinTask: doExec()I
4: java/util/concurrent/ForkJoinPool$WorkQueue: topLevelExec(Ljava/util/concurrent/ForkJoinTask;Ljava/util/concurrent/ForkJoinPool$WorkQueue;)V
5: java/util/concurrent/ForkJoinPool: scan(Ljava/util/concurrent/ForkJoinPool$WorkQueue;II)I
6: java/util/concurrent/ForkJoinPool: runWorker(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)V
7: java/util/concurrent/ForkJoinWorkerThread: run()V
FATAL ERROR in native method: incorrect stacktrace
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0xf87652] jni_FatalError+0x92 (jni.cpp:631)
C [libGetStackTraceNotSuspendedStress.so+0x2899] test_stack_trace(_jvmtiEnv*, JNIEnv_*, _jobject*)+0x139 (jni.h:844)
C [libGetStackTraceNotSuspendedStress.so+0x3595] agentProc(_jvmtiEnv*, JNIEnv_*, void*)+0x105 (libGetStackTraceNotSuspendedStress.cpp:104)
C [libGetStackTraceNotSuspendedStress.so+0x2252] agent_thread_wrapper+0x32 (jvmti_thread.h:179)
V [libjvm.so+0x11a1df9] JvmtiAgentThread::call_start_function()+0x59 (jvmtiImpl.cpp:89)
V [libjvm.so+0xeb7d9c] JavaThread::thread_main_inner()+0xcc (javaThread.cpp:720)
V [libjvm.so+0x17a398a] Thread::call_run()+0xba (thread.cpp:220)
V [libjvm.so+0x14a471a] thread_native_entry(Thread*)+0x12a (os_linux.cpp:786)
If I read the test output correctly, it has printed the stack trace of the carrier thread (not the virtual thread). It is possible that calling GetStackTrace during a transition will return the stack trace of the carrier?
- relates to
-
JDK-8345427 Crash in serviceability/jvmti/stress/StackTrace/NotSuspended/GetStackTraceNotSuspendedStressTest.java
-
- Open
-