-
Bug
-
Resolution: Unresolved
-
P3
-
repo-valhalla
While working on JDK-8336845, I encountered several crashes when running test TestVirtualThreads.java developed by Tobias (attached). I updated the test to use Thread.ofPlatform instead of Thread.ofVirtual, and observed the same type of crashes, which suggests these are not Loom related.
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007fb0f6d04f16, pid=4101715, tid=4101744
#
# JRE version: Java(TM) SE Runtime Environment (25.0) (build 25-lworld5ea-LTS-2025-08-02-1436390.patricio.chilano.mateo.valhalla)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25-lworld5ea-LTS-2025-08-02-1436390.patricio.chilano.mateo.valhalla, compiled mode, sharing, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0x8ebf16] void G1FullGCMarker::mark_and_push<oopDesc*>(oopDesc**) [clone .constprop.0] [clone .isra.0]+0x66
Current thread (0x00007fb0cc0068c0): WorkerThread "GC Thread#6" [id=4101744, stack(0x00007fb0d4905000,0x00007fb0d4a05000) (1024K)]
Stack: [0x00007fb0d4905000,0x00007fb0d4a05000], sp=0x00007fb0d4a025b0, free space=1013k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x8ebf16] void G1FullGCMarker::mark_and_push<oopDesc*>(oopDesc**) [clone .constprop.0] [clone .isra.0]+0x66 (atomic.hpp:553)
V [libjvm.so+0xe8fa08] void OopMapDo<OopClosure, DerivedOopClosure, SkipNullValue>::iterate_oops_do<RegisterMap>(frame const*, RegisterMap const*, ImmutableOopMap const*)+0x398 (oopMap.inline.hpp:134)
V [libjvm.so+0xe8f489] ImmutableOopMap::oops_do(frame const*, RegisterMap const*, OopClosure*, DerivedPointerIterationMode) const+0x59 (oopMap.inline.hpp:156)
V [libjvm.so+0x88f82a] frame::oops_do_internal(OopClosure*, NMethodClosure*, DerivedOopClosure*, DerivedPointerIterationMode, RegisterMap const*, bool) const+0x21a (frame.cpp:1027)
V [libjvm.so+0xa60642] JavaThread::oops_do_frames(OopClosure*, NMethodClosure*) [clone .part.0]+0xc2 (frame.hpp:484)
V [libjvm.so+0x10c8e23] Thread::oops_do(OopClosure*, NMethodClosure*)+0x93 (thread.cpp:449)
V [libjvm.so+0x10d5521] Threads::possibly_parallel_oops_do(bool, OopClosure*, NMethodClosure*)+0x81 (threads.cpp:1216)
V [libjvm.so+0x955500] G1RootProcessor::process_strong_roots(OopClosure*, CLDClosure*, NMethodClosure*)+0x60 (g1RootProcessor.cpp:179)
V [libjvm.so+0x8fc92e] G1FullGCMarkTask::work(unsigned int)+0xbe (g1FullGCMarkTask.cpp:47)
V [libjvm.so+0x119d880] WorkerThread::run()+0x80 (workerThread.cpp:69)
V [libjvm.so+0x10c932f] Thread::call_run()+0x9f (thread.cpp:231)
V [libjvm.so+0xea5d06] thread_native_entry(Thread*)+0xd6 (os_linux.cpp:870)
JavaThread 0x00007fb054036410 (nid = 4101748) was being processed
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
v ~SafepointBlob 0x00007fb0e480d949
J 53 c2 TestVirtualThreads.testLargeValueWithOops2Helper(Ljava/lang/Object;ZZ)LTestVirtualThreads$LargeValueWithOops; (118 bytes) @ 0x00007fb0e48ebf50 [0x00007fb0e48ebc20+0x0000000000000330]
j TestVirtualThreads.lambda$main$0(Ljava/util/concurrent/CountDownLatch;)V+135
j TestVirtualThreads$$Lambda+0x00007fb087046228.run()V+4
j java.lang.Thread.runWith(Ljava/lang/Object;Ljava/lang/Runnable;)V+5 java.base@25-lworld5ea
j java.lang.Thread.run()V+19 java.base@25-lworld5ea
v ~StubRoutines::call_stub 0x00007fb0e47abfa6
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007fb0f6d04f16, pid=4101715, tid=4101744
#
# JRE version: Java(TM) SE Runtime Environment (25.0) (build 25-lworld5ea-LTS-2025-08-02-1436390.patricio.chilano.mateo.valhalla)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25-lworld5ea-LTS-2025-08-02-1436390.patricio.chilano.mateo.valhalla, compiled mode, sharing, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0x8ebf16] void G1FullGCMarker::mark_and_push<oopDesc*>(oopDesc**) [clone .constprop.0] [clone .isra.0]+0x66
Current thread (0x00007fb0cc0068c0): WorkerThread "GC Thread#6" [id=4101744, stack(0x00007fb0d4905000,0x00007fb0d4a05000) (1024K)]
Stack: [0x00007fb0d4905000,0x00007fb0d4a05000], sp=0x00007fb0d4a025b0, free space=1013k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x8ebf16] void G1FullGCMarker::mark_and_push<oopDesc*>(oopDesc**) [clone .constprop.0] [clone .isra.0]+0x66 (atomic.hpp:553)
V [libjvm.so+0xe8fa08] void OopMapDo<OopClosure, DerivedOopClosure, SkipNullValue>::iterate_oops_do<RegisterMap>(frame const*, RegisterMap const*, ImmutableOopMap const*)+0x398 (oopMap.inline.hpp:134)
V [libjvm.so+0xe8f489] ImmutableOopMap::oops_do(frame const*, RegisterMap const*, OopClosure*, DerivedPointerIterationMode) const+0x59 (oopMap.inline.hpp:156)
V [libjvm.so+0x88f82a] frame::oops_do_internal(OopClosure*, NMethodClosure*, DerivedOopClosure*, DerivedPointerIterationMode, RegisterMap const*, bool) const+0x21a (frame.cpp:1027)
V [libjvm.so+0xa60642] JavaThread::oops_do_frames(OopClosure*, NMethodClosure*) [clone .part.0]+0xc2 (frame.hpp:484)
V [libjvm.so+0x10c8e23] Thread::oops_do(OopClosure*, NMethodClosure*)+0x93 (thread.cpp:449)
V [libjvm.so+0x10d5521] Threads::possibly_parallel_oops_do(bool, OopClosure*, NMethodClosure*)+0x81 (threads.cpp:1216)
V [libjvm.so+0x955500] G1RootProcessor::process_strong_roots(OopClosure*, CLDClosure*, NMethodClosure*)+0x60 (g1RootProcessor.cpp:179)
V [libjvm.so+0x8fc92e] G1FullGCMarkTask::work(unsigned int)+0xbe (g1FullGCMarkTask.cpp:47)
V [libjvm.so+0x119d880] WorkerThread::run()+0x80 (workerThread.cpp:69)
V [libjvm.so+0x10c932f] Thread::call_run()+0x9f (thread.cpp:231)
V [libjvm.so+0xea5d06] thread_native_entry(Thread*)+0xd6 (os_linux.cpp:870)
JavaThread 0x00007fb054036410 (nid = 4101748) was being processed
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
v ~SafepointBlob 0x00007fb0e480d949
J 53 c2 TestVirtualThreads.testLargeValueWithOops2Helper(Ljava/lang/Object;ZZ)LTestVirtualThreads$LargeValueWithOops; (118 bytes) @ 0x00007fb0e48ebf50 [0x00007fb0e48ebc20+0x0000000000000330]
j TestVirtualThreads.lambda$main$0(Ljava/util/concurrent/CountDownLatch;)V+135
j TestVirtualThreads$$Lambda+0x00007fb087046228.run()V+4
j java.lang.Thread.runWith(Ljava/lang/Object;Ljava/lang/Runnable;)V+5 java.base@25-lworld5ea
j java.lang.Thread.run()V+19 java.base@25-lworld5ea
v ~StubRoutines::call_stub 0x00007fb0e47abfa6