> The debuggee main method creates two threads and then starts them: > > > public static void main(String[] args) { > System.out.println("Howdy!"); > Thread t1 = TestScaffold.newThread(new InvokeHangTarg(), name1); > Thread t2 = TestScaffold.newThread(new InvokeHangTarg(), name2); > > t1.start(); > t2.start(); > } > > > These threads will hit breakpoints which the debugger handles and issues an > invoke on the breakpoint thread. The threads run until they generate 100 > breakpoints. There is an issue when these two threads are virtual threads. > Virtual threads are daemon threads. That means the JVM can exit while they > are still running. The above main() method is not waiting for these two > threads to exit, so main() exits immediately and the JVM starts the shutdown > process. It first must wait for all non-daemon threads to exit, but there are > none, so the JVM exits right away before the two threads are completed. The > end result of this early exit is that sometimes the invoke done by the > debugger never completes because the JVM has already issued a VMDeath event > and the debuggee has been disconnected. > > When these two threads are platform threads, the JVM has to wait until they > complete before it exits, so they will always complete. The fix for virtual > threads is to do a join with t1 and t2. This forces the main() method to > block until they have completed.
Chris Plummer has updated the pull request incrementally with three additional commits since the last revision: - fix spelling error - add comment - minor formatting fix ------------- Changes: - all: https://git.openjdk.org/jdk/pull/13068/files - new: https://git.openjdk.org/jdk/pull/13068/files/4d28b92e..58ca27b8 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=13068&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=13068&range=00-01 Stats: 8 lines in 1 file changed: 6 ins; 0 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/13068.diff Fetch: git fetch https://git.openjdk.org/jdk pull/13068/head:pull/13068 PR: https://git.openjdk.org/jdk/pull/13068