RFR(s): 8204243: remove Thread.destroy() and Thread.stop(Throwable)
David Holmes
david.holmes at oracle.com
Sat Jun 2 05:36:42 UTC 2018
On 2/06/2018 10:43 AM, Stuart Marks wrote:
> On 6/1/18 4:40 PM, David Holmes wrote:
>> Hi Stuart!
>>
>> Nooooooo!
>>
>> Just kidding!
>>
>> Yaaaaaay!!!!
>
> :-)
>
>> Actual removal looks fine but what about the corresponding JDI code:
>>
>> ./jdk.jdi/share/classes/com/sun/jdi/ThreadReference.java
>>
>> it still has a stop(Throwable) function (it doesn't have the no-arg
>> one!). What happens to it? The JDI functions were never deprecated in
>> line with the Thread functions (suspend/resume/stop).
>>
>> The ThreadReference javadoc has:
>>
>> * @see java.lang.Thread#stop(Throwable)
>>
>> so will need fixing.
>
> Good catch! I had grepped around the source tree for stuff like this but
> I had missed this one.
>
> It looks to me like this interface resides on the debugger side of JDWP.
> I don't know exactly where it's implemented in the target VM, but I
> imagine it goes through some VM-internal or JDWP implementation
> interface, not through the target VM's public java.lang.Thread.stop(thr)
> interface. Is that right? (I'm not that familiar with this area of the
> system.)
It's a rather complex setup but the backend that does the work is
(usually?) JVM TI, which won't go back out through the Java API.
>
> I'm presuming that it doesn't go through j.l.Thread.stop(Throwable)
> since that method has essentially been non-functional since JDK 8.
>
> I see a couple tests for this in
>
> test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/stop
>
> and I can see some evidence in our internal build/test systems that
> they're still being run, so it looks like these interfaces are still
> active. As you observe, they haven't been deprecated. There might even
> be valid uses cases for stopping a thread this way in a debugging
> situation that aren't valid for applications.
I'm yet to find one :) I pointed out this inconsistency many many years
ago but it remains.
> I guess that means the thing to do is to update the documentation to
> remove the reference to the soon-to-be-deleted Thread.stop(Throwable)
> but otherwise leave this stuff unchanged.
Yep that's what I thought too.
Thanks,
David
> s'marks
More information about the core-libs-dev
mailing list