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