RFR (XS) 6976636: JVM/TI test ex03t001 fails assertion
Daniel D. Daugherty
daniel.daugherty at oracle.com
Fri Mar 14 21:45:11 UTC 2014
On 3/14/14 3:29 PM, serguei.spitsyn at oracle.com wrote:
> 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.
There are several disagreements about what is in a JVM/TI
event versus what is in a JDI event. It can really mess up
your mind...
Dan
>
>>
>> > 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