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