RFR 8239893: Windows handle Leak when starting processes using ProcessBuilder

Roger Riggs Roger.Riggs at oracle.com
Fri Mar 6 16:16:17 UTC 2020


Hi Brian,

Updated webrev:
http://cr.openjdk.java.net/~rriggs/webrev-handles-8239893-1/index.html

The threshold is a pretty loose target.
Given the original error that leaked a handle for every process started, 
it just needs to detect a growing number of handles in use.  But for the 
sake of accuracy and avoiding someone copying buggy code, its fixed.

Thanks, Roger


On 3/5/20 4:07 PM, Brian Burkhalter wrote:
> Hi Roger,
>
>> On Mar 5, 2020, at 12:51 PM, Roger Riggs <Roger.Riggs at oracle.com 
>> <mailto:Roger.Riggs at oracle.com>> wrote:
>>
>> Please review a change to the Windows ProcessImpl to ensure that the 
>> handles
>> created for the input and output streams of a process are closed when 
>> no longer referenced.
>>
>> Unlike on Linux, there is no thread monitoring the process that can 
>> close the streams.
>> The FileDescriptors are registered with the Cleaner to be closed when 
>> they are no longer referenced.
>>
>> A test is added that monitors the count of handles as 50 Processes 
>> are launched and exit.
>> The test and change only affect the Windows implementation.
>>
>> Webrev:
>> http://cr.openjdk.java.net/~rriggs/webrev-handles-8239893/
>>
>> Issue:
>> https://bugs.openjdk.java.net/browse/JDK-8239893
>
> In CheckHandles.java at line 72 there is this calculation:
> final long ERROR_THRESHOLD = minHandles + (minHandles / 
> ERROR_PERCENT); // 10% increase over min to passing max
> Do you think it would be better as
>
> final long ERROR_THRESHOLD = minHandles + ((minHandles + ERROR_PERCENT 
> - 1) / ERROR_PERCENT); // 10% increase over min to passing max
>
> , i.e., rounded instead of truncated?
>
> Brian



More information about the core-libs-dev mailing list