RFC: 8229160: Reimplement JvmtiRawMonitor to use PlatformMonitor
Doerr, Martin
martin.doerr at sap.com
Thu Aug 29 11:06:46 UTC 2019
Hi David,
shouldn't _recursions get set to 0 before unlocking in raw_wait?
Best regards,
Martin
> -----Original Message-----
> From: David Holmes <david.holmes at oracle.com>
> Sent: Donnerstag, 29. August 2019 01:20
> To: Doerr, Martin <martin.doerr at sap.com>; serguei.spitsyn at oracle.com;
> serviceability-dev <serviceability-dev at openjdk.java.net>;
> jcbeyler at google.com; yasuenag at gmail.com; sgehwolf at redhat.com
> Subject: Re: RFC: 8229160: Reimplement JvmtiRawMonitor to use
> PlatformMonitor
>
> On 28/08/2019 10:57 pm, Doerr, Martin wrote:
> > Hi David,
> >
> >> Now why would a GCTaskThread being executing code that accesses
> >> JvmtiRawMonitors? Are we in some kind of event callback?
> > I believe so. The test registers the following callbacks:
> > callbacks.GarbageCollectionStart = &GarbageCollectionStart;
> > callbacks.GarbageCollectionFinish = &GarbageCollectionFinish;
> > And these callback functions use jvmti->RawMonitorEnter.
> >
> > Note that the spec for "Raw Monitor Enter" allows this:
> > "This function may be called from the callbacks to the Heap iteration
> functions, or from the event handlers for the GarbageCollectionStart,
> GarbageCollectionFinish, and ObjectFree events."
>
> Yep it is allowed.
>
> >> Is there any more stack? What is that dll?
> > The dll belongs to the test. I guess it was built without debug info so there's
> no native stack trace available.
> >
> >> Can you tell me what test this was and how to reproduce?
> > make run-test
> TEST="vmTestbase/nsk/jvmti/scenarios/allocation/AP04/ap04t001"
> > I haven't tried if it can be reproduced well. May be sporadic.
>
> Doesn't seem to reproduce on Linux.
>
> > At least, I can confirm that the following comment is true
> > // FIXME: this is broken - raw_enter only accepts the VMThread
>
> As I noted I had yet to reconcile the fact the outer raw monitor code
> seems to allow non-JavaThreads while the inner code only allows the
> VMThread! I'm quite surprised we have not encountered this bug before
> now - unless there is some really subtle code difference I'm missing here.
>
> Anyway this is an aside to the question of interrupt semantics that
> needs to be addressed before this can proceed. :)
>
> Thanks,
> David
>
> > Best regards,
> > Martin
> >
More information about the serviceability-dev
mailing list