In this test the debuggee creates a couple of threads, and the debugger checks 
to make sure it gets a ThreadStartEvent for each of these threads, plus one for 
the main debuggee thread. Once it has done this, it disables the 
ThreadStartRequest and sends a "quit" command to the debuggee. However, another 
ThreadStartEvent can arrive after the expected 3, and this will cause all 
debuggee threads to be suspended (since the ThreadStartRequest uses the 
SUSPEND_ALL). If this happens the debuggee cannot even read "quit" message and 
terminate, so the debugger times out waiting. The solution is to simply to an 
unconditional vm.resume() after disabling ThreadStartRequest.

Note this bug was observed in loom due to the creation of carrier threads, but 
it could potentially happen in jdk also since the jvm creates numerous threads 
on startup, and they can potentially be delayed a bit.

-------------

Commit messages:
 - Fix comment typo.
 - Do a vm.resume() in case a stray ThreadDeathEvent comes in.

Changes: https://git.openjdk.java.net/jdk/pull/8003/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=8003&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8283717
  Stats: 3 lines in 1 file changed: 2 ins; 0 del; 1 mod
  Patch: https://git.openjdk.java.net/jdk/pull/8003.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/8003/head:pull/8003

PR: https://git.openjdk.java.net/jdk/pull/8003

Reply via email to