This PR adds ranked monitor support to the debug agent. The debug agent has a 
large number of monitors, and it's really hard to know which order to grab them 
in, and for that matter which monitors might already be held at any given 
moment. By imposing a rank on each monitor, we can check to make sure they are 
always grabbed in the order of their rank. Having this in place when I was 
working on [JDK-8324868](https://bugs.openjdk.org/browse/JDK-8324868) would 
have made it much easier to detect a deadlock that was occuring, and the reason 
for it. That's what motivated me to do this work

There were 2 or 3 minor rank issues discovered as a result of these changes. I 
also learned a lot about some of the more ugly details of the locking support 
in the process.

Tested with the following on all supported platforms and with virtual threads:

com/sun/jdi
vmTestbase/nsk/jdi
vmTestbase/nsk/jdb
vmTestbase/nsk/jdwp 

Still need to run tier2 and tier5.

Details of the changes follow in the first comment.

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

Commit messages:
 - Fix jchecks errors
 - Add ranked monitor support to the debug agent.

Changes: https://git.openjdk.org/jdk/pull/19044/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=19044&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8328866
  Stats: 591 lines in 11 files changed: 515 ins; 5 del; 71 mod
  Patch: https://git.openjdk.org/jdk/pull/19044.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/19044/head:pull/19044

PR: https://git.openjdk.org/jdk/pull/19044

Reply via email to