RFR: 8332923: ObjectMonitorUsage.java failed with unexpected waiter_count
Jiawei Tang
jwtang at openjdk.org
Mon May 27 09:51:06 UTC 2024
On Sun, 26 May 2024 17:02:33 GMT, SendaoYan <syan at openjdk.org> wrote:
> > > That would mean it's not tested. I suspect the java_lang_VirtualThread::is_instance checks will need to be changed to test with is_a(vmClasses::BaseVirtualThread_klass()) to allow for the alternative implementation.
> >
> >
> > Do you mean change like this:
>
> No, I meant in JvmtiEnvBase::get_object_monitor_usage that you'll need to go through all places where it tests if the thread is a virtual thread, they will need to be changed to support the alternative implementation.
Hi, using `is_a(vmClasses::BaseVirtualThread_klass()) ` only fix half failed results of this testcase. The `JvmtiEnvBase::get_object_monitor_usage` does not take the vthread into consideration when calculating nWant(mon->contentions()). I wonder if it needs to add some code like:
```c++
nWant = wantList->length();
for(int i = 0; i < nWant; i++) {
JavaThread* w = wantList->at(i);
oop thread_oop = get_vthread_or_thread_oop(w);
if (thread_oop->is_a(vmClasses::BaseVirtualThread_klass())) {
nWant_Skip++;
}
}
// ...
ret.waiter_count = nWant - nWant_Skip;
-------------
PR Comment: https://git.openjdk.org/jdk/pull/19405#issuecomment-2133099822
More information about the serviceability-dev
mailing list