JDK-8347463 : jdk/jfr/threading/TestManyVirtualThreads.java crashes with assert(oopDesc::is_oop_or_null(val))
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 19,21,24,25,26
  • Priority: P3
  • Status: Open
  • Resolution: Unresolved
  • Submitted: 2025-01-10
  • Updated: 2025-05-06
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 26
26Unresolved
Related Reports
Relates :  
Relates :  
Description
Test 
jdk/jfr/threading/TestManyVirtualThreads.java
crashed when executed with 
'-ea -esa -XX:CompileThreshold=100 -XX:+UnlockExperimentalVMOptions -server -XX:-TieredCompilation -XX:+DeoptimizeALot'

The hs_err is
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/opt/mach5/mesos/work_dir/slaves/b733f181-520a-4536-86fc-7df55263c942-S3227/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/40fa7cdb-9e8b-4618-9df4-4c058b21d234/runs/10caaef4-f70b-4aaf-bd26-9ce356201ff0/workspace/open/src/hotspot/share/runtime/stackValue.cpp:137), pid=2572820, tid=2572953
#  assert(oopDesc::is_oop_or_null(val)) failed: bad oop found at 0x0000ffff26c07c98 in_cont: 0 compressed: 0
#
# JRE version: Java(TM) SE Runtime Environment (25.0) (fastdebug build 25-internal-LTS-2025-01-08-2039478.leonid.mesnik.jdk-jfr-comp)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 25-internal-LTS-2025-01-08-2039478.leonid.mesnik.jdk-jfr-comp, mixed mode, sharing, compressed oops, compressed class ptrs, g1 gc, linux-aarch64)
# Problematic frame:
# V  [libjvm.so+0x1518994]  StackValue::create_stack_value_from_oop_location(stackChunkOop, void*)+0x4f4
...
Current thread (0x0000ffff08001c80):  JavaThread "ForkJoinPool-1-worker-2" daemon [_thread_in_Java, id=2572953, stack(0x0000ffff26a0c000,0x0000ffff26c0a000) (2040K)]

Stack: [0x0000ffff26a0c000,0x0000ffff26c0a000],  sp=0x0000ffff26c06570,  free space=2025k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x1518994]  StackValue::create_stack_value_from_oop_location(stackChunkOop, void*)+0x4f4  (stackValue.cpp:137)
V  [libjvm.so+0x151b260]  StackValue* StackValue::create_stack_value<RegisterMap>(ScopeValue*, unsigned char*, RegisterMap const*)+0x310  (stackValue.cpp:203)
V  [libjvm.so+0x16de444]  compiledVFrame::create_stack_value(ScopeValue*) const+0x100  (vframe_hp.cpp:226)
V  [libjvm.so+0x16e0a80]  compiledVFrame::locals() const+0x110  (vframe_hp.cpp:62)
V  [libjvm.so+0x16daa90]  vframeArrayElement::fill_in(compiledVFrame*, bool)+0x110  (vframeArray.cpp:124)
V  [libjvm.so+0x16dc454]  vframeArray::fill_in(JavaThread*, int, GrowableArray<compiledVFrame*>*, RegisterMap const*, bool)+0x70  (vframeArray.cpp:530)
V  [libjvm.so+0x16dc65c]  vframeArray::allocate(JavaThread*, int, GrowableArray<compiledVFrame*>*, RegisterMap*, frame, frame, frame, bool)+0xdc  (vframeArray.cpp:517)
V  [libjvm.so+0x9d2060]  Deoptimization::create_vframeArray(JavaThread*, frame, RegisterMap*, GrowableArray<compiledVFrame*>*, bool)+0x110  (deoptimization.cpp:1697)
V  [libjvm.so+0x9d5198]  Deoptimization::fetch_unroll_info_helper(JavaThread*, int)+0x468  (deoptimization.cpp:567)
V  [libjvm.so+0x9d62a8]  Deoptimization::uncommon_trap(JavaThread*, int, int)+0x38  (deoptimization.cpp:2616)
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
v  ~UncommonTrapBlob 0x0000ffff807f00ac
J 1605 c2 jdk.jfr.internal.event.EventWriter.beginEvent(Ljdk/jfr/internal/event/EventConfiguration;J)Z jdk.jfr@25-internal (46 bytes) @ 0x0000ffff80a93b7c [0x0000ffff80a93880+0x00000000000002fc]
j  jdk.jfr.threading.TestManyVirtualThreads$TestEvent.commit()V+64
j  jdk.jfr.threading.TestManyVirtualThreads.emitEvent()V+9
j  jdk.jfr.threading.TestManyVirtualThreads$$Lambda+0x0000600001008c00.run()V+0
j  java.lang.Thread.runWith(Ljava/lang/Object;Ljava/lang/Runnable;)V+5 java.base@25-internal
j  java.lang.VirtualThread.run(Ljava/lang/Runnable;)V+62 java.base@25-internal
j  java.lang.VirtualThread$VThreadContinuation$1.run()V+15 java.base@25-internal
j  jdk.internal.vm.Continuation.enter0()V+4 java.base@25-internal
j  jdk.internal.vm.Continuation.enter(Ljdk/internal/vm/Continuation;Z)V+1 java.base@25-internal
J 264  jdk.internal.vm.Continuation.enterSpecial(Ljdk/internal/vm/Continuation;ZZ)V java.base@25-internal (0 bytes) @ 0x0000ffff8085cc98 [0x0000ffff8085cb80+0x0000000000000118]
J 1569 c2 jdk.internal.vm.Continuation.run()V java.base@25-internal (586 bytes) @ 0x0000ffff80a468f8 [0x0000ffff80a46780+0x0000000000000178]
J 1555 c2 java.lang.VirtualThread.runContinuation()V java.base@25-internal (160 bytes) @ 0x0000ffff80a49308 [0x0000ffff80a49140+0x00000000000001c8]
J 1529 c2 java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Ljava/util/concurrent/ForkJoinTask;I)V java.base@25-internal (18 bytes) @ 0x0000ffff809f3c78 [0x0000ffff809f3ac0+0x00000000000001b8]
j  java.util.concurrent.ForkJoinPool.runWorker(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)V+362 java.base@25-internal
j  java.util.concurrent.ForkJoinWorkerThread.run()V+31 java.base@25-internal
v  ~StubRoutines::call_stub 0x0000ffff80719190
Registers:
R0=0x0000ffff94c30000
R1=0x0000000000000058
R2=0x0000ffff60000000
R3=0x0000000000000014
R4=0x0000000000000d00
R5=0x0000000000000000
R6=0x0000000000000084
R7=0x0000000000000001
R8=0x0000000000000001
R9=0x0000ffff38b43b6b
R10=0x00000000000002cb
R11=0x0000ffff94993f90
R12=0x000000000003cf38
R13=0x000000000000270f
R14=0x0000000000000002
R15=0x0000000000000830
R16=0x0000ffff948ba730
R17=0x0000ffff949ebbc0
R18=0x0000000000000002
R19=0x0000ffff9499b840
R20=0x0000ffff949446d6
R21=0x0000ffff94938a00
R22=0x0000ffff26c07c98
R23=0x0000ffff26c06630
R24=0x0000ffff26c065d8
R25=0x0000000000000000
R26=0x0000ffff26c066a0
R27=0x0000fffef80d0878
R28=0x0000ffff08002560
R29=0x0000ffff26c06570
R30=0x0000ffff93f03860


Register to memory mapping:

R0 =0x0000ffff94c30000 in mmap'd memory region [0x0000ffff94c30000 - 0x0000ffff94c31000], tag mtInternal
R1 =0x0000000000000058 is an unknown value
R2 =0x0000ffff60000000 is pointing into metadata
R3 =0x0000000000000014 is an unknown value
R4 =0x0000000000000d00 is an unknown value
R5 =0x0 is null
R6 =0x0000000000000084 is an unknown value
R7 =0x0000000000000001 is an unknown value
R8 =0x0000000000000001 is an unknown value
R9 =0x0000ffff38b43b6b into live malloced block starting at 0x0000ffff38b431b0, size 2776, tag mtCode
R10=0x00000000000002cb is an unknown value
R11=0x0000ffff94993f90: <offset 0x0000000001fa8f90> in /opt/mach5/mesos/work_dir/jib-master/install/2025-01-08-2039478.leonid.mesnik.jdk-jfr-comp/linux-aarch64-debug.jdk/jdk-25/fastdebug/lib/server/libjvm.so at 0x0000ffff929eb000
R12=0x000000000003cf38 is an unknown value
R13=0x000000000000270f is an unknown value
R14=0x0000000000000002 is an unknown value
R15=0x0000000000000830 is an unknown value
R16=0x0000ffff948ba730: <offset 0x0000000001ecf730> in /opt/mach5/mesos/work_dir/jib-master/install/2025-01-08-2039478.leonid.mesnik.jdk-jfr-comp/linux-aarch64-debug.jdk/jdk-25/fastdebug/lib/server/libjvm.so at 0x0000ffff929eb000
R17=0x0000ffff949ebbc0: <offset 0x0000000000022bc0> in /lib64/libc.so.6 at 0x0000ffff949c9000
R18=0x0000000000000002 is an unknown value
R19=0x0000ffff9499b840: <offset 0x0000000001fb0840> in /opt/mach5/mesos/work_dir/jib-master/install/2025-01-08-2039478.leonid.mesnik.jdk-jfr-comp/linux-aarch64-debug.jdk/jdk-25/fastdebug/lib/server/libjvm.so at 0x0000ffff929eb000
R20=0x0000ffff949446d6: <offset 0x0000000001f596d6> in /opt/mach5/mesos/work_dir/jib-master/install/2025-01-08-2039478.leonid.mesnik.jdk-jfr-comp/linux-aarch64-debug.jdk/jdk-25/fastdebug/lib/server/libjvm.so at 0x0000ffff929eb000
R21=0x0000ffff94938a00: <offset 0x0000000001f4da00> in /opt/mach5/mesos/work_dir/jib-master/install/2025-01-08-2039478.leonid.mesnik.jdk-jfr-comp/linux-aarch64-debug.jdk/jdk-25/fastdebug/lib/server/libjvm.so at 0x0000ffff929eb000
R22=0x0000ffff26c07c98 is pointing into the stack for thread: 0x0000ffff08001c80
R23=0x0000ffff26c06630 is pointing into the stack for thread: 0x0000ffff08001c80
R24=0x0000ffff26c065d8 is pointing into the stack for thread: 0x0000ffff08001c80
R25=0x0 is null
R26=0x0000ffff26c066a0 is pointing into the stack for thread: 0x0000ffff08001c80
R27=0x0000fffef80d0878 into live malloced block starting at 0x0000fffef80d0070, size 32744, tag mtChunk
R28=0x0000ffff08002560 into live malloced block starting at 0x0000ffff08002550, size 1000, tag mtChunk
R29=0x0000ffff26c06570 is pointing into the stack for thread: 0x0000ffff08001c80
R30=0x0000ffff93f03860: <offset 0x0000000001518860> in /opt/mach5/mesos/work_dir/jib-master/install/2025-01-08-2039478.leonid.mesnik.jdk-jfr-comp/linux-aarch64-debug.jdk/jdk-25/fastdebug/lib/server/libjvm.so at 0x0000ffff929eb000
R31=0x0000ffff26c06570 is pointing into the stack for thread: 0x0000ffff08001c80

Top of Stack: (sp=0x0000ffff26c06570)
0x0000ffff26c06570:   0000ffff26c065e0 0000ffff93f06260   .e.&....`b......
0x0000ffff26c06580:   0000ffff26c06630 0000fffef80d00d0   0f.&............
0x0000ffff26c06590:   0000ffff949446d6 0000ffff26c07c98   .F.......|.&....
0x0000ffff26c065a0:   0000fffef80d08d0 0000ffff26c066a8   .........f.&....
0x0000ffff26c065b0:   00000000ffffffff 0000ffff26c066a0   .........f.&....
0x0000ffff26c065c0:   00000000ece152f0 0000000000000000   .R..............
0x0000ffff26c065d0:   00000000ffffffff 00000000ece152f0   .........R......
0x0000ffff26c065e0:   0000ffff26c06640 0000ffff940c9444   @f.&....D.......
0x0000ffff26c065f0:   0000ffff949446d6 0000fffef80d00d0   .F..............
0x0000ffff26c06600:   0000fffef80d0080 0000ffff9499b840   ........@.......
0x0000ffff26c06610:   0000fffef80d08d0 0000000000000000   ................
0x0000ffff26c06620:   0000ffff000000c2 0000000000000000   ................
0x0000ffff26c06630:   0000000000000000 0000000000000000   ................
0x0000ffff26c06640:   0000ffff26c066b0 0000ffff940cba80   .f.&............
0x0000ffff26c06650:   0000fffef80d0958 0000000000000000   X...............
0x0000ffff26c06660:   0000fffef80d0080 0000fffef80d0950   ........P.......
0x0000ffff26c06670:   0000000000000004 0000ffff94938a00   ................
0x0000ffff26c06680:   0000000000000001 0000000000000020   ........ .......
0x0000ffff26c06690:   0000fffef80d0958 0000000000000000   X...............
0x0000ffff26c066a0:   0000000000000000 0000000000000000   ................
0x0000ffff26c066b0:   0000ffff26c06720 0000ffff940c5a90    g.&.....Z......
0x0000ffff26c066c0:   0000ffff94938a00 0000fffef842dea8   ..........B.....
0x0000ffff26c066d0:   0000ffff08001c80 0000000000000001   ................
0x0000ffff26c066e0:   0000ffff08002560 0000fffef842df20   `%...... .B.....
0x0000ffff26c066f0:   0000000000000000 0000ffff08001c80   ................
0x0000ffff26c06700:   0000fffef80d0858 0000ffff08002560   X.......`%......
0x0000ffff26c06710:   0000ffff08001c80 0000000000000001   ................
0x0000ffff26c06720:   0000ffff26c06860 0000ffff940c7454   `h.&....Tt......
0x0000ffff26c06730:   0000ffff26c06e50 0000ffff94938a00   Pn.&............
0x0000ffff26c06740:   0000fffef842d730 0000000000000001   0.B.............
0x0000ffff26c06750:   0000ffff08002560 0000fffef842df20   `%...... .B.....
0x0000ffff26c06760:   0000000000000000 0000ffff08001c80   ................

Instructions: (pc=0x0000ffff93f03994)
  0x0000ffff93f03894:   60 1b 00 54 f9 6b 44 a9 a9 ff ff 17 80 02 40 39
  0x0000ffff93f038a4:   15 00 80 d2 e0 f8 07 36 e0 83 01 91 d4 a2 f8 97
  0x0000ffff93f038b4:   c4 ff ff 17 e0 83 01 91 9d a2 f8 97 a0 02 40 b9
  0x0000ffff93f038c4:   1f 00 00 71 4c f5 ff 54 a0 4d 00 f0 01 98 47 f9
  0x0000ffff93f038d4:   00 c0 3c 91 20 00 3f d6 c0 6a 60 f8 e0 18 00 b4
  0x0000ffff93f038e4:   1f 00 17 eb 40 f4 ff 54 60 4d 00 b0 00 64 41 f9
  0x0000ffff93f038f4:   f9 6b 04 a9 05 0b 80 52 43 19 00 f0 22 1a 00 b0
  0x0000ffff93f03904:   04 00 40 f9 63 20 03 91 40 19 00 f0 42 80 3f 91
  0x0000ffff93f03914:   00 20 11 91 c1 04 80 52 85 00 00 39 90 22 d2 97
  0x0000ffff93f03924:   e0 43 01 91 b6 a2 f8 97 f5 5b 42 a9 e0 03 13 aa
  0x0000ffff93f03934:   f3 53 41 a9 f7 63 43 a9 fd 7b c7 a8 c0 03 5f d6
  0x0000ffff93f03944:   e0 03 18 aa ae a2 f8 97 f9 6b 44 a9 80 02 40 39
  0x0000ffff93f03954:   00 ee 07 36 e0 63 01 91 a9 a2 f8 97 6d ff ff 17
  0x0000ffff93f03964:   e0 03 18 aa 72 a2 f8 97 62 ff ff 17 c0 17 00 b4
  0x0000ffff93f03974:   f9 6b 04 a9 49 ff ff 17 80 02 40 39 00 11 00 37
  0x0000ffff93f03984:   60 4d 00 b0 00 64 41 f9 01 0b 80 52 00 00 40 f9
=>0x0000ffff93f03994:   01 00 00 39 61 02 40 f9 e0 02 40 f9 a1 0f 00 b4
  0x0000ffff93f039a4:   80 0f 00 b4 20 00 3f d6 e0 02 40 f9 61 02 40 f9
  0x0000ffff93f039b4:   1f 00 00 f1 f4 07 9f 1a 3f 00 00 f1 84 1a 40 7a
  0x0000ffff93f039c4:   80 00 00 54 20 00 3f d6 34 00 80 52 e0 02 40 f9
  0x0000ffff93f039d4:   c0 0d 00 b4 61 02 40 f9 41 00 00 b4 20 00 3f d6
  0x0000ffff93f039e4:   e0 02 40 f9 7a 31 d1 97 00 0d 20 36 60 4d 00 b0
  0x0000ffff93f039f4:   00 b0 41 f9 06 00 40 39 86 0c 00 36 63 28 00 f0
  0x0000ffff93f03a04:   62 28 00 f0 60 28 00 f0 e5 03 14 2a e4 03 16 aa
  0x0000ffff93f03a14:   63 80 34 91 42 60 35 91 00 20 36 91 21 11 80 52
  0x0000ffff93f03a24:   4f 22 d2 97 40 00 3f d6 f8 a3 01 91 80 02 40 39
  0x0000ffff93f03a34:   00 f1 07 36 07 00 00 14 81 02 40 39 e0 33 00 f9
  0x0000ffff93f03a44:   01 09 00 36 e0 83 01 91 39 a2 f8 97 c0 fe ff 17
  0x0000ffff93f03a54:   e0 03 18 aa 36 a2 f8 97 7e ff ff 17 e0 43 01 91
  0x0000ffff93f03a64:   33 a2 f8 97 75 4d 00 b0 b5 62 41 f9 80 02 40 39
  0x0000ffff93f03a74:   b8 ff ff 17 80 4d 00 90 00 54 44 f9 ff 37 00 f9
  0x0000ffff93f03a84:   18 00 40 b9 c1 fe ff 17 e0 03 18 aa 5c a2 f8 97


Stack slot to memory mapping:

stack at sp + 0 slots: 0x0000ffff26c065e0 is pointing into the stack for thread: 0x0000ffff08001c80
stack at sp + 1 slots: 0x0000ffff93f06260: <offset 0x000000000151b260> in /opt/mach5/mesos/work_dir/jib-master/install/2025-01-08-2039478.leonid.mesnik.jdk-jfr-comp/linux-aarch64-debug.jdk/jdk-25/fastdebug/lib/server/libjvm.so at 0x0000ffff929eb000
stack at sp + 2 slots: 0x0000ffff26c06630 is pointing into the stack for thread: 0x0000ffff08001c80
stack at sp + 3 slots: 0x0000fffef80d00d0 into live malloced block starting at 0x0000fffef80d0070, size 32744, tag mtChunk
stack at sp + 4 slots: 0x0000ffff949446d6: <offset 0x0000000001f596d6> in /opt/mach5/mesos/work_dir/jib-master/install/2025-01-08-2039478.leonid.mesnik.jdk-jfr-comp/linux-aarch64-debug.jdk/jdk-25/fastdebug/lib/server/libjvm.so at 0x0000ffff929eb000
stack at sp + 5 slots: 0x0000ffff26c07c98 is pointing into the stack for thread: 0x0000ffff08001c80
stack at sp + 6 slots: 0x0000fffef80d08d0 into live malloced block starting at 0x0000fffef80d0070, size 32744, tag mtChunk
stack at sp + 7 slots: 0x0000ffff26c066a8 is pointing into the stack for thread: 0x0000ffff08001c80

Lock stack of current Java thread (top to bottom):


Comments
Tentatively deferring to JDK 26 for now because it's an old issue. Feel free to fix in JDK 25 if there's time left.
06-05-2025

Reproduces since Virtual Threads were added with JDK-8284161 in JDK 19 and seems to be a problem with the _getEventWriter intrinsic. ILW = Crash during deoptimization, intermittent with single test and stress options, -XX:DisableIntrinsic=_getEventWriter = HLM = P3
13-01-2025

The combination is not executed in CI until https://bugs.openjdk.org/browse/JDK-8318098 is fixed. The combination: -ea -esa -XX:CompileThreshold=100 -XX:+UnlockExperimentalVMOptions -server -XX:-TieredCompilation -XX:+DeoptimizeALot
10-01-2025