The implementation of the JVM TI `GetObjectMonitorUsage` does not match the spec. The function returns the following structure:
typedef struct { jthread owner; jint entry_count; jint waiter_count; jthread* waiters; jint notify_waiter_count; jthread* notify_waiters; } jvmtiMonitorUsage; The following four fields are defined this way: waiter_count [jint] The number of threads waiting to own this monitor waiters [jthread*] The waiter_count waiting threads notify_waiter_count [jint] The number of threads waiting to be notified by this monitor notify_waiters [jthread*] The notify_waiter_count threads waiting to be notified The `waiters` has to include all threads waiting to enter the monitor or to re-enter it in `Object.wait()`. The implementation also includes the threads waiting to be notified in `Object.wait()` which is wrong. The `notify_waiters` has to include all threads waiting to be notified in `Object.wait()`. The implementation also includes the threads waiting to re-enter the monitor in `Object.wait()` which is wrong. This update makes it right. The implementation of the JDWP command `ObjectReference.MonitorInfo (5)` is based on the JVM TI `GetObjectMonitorInfo()`. This update has a tweak to keep the existing behavior of this command. The follwoing JVMTI vmTestbase tests are fixed to adopt to the `GetObjectMonitorUsage()` correct behavior: jvmti/GetObjectMonitorUsage/objmonusage001 jvmti/GetObjectMonitorUsage/objmonusage003 The following JVMTI JCK tests have to be fixed to adopt to correct behavior: vm/jvmti/GetObjectMonitorUsage/gomu001/gomu00101/gomu00101.html vm/jvmti/GetObjectMonitorUsage/gomu001/gomu00101/gomu00101a.html vm/jvmti/GetObjectMonitorUsage/gomu001/gomu00102/gomu00102.html vm/jvmti/GetObjectMonitorUsage/gomu001/gomu00102/gomu00102a.html A JCK bug will be filed and the tests have to be added into the JCK problem list located in the closed repository by a separate sub-task before integration of this update. Also, please see and review the related CSR: [8324677](https://bugs.openjdk.org/browse/JDK-8324677) Specification clarification needed for JVM TI GetObjectMonitorUsage Testing: - tested with mach5 tiers 1-6 ------------- Commit messages: - 8324677: Specification clarification needed for JVM TI GetObjectMonitorUsage Changes: https://git.openjdk.org/jdk/pull/17680/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=17680&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8324677 Stats: 25 lines in 5 files changed: 10 ins; 0 del; 15 mod Patch: https://git.openjdk.org/jdk/pull/17680.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/17680/head:pull/17680 PR: https://git.openjdk.org/jdk/pull/17680