RFR (XS) 6976636: JVM/TI test ex03t001 fails assertion
serguei.spitsyn at oracle.com
serguei.spitsyn at oracle.com
Fri Mar 14 21:29:16 UTC 2014
On 3/14/14 1:52 PM, Daniel D. Daugherty wrote:
> On 3/13/14 3:24 PM, serguei.spitsyn at oracle.com wrote:
>> Please, review the fix for:
>> https://bugs.openjdk.java.net/browse/JDK-6976636
>>
>>
>> Open webrev:
>> http://cr.openjdk.java.net/~sspitsyn/webrevs/2014/hotspot/6976636-JVMTI-unload.1
>>
>
> Thumbs up.
Thank you a lot for the code review!
The fix is simple but the issue is ugly and so, generates questions. :)
>
> src/share/vm/prims/jvmtiExport.cpp
> No comments.
>
> As for the extension call back stuff, I think the idea
> is to pass a little more info about which thread motivated
> the class unload. An agent might be interested in such a
> statistic.
Right.
It is why I prefer to keep this callback parameter.
BTW, the jdwp agent is posting synthetic class unload events.
If I remember correctly, they have no jthread parameter.
>
> > The class unload event is implemented as a source debug extension
>
> Not "source debug extension", but "JVM/TI extension event". The
> source debug extension is a different thing (see JDI).
Right.
My head is broken, I keep using incorrect terms. :)
>
> > As a consequence of this fix the failing nsk.jvmti test ex03t001
> > must be tweeked as well.
>
> Since you are changing an assert here, I'm curious why the test
> needs to change. Does the test presume the jthread refers to
> a real JavaThread?
The test checks and fails if the NULL is returned.
I'll file a bug with a necessary DKFL comment to recognize this
failure mode until the SQE testbase build with the fix gets released.
Thanks,
Serguei
>
>
> Dan
>
>
>
>>
>> Summary:
>>
>> This is a Nightly Stabilization issue.
>> The class unload event post in the JvmtiExport.cpp fails at the assert
>> assuming the proxy thread causing the class unload must be a
>> JavaThread.
>> It is not the case when the proxy thread is a CMS ConcurrentGCThread.
>>
>> This fix is to relax this check allowing this case.
>> The downside of this approach is that the jthread parameter passed
>> to the
>> even handler callback is NULL for the CMS thread.
>> This must be Ok as it would indicates that the proxy thread is a
>> CMS thread.
>>
>> In fact, I have a doubt this parameter is needed at all.
>> So that an alternative approach could be to remove it from the
>> event callback.
>> My preference is to leave the jthread parameter as it is as it does
>> not impact anything.
>> The class unload event is implemented as a source debug extension
>> for the
>> sake of testing the extension functionality. The JDWP agent does
>> not use it.
>> The class unload events are not expected to be used by any external
>> tool.
>>
>> As a consequence of this fix the failing nsk.jvmti test ex03t001
>> must be tweeked as well.
>> If review is positive then I'll file a bug and proceed with the
>> test fix.
>>
>> Testing:
>> Running the failing test: nsk/jvmti/scenarios/extension/EX03/ex03t001
>>
>>
>> Thanks,
>> Serguei
>
More information about the serviceability-dev
mailing list