On Tue, 1 Apr 2025 18:35:36 GMT, Alex Menkov <amen...@openjdk.org> wrote:

>> See bug report for gory details.
>> 
>> Short version: in the Windows version of `VirtualMachineImpl::execute`, if 
>> an exception occurred after we created the `SocketInputStreamImpl` (which is 
>> the test scenario of the failing test), we would close the native `HANDLE` 
>> to the pipe twice. But after the first close the `HANDLE` could be 
>> reassigned to another object (e.g. the `_ParkHandle` of the `StreamPumper` 
>> thread) and the second close would close that `HANDLE`  resulting in the 
>> failure of `WaitForSingleObject`. (Other failure modes with different 
>> invalid handles have also been seen.)
>> 
>> Fix: shorten the outer try/catch block so that we only directly close the 
>> pipe if the `IOException` happens before we create the `SocketStreamImpl` - 
>> after which the closing of the stream will close the pipe `HANDLE`.
>> 
>> Testing:
>>  - ran the com/sun/tools/attach tets group 2500 times without failure
>>  - tiers 3-5 as a sanity check (Windows only)
>> 
>> Thanks
>
> Marked as reviewed by amenkov (Reviewer).

Thanks for the review @alexmenkov !

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

PR Comment: https://git.openjdk.org/jdk/pull/24346#issuecomment-2771215407

Reply via email to