Integrated: 8290732: JNI DestroyJavaVM can start shutdown when one non-daemon thread remains
David Holmes
dholmes at openjdk.org
Fri Aug 12 06:44:00 UTC 2022
On Tue, 9 Aug 2022 06:10:40 GMT, David Holmes <dholmes at openjdk.org> wrote:
> Please review this fix for a problem discovered by @stuart-marks in the course of examining the VM shutdown behaviour. The VM code assumed that only unattached threads called JNI's DestroyJavaVM and so they were always attached as non-daemon threads. But it is perfectly valid to call DestroyJavaVM from an already attached thread, which could be a daemon. The fix simply checks whether the caller is a daemon or not and adjusts the expected count of active threads to see. There is also an adjustment to the thread termination logic to also notify at the right time.
>
> Thanks to @stuart-marks for the reproducer in JBS - the longest part of this by many hours was converting the test over the jtreg. :)
>
> Testing:
> - the new test on all core platforms
> - tiers 1-3
> Thanks.
This pull request has now been integrated.
Changeset: 6eb7c3ad
Author: David Holmes <dholmes at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/6eb7c3ad0ee6fc187172e68cc838797981203b39
Stats: 906 lines in 5 files changed: 250 ins; 0 del; 656 mod
8290732: JNI DestroyJavaVM can start shutdown when one non-daemon thread remains
Reviewed-by: stuefe, rehn
-------------
PR: https://git.openjdk.org/jdk/pull/9803
More information about the build-dev
mailing list