RFR(XS): 8234882: JVM TI StopThread should only allow ThreadDeath

serguei.spitsyn at oracle.com serguei.spitsyn at oracle.com
Wed May 27 08:36:45 UTC 2020


Hi David,


On 5/27/20 00:47, David Holmes wrote:
> Hi Serguei,
>
> On 27/05/2020 1:01 pm, serguei.spitsyn at oracle.com wrote:
>> Please, review a fix for:
>>    https://bugs.openjdk.java.net/browse/JDK-8234882
>>
>> CSR draft (one CSR reviewer is needed before finalizing it):
>>    https://bugs.openjdk.java.net/browse/JDK-8245853
>
> I have some thoughts on the wording which I will add to the CSR.

Thank you a lot for looking at this!

> Also on reflection I think JVMTI_ERROR_ILLEGAL_ARGUMENT would the best 
> error to use, and it has an equivalent in JDWP and at the Java level 
> for JDI.

This is an interesting variant, thanks!
We need to balance on several criteria:
  1) Compatibility: keep returning error as close as possible to the 
current spec
  2) Best error naming match between JVM TI and JDI/JDWP
  3) Best practice in errors naming

I think the #1 is most important but will look at it once more.

Thanks,
Serguei

> Thanks,
> David
>
>> Webrev:
>> http://cr.openjdk.java.net/~sspitsyn/webrevs/2020/jvmti-stop-thread.1/src/ 
>>
>>
>> Updated JVM TI StopThread spec:
>> http://cr.openjdk.java.net/~sspitsyn/webrevs/2020/jvmti-stop-thread.1/docs/specs/jvmti.html#StopThread 
>>
>>
>> Summary:
>>
>>    The JVM TI StopThread method mirrored the functionality of the
>>    java.lang.Thread::stop(Throwable t) method, in that it allows any 
>> exception
>>    type to be installed as an asynchronous exception in the target 
>> thread.
>>    However, the java.lang.Thread::stop(Throwable t) method was 
>> inherently unsafe
>>    and in Java 8 (under JDK-7059085) it was "retired" so that it 
>> always threw
>>    UnsupportedOperationException.
>>    The updated JVM TI StopThread spec disallows an arbitrary 
>> Throwable from being passed,
>>    and instead restricts the argument to being an instance of 
>> ThreadDeath, thus
>>    mirroring the (deprecated but still functional) 
>> java.lang.Thread::stop() method.
>>    The error JVMTI_ERROR_INVALID_OBJECT is returned if the exception 
>> argument
>>    is not an instance of ThreadDeath.
>>
>>    Also, I will file similar RFE and CSR on the JDI and JDWP spec.
>>
>>
>> Testing:
>>    Built docs and checked the doc has been generated as expected.
>>    Will run the nsk.jvmti tests locally.
>>    Will submit hs-tiers1-3 to make sure there are no regressions in 
>> the JVM TI and JDI tests.
>>
>> Thanks,
>> Serguei



More information about the serviceability-dev mailing list