Techniques for debugging threading issues with Virtual Threads
Alex Otenko
oleksandr.otenko at gmail.com
Wed Nov 20 07:12:59 UTC 2024
By the way, deadlocks specifically should be discoverable automatically
without a thread dump.
On Wed, 20 Nov 2024, 07:10 Dr Heinz M. Kabutz, <heinz at javaspecialists.eu>
wrote:
> With platform threads, we have had good techniques for finding threading
> issues. For example, a thread dump would reveal deadlocks, livelocks and
> contention.
>
> However, with virtual threads, most of these techniques won't work
> anymore. For example, here is a SimpleDeadlock:
>
> import java.util.concurrent.locks.*;
>
> public class SimpleDeadlock {
> public static void main(String... args) throws InterruptedException {
> var monitor1 = new Object();
> var monitor2 = new Object();
> Thread.startVirtualThread(() -> {
> synchronized (monitor1) {
> LockSupport.parkNanos(10_000_000);
> synchronized (monitor2) {
> System.out.println("Got both locks");
> }
> }
> });
> Thread.startVirtualThread(() -> {
> synchronized (monitor2) {
> LockSupport.parkNanos(10_000_000);
> synchronized (monitor1) {
> System.out.println("Got both locks");
> }
> }
> }).join();
> }
> }
>
> If we run this with Java 21-23 and -Djdk.trackAllThreads=false, the
> carrier thread indicate that they are carrying some virtual threads, but
> these do not appear in the full dump. In Java 24+24, the virtual threads
> are parked instead of pinned, and thus they vanish completely from the
> thread dumps.
>
> Is there any project or workgroup where debugging of virtual threads is
> being looked at?
>
> Regards
>
> Heinz
> --
> Dr Heinz M. Kabutz (PhD CompSci)
> Author of "The Java™ Specialists' Newsletter" - www.javaspecialists.eu
> Java Champion - www.javachampions.org
> JavaOne Rock Star Speaker
> Tel: +30 69 75 595 262
> Skype: kabutz
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/loom-dev/attachments/20241120/83783f04/attachment.htm>
More information about the loom-dev
mailing list