Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8315980

serviceability/jvmti/stress/StackTrace/NotSuspended/GetStackTraceNotSuspendedStressTest.java

XMLWordPrintable

      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?

            sspitsyn Serguei Spitsyn
            alanb Alan Bateman
            Votes:
            0 Vote for this issue
            Watchers:
            10 Start watching this issue

              Created:
              Updated: