RFR: 8267564: JDK-8252971 causes SPECjbb2015 socket exceptions on Windows when MKS is installed [v2]

Alan Bateman alanb at openjdk.java.net
Fri Jun 4 17:02:57 UTC 2021


On Fri, 4 Jun 2021 11:26:15 GMT, Michael McMahon <michaelm at openjdk.org> wrote:

>> Hi,
>> 
>> This fixes a problem where unix domain sockets are available on Windows from third party winsock drivers (other than the Microsoft implementation in Windows 10/2019). These are available (unexpectedly) on earlier Windows releases and are not supported by Java. 
>> 
>> The fix is to search for the expected winsock service provider ID and specifically use that one when creating sockets. Previously, we just attempted to create a unix domain socket, and once that succeeded we assumed we had the right service provider.
>> 
>> I haven't included a regression test because the environment to reproduce the issue is not part of the standard test configuration. Also, the new code is well exercised by existing tests.
>> 
>> Thanks,
>> Michael.
>
> Michael McMahon has updated the pull request incrementally with one additional commit since the last revision:
> 
>   update after Alan's comments

The latest version looks much better. One niggle is that the method to test if Unix domain sockets is supported has a side effect of setting provider. What you would think about renaming to "init" or something better. It can continue to return a boolean to indicate if supported or not.

I should have been clearer in my comment about cmpGuid. I meant that memcmp returns -1, 0 or 1 and it would have been clearer if have it return JNI_FALSE if it returned something != 0 (it was the !memcpy that was awkward). What you have now is okay.

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

PR: https://git.openjdk.java.net/jdk/pull/4339


More information about the nio-dev mailing list