Hi Benjamin,
This kind of deadlock, where a platform thread is blocked waiting to
acquire a monitor and the successor is an unmounted virtual thread that
cannot run, should be fixed by JDK-8369019.
On 12/15/25 10:47 AM, Benjamin Peterson wrote:
On Mon, Dec 15, 2025, at 02:40, Alan Bateman wrote:
On 15/12/2025 05:41, Benjamin Peterson wrote:
Greetings,
I saw class initialization will be preemptible in many cases in JDK 26, which
is exciting. I believe my application is hitting a deadlock due to virtual
threads pinned in class loading on OpenJDK 25.0.1.
I captured a stack dump of the deadlocked application, and I can share the
interesting parts of the dump. For background, there are 32 cores, so the
virtual thread scheduler pool has 32 carrier threads.
The startup when using MR JARs is indeed complicated.
It looks to me like there's a potential problem anytime class loading can share
an exclusive resource with a non-classloading path. (In this stack dump, the
CleanerImpl list.)
Yes, class loading has a similar issue to class initialization since
native frames in the stack prevent threads to be unmounted.
Patricio