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