The test fails when the main debuggee thread is a virtual thread, because virtual threads are always daemon threads. Because of this all the test threads that the debuggee creates are also daemon threads. The main deuggee thread immediately exits after creating the test threads, and at that point there are no non-daemon threads left running to keep the debuggee process alive, so the test threads never get a chance to do all the work that is expected of them.
The fix is to use Thread.join() to prevent the main test thread from exiting until all the created tests threads have exited. I also updated the test so when run using the virtual test thread factory, the debuggee test threads will now be virtual threads. Previously just the main debuggee thread would be a virtual thread. This is not a bug fix, but does provide better virtual thread testing. ------------- Commit messages: - Fix virtual thread issues by using join(). Also make test threads be virtual theads when the main debuggee thread is a virtual thread. Changes: https://git.openjdk.org/jdk/pull/14323/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=14323&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8309506 Stats: 16 lines in 2 files changed: 10 ins; 2 del; 4 mod Patch: https://git.openjdk.org/jdk/pull/14323.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/14323/head:pull/14323 PR: https://git.openjdk.org/jdk/pull/14323