RFR: 8289610: Degrade Thread.stop [v2]
Alan Bateman
alanb at openjdk.org
Wed Sep 14 14:09:52 UTC 2022
> Degrade Thread.stop to throw UOE unconditionally, deprecate ThreadDeath for removal, and remove the remaining special handling of ThreadDeath from the JDK.
>
> Thread.stop is inherently unsafe and has been deprecated since JDK 1.2 (1998) with a link to a supplementary page that explains the rationale. Some of the API surface has already been degraded or removed: Thread.stop(Throwable) was degraded to throw UOE in Java 8 and removed in Java 11, and ThreadGroup.stop was degraded to throw UOE in Java 19. As of Java 19, the no-arg Thread.stop continues to work as before for platform threads but throws UOE for virtual threads. The next step in the glacial pace removal is the degrading of the no-arg Thread.stop method to throw UOE for all threads.
>
> To keep things manageable, the change proposed here leaves JVM_StopThread in place. A separate issue will remove it and do other cleanup/removal in the VM. We have another JBS issue for the updates to the JLS and JVMS where asynchronous exceptions are defined. There is also some remaining work on a test class used by 6 jshell tests - if they aren't done in time then we will temporarily exclude them.
>
> The change here has no impact on the debugger APIs (JVM TI StopThread, JDWP ThreadReference/Stop, and JDI ThreadReference.stop). Debuggers can continue to cause threads to throw an asynchronous exception, as might be done when simulating code throwing an exception at some point in the code.
Alan Bateman has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains six additional commits since the last revision:
- Merge
- Remove stopThread permission from RuntimePermission table, exclude jshell tests
- Deprecate for removal
- Next iteration, update dates in headers
- Merge
- Initial commit
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/10230/files
- new: https://git.openjdk.org/jdk/pull/10230/files/380e4043..86424b65
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=10230&range=01
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=10230&range=00-01
Stats: 2990 lines in 108 files changed: 2115 ins; 353 del; 522 mod
Patch: https://git.openjdk.org/jdk/pull/10230.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/10230/head:pull/10230
PR: https://git.openjdk.org/jdk/pull/10230
More information about the serviceability-dev
mailing list