RFR: 8295857: Clarify that cleanup code can be skipped when the JVM terminates (e.g. when calling halt())
Brian Burkhalter
bpb at openjdk.org
Thu Nov 17 19:43:21 UTC 2022
On Thu, 17 Nov 2022 19:25:42 GMT, Brent Christian <bchristi at openjdk.org> wrote:
> [JDK-8290036](https://bugs.openjdk.org/browse/JDK-8290036) documented the shutdown sequence, noting that calling Runtime.halt() skips the shutdown sequence and immediately terminates the VM. Thus, "threads' current methods do not complete normally or abruptly; no finally clause of any method is executed".
>
> One ramification of this is that resources within try-with-resource blocks will not be released. It would be good to state this explicitly.
src/java.base/share/classes/java/lang/Runtime.java line 95:
> 93: * threads' current methods do not complete normally or abruptly.
> 94: * {@linkplain Thread.UncaughtExceptionHandler Uncaught exception handlers} are not run,
> 95: * no {@code finally} clause of any method is executed, and try-with-resource
`try-with-resource` or `try-with-resources`?
src/java.base/share/classes/java/lang/Runtime.java line 283:
> 281: * any cleanup actions intended to be performed by shutdown hooks,
> 282: * {@linkplain Thread.UncaughtExceptionHandler uncaught exception handlers},
> 283: * finally blocks, or try-with-resource blocks. This can lead to data corruption.
Same comment as above.
-------------
PR: https://git.openjdk.org/jdk/pull/11218
More information about the core-libs-dev
mailing list