RFR: 8290732: JNI DestroyJavaVM can start shutdown when one non-daemon thread remains
David Holmes
dholmes at openjdk.org
Tue Aug 9 06:17:58 UTC 2022
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.
-------------
Commit messages:
- Remove commented out test code
- 8290732: JNI DestroyJavaVM can start shutdown when one non-daemon thread remains
Changes: https://git.openjdk.org/jdk/pull/9803/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=9803&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8290732
Stats: 249 lines in 5 files changed: 243 ins; 0 del; 6 mod
Patch: https://git.openjdk.org/jdk/pull/9803.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/9803/head:pull/9803
PR: https://git.openjdk.org/jdk/pull/9803
More information about the build-dev
mailing list