RFR: 8290732: JNI DestroyJavaVM can start shutdown when one non-daemon thread remains [v3]

Thomas Stuefe stuefe at openjdk.org
Thu Aug 11 10:06:35 UTC 2022


On Thu, 11 Aug 2022 02:31:21 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.
>
> David Holmes has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Fixed `if` block indentation per Magnus's request

Looks good.

-------------

Marked as reviewed by stuefe (Reviewer).

PR: https://git.openjdk.org/jdk/pull/9803



More information about the build-dev mailing list